Node.jsアプリケーションのフロントエンドサーバーとしてnginxを使用するelasticbeanstalk環境があります。
この環境では、TCP:80/SSL:443で接続を受け入れ、両方をTCP:8080でnginxインスタンスに転送するように構成されたエラスティックロードバランサーを使用します。 WebSocketをサポートするために、HTTP/HTTPSの代わりにTCP/SSL + ProxyProtocolを使用しています。
AWS ELBでは、TCPを使用している場合、ロードバランサーからのヘルスチェックにURLを使用できません。 1つ使用する必要があります。そうしないと、nginxが8080でリッスンしているかどうかのみがチェックされ、node.jsアプリが実行されているかどうかはチェックされません。
私はそれを機能させるためのアイデアを探しています。目標は、node.jsアプリのヘルスチェックURLを取得し、ヘルスチェックURLのステータスが200でない場合、AWSELBにインスタンスを異常としてマークさせることです。
私の現在のアイデアは、nginxのヘルスチェックのサポートに乗ってnodejsに反するようにし、アプリが異常であると検出した場合、8080で接続のリッスンを停止して、ELBがインスタンスを異常としてマークすることです。たぶん、nginxが正常/異常なインスタンスを検出したときにコマンドを実行するだけで十分でしょう。
それは可能ですか?他のアイデアはありますか?
ロードバランサーのヘルスチェック構成はリスナーエンドポイント構成から独立しているため、HTTP:8080/index.html
を使用してロードバランサーのヘルスチェックを問題なく構成できます。
私が何を考えていたのかわからない...