図に示すように、ポート8545でHTTPサーバーを実行している2つのVMをインスタンスグループに配置しています。
エンドユーザーからのHTTPリクエストを分散するために、GCPでHTTPロードバランサーを作成しました。ただし、図に示す設定とファイアウォールルールでは、ヘルスチェックが失敗し、アクセスできません http://35.190.34.26:80/
Error: Server Error
The server encountered a temporary error and could not complete your request.
Please try again in 30 seconds.
ただし、すべてを許可するファイアウォールルールを追加すると、(0.0.0.0/0 on 8545)
、ヘルスチェックに合格し、私もアクセスできます http://35.190.34.26:80/
しかし、私は8545のすべてのユーザーを許可するこのファイアウォールルールを記述したくありません。ロードバランサーだけがこのポートのインスタンスグループにアクセスできるようにファイアウォールを構成する正しい方法は何ですか?
グローバル転送ルールはポート80で構成されていますが、バックエンドインスタンスはポート8545でトラフィックを処理しているため、これらのポートで130.211.0.0/22および35.191.0.0/16からのトラフィックを許可するには、2つの個別のファイアウォールルールを作成する必要があります。これらは、ロードバランサーがバックエンドインスタンスへの接続に使用するIPアドレス範囲です。このルールは、ロードバランサーとヘルスチェッカーの両方からのトラフィックを許可します。
バックエンドインスタンスをチェックして、すべてのアドレス(0.0.0.0/0)でリッスンしていて、特定のIPにバインドされていないことを確認することをお勧めします。さらに、バックエンドインスタンスでtcpdumpを実行すると、トラフィックが上記のIP範囲からインスタンスに到達しているかどうかを確認し、さらにデバッグを続けるのに役立ちます。
Google HTTP(S)負荷分散に関するファイアウォールルールの詳細については、このヘルプセンター article をご覧ください。
GCPにロードバランサーを備えたHAを使用したApacheレンジャーのインストールにも同様の要件がありました。レンジャーポート(6080)で130.211.0.0/22および35.191.0.0/16からのトラフィックを許可するファイアウォールルールを1つ作成したところです。
私たちがしなければならない重要なことは、ヘルスチェック-> select TCP protocol with port 6080(あなたのケースでは8545)です。それからあなたはロードバランサーのURLにアクセスできます。