サーバーのELBの構成に問題があります。
まったく同じ設定で2つのマイクロインスタンスを開始し、負荷分散を実行しようとします。ただし、ヘルスチェックに合格することはありません(HTTPポート80パス: "/")。
ヘルスチェックはどのように機能しましたか?私は本当に間違ったことをしていますか?
編集:
私は同じ問題を抱えています。暫定的な解決策としてTCP:80をチェックするだけです(これは正常に機能します)。
応答には、HTTP 200応答以外に、特定のヘッダーが含まれている必要があるという結論に達しました。インスタンスで実行中のTomcatサーバーからHTTP 200が返されましたが、機能しませんが、httpd(200コードを返す)によって提供される静的HTMLページは正常に機能します。ヘッダーを見ると、いくつかの違いの1つは、Tomcatにcontent-typeが含まれていないことです。しかし、なぜそれが違いを生むのかわかりません。
各サーバーの指定されたパス "/"に対してHTTP GET要求を実行し、成功したHTTP応答コード(200)を探すと想定しています。ブラウザ(またはwget
やcurl
などのCLIツール)を介してhttp://<backend_server_IP>:80/
へのGETリクエストを正常に行うことができますか。
リクエストが正常に処理された場合の2番目の質問は、ポート80へのアクセスが特定の送信元アドレスまたはサブネットに制限されるようにサーバーのセキュリティグループを構成しましたか?その場合は、ELBのセキュリティグループをフィルターに追加する必要があります。グループは常に呼び出されます:
Amazon-elb/Amazon-elb-sg
したがって、これをAWSコンソールの[セキュリティグループ]セクションの[ソース]フィールドの下に追加するだけです。
Webサーバーで特定のドメイン名を使用している必要があります。または、任意の要求を満たすようにWebサーバーをセットアップする(*をバインドする)か、 ドキュメント に従います。
(phpページではなく)静的htmlファイルをポイントすることで、httpチェックが機能するようにしました。
'/'は、curlなどを使用したときに有効なhttpステータスを返しますが、機能しません。 '/ file.html'はヘルスチェックに合格します。