web-dev-qa-db-ja.com

Amazon ELBヘルスチェックはどのように機能しますか?

サーバーのELBの構成に問題があります。

まったく同じ設定で2つのマイクロインスタンスを開始し、負荷分散を実行しようとします。ただし、ヘルスチェックに合格することはありません(HTTPポート80パス: "/")。

  • Pingはウェブサイト上で大丈夫です。 80のtelnetも同様です。

ヘルスチェックはどのように機能しましたか?私は本当に間違ったことをしていますか?

編集:

  • ブラウザーへの直接アクセスとGET(curl経由)の両方が正しく機能します(ステータス200)
6
diegodias

私は同じ問題を抱えています。暫定的な解決策としてTCP:80をチェックするだけです(これは正常に機能します)。

1
samuelkf

応答には、HTTP 200応答以外に、特定のヘッダーが含まれている必要があるという結論に達しました。インスタンスで実行中のTomcatサーバーからHTTP 200が返されましたが、機能しませんが、httpd(200コードを返す)によって提供される静的HTMLページは正常に機能します。ヘッダーを見ると、いくつかの違いの1つは、Tomcatにcontent-typeが含まれていないことです。しかし、なぜそれが違いを生むのかわかりません。

2
Svend Hansen

各サーバーの指定されたパス "/"に対してHTTP GET要求を実行し、成功したHTTP応答コード(200)を探すと想定しています。ブラウザ(またはwgetcurlなどのCLIツール)を介してhttp://<backend_server_IP>:80/へのGETリクエストを正常に行うことができますか。

リクエストが正常に処理された場合の2番目の質問は、ポート80へのアクセスが特定の送信元アドレスまたはサブネットに制限されるようにサーバーのセキュリティグループを構成しましたか?その場合は、ELBのセキュリティグループをフィルターに追加する必要があります。グループは常に呼び出されます:

Amazon-elb/Amazon-elb-sg

したがって、これをAWSコンソールの[セキュリティグループ]セクションの[ソース]フィールドの下に追加するだけです。

1
James Little

Webサーバーで特定のドメイン名を使用している必要があります。または、任意の要求を満たすようにWebサーバーをセットアップする(*をバインドする)か、 ドキュメント に従います。

1
  • まず、ELBセキュリティトラフィックがインスタンスからのトラフィックを許可し、インスタンスセキュリティグループがELBからのトラフィックを許可していることを確認します。
  • 回答は200である必要があると述べた
  • そして最後に、私が知ることができるものから複数のインターフェースがあり、ランダムにどのインターフェースを選択するかを教えてください。
  • ELBはIGWへのインターネットルートのあるサブネット内にある必要があります
0

(phpページではなく)静的htmlファイルをポイントすることで、httpチェックが機能するようにしました。

'/'は、curlなどを使用したときに有効なhttpステータスを返しますが、機能しません。 '/ file.html'はヘルスチェックに合格します。

0
samuelkf