1

必要に応じて手動で電源を入れる ELB の背後に Web インスタンス (nginx) があります。wget をローカルで実行すると、Web アプリはすぐに起動し、成功した 200 応答を返します。

ただし、ELB がヘルスチェック リクエストをインスタンスに送信していないため、ウェブサイトは読み込まれません。これは、nginx のアクセス ログを表示することで確認できます。

私が使用している回避策は、ELB から Web インスタンスを削除して、再度追加することです。これにより、ヘルスチェックが再び有効になり、アクセス ログから確認できるようになります。

ヘルスチェックの設定を編集して、タイムアウトを長くし、異常なしきい値を 3 に上げましたが、違いはありませんでした。

現在、ヘルス チェックの構成は次のとおりです。 Ping ターゲット: HTTPS:443/login タイムアウト: 10 秒 間隔: 12 秒 異常: 2 正常: 2

リスナー: HTTPS 443 から HTTPS 443 への SSL 証明書

ELB と Web インスタンスは両方とも、http/https が 0.0.0.0/0 に開かれている同じパブリック VPC セキュリティ グループにあります。

Web インスタンスが開始されるとすぐに ELB ヘルスチェックが開始されない理由を理解するのを手伝ってくれる人はいますか? これは仕様によるものですか、それともチェックを自動的に開始する方法はありますか? ありがとうございました。

ニール

4

1 に答える 1

0

インスタンスを起動するたびに異なる IP アドレスが割り当てられますか?

Elastic Load Balancing は、インスタンスに関連付けられている IP アドレスを使用して、ロード バランサーを EC2 インスタンスに登録します。インスタンスを停止して再起動すると、インスタンスに関連付けられた IP アドレスが変更されます。ロードバランサーは新しい IP アドレスを認識できないため、トラフィックをインスタンスにルーティングできません。

http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/TerminologyandKeyConcepts.html#registerinstance

インスタンスを再関連付けするための適切なアプローチは、インスタンスが Web トラフィックの準備ができていることを起動プロセスが判断したときに、Web サーバー インスタンスで実行されているコードを API を介してプログラムでロード バランサーに登録することです。


アップデート:

Luke@AWS: 「停止/開始中に ELB から登録解除する必要があります。」

https://forums.aws.amazon.com/thread.jspa?messageID=463835

インスタンスが ELB でアクティブでない理由としてコンソールに表示される内容に興味があります。ELB と EC2 の間に何らかの相互作用があり、ELB がインスタンスの EC2 状態 (「停止」など) をヘルスチェックだけでなく何らかの形で認識しているように見えます。これは十分に文書化されていませんが、その認識に基づいて、ELB はヘルスチェックに煩わされる価値がないと判断し、コンソールは少なくともこれを確認するのに役立つ何かを提供する可能性があると推測します。

十分な時間があれば、ELB はインスタンスが再び実行されていることを認識し、ヘルス チェックの送信を開始する可能性がありますが、インスタンスがi-xxxxxxとは別の非表示のグローバル メタ識別子を持ち、停止して再起動したインスタンスが、この識別子の観点からは、別のインスタンスです。

...しかし、答えは、インスタンスを停止して再起動するには、ELB に再登録する必要があるようです。

于 2013-09-22T22:52:44.363 に答える