TCP リクエストが Google クラウド ロードバランサでドロップされる

TCP リクエストが Google クラウド ロードバランサでドロップされる

当社では、サービスの 1 つに TCP Google Cloud Loadbalancer を使用しています。

アーキテクチャは次のとおりです。フロントエンドでさまざまなポートが許可されている TCP ロード バランサがあり、そのバックエンド インスタンスが接続され、インスタンス サービスは LB で開いている同じポートで実行されています。

たとえば、LB IP -1.1.1.1:(100-200)ポートの範囲が開いています。現在、バックエンドでは 3 つのインスタンスが実行されており、それらのポート 100、101、103 でサービスが実行されています。

ユーザーがポート 100 で実行されているサービスにアクセスする場合は、LB IP:100 を使用してサービスにアクセスする必要があります。しかし、ここ数日、リクエストがドロップされるようになりました。ただし、インスタンス IP:100 に直接接続しようとすると、サービスは正常に機能します。そのため、正確な原因を突き止めることができません。リクエストも TCP ベースであるため、LB がドロップする理由がわかりません。

いくつかの入力を提案してください。注: GCloud またはコンソールから LB ログを確認する方法はありますか?

答え1

可視性を高めるために OP 自身の回答を投稿します。

私の問題は LB によるものではありませんでした。

私の LB はラウンドロビン アルゴリズムを使用しており、バックエンド サーバーのステータスを確認せずにリクエストを渡すだけでした。サーバーのうち 1 つだけが稼働していたため、リクエストの半分がドロップされていました。

同じ LB の下にもう 1 つのインスタンスを構成しただけで、問題は解決しました。

この種のソリューションは最も「粗雑」であり、フェイルセーフ機能を提供しません。いずれかのサーバーがダウンすると、一部のリクエストがドロップされ、サービスがダウングレードされます。

それを避ける最も簡単な解決策は、マネージドインスタンスグループ使用してヘルスチェックすべてのVMが稼働しているかどうかを確認し、ロードバランサー

関連情報