週末、GCP LB がインスタンスの 1 つに異常があるとフラグを付けました。何も変更されておらず、再デプロイも行われず、他のインスタンスは正常です。
TCP ヘルスチェックを使用していますが、次の結果は予想どおり 0 になります。
nc localhost 80 -z; echo $?
GCP がノードを異常と判断する理由をデバッグするにはどうすればよいでしょうか?
アップデート:
ヘルスチェックを SSL に変更し、その後 TCP80 に戻したところ、Google はノードが正常であると判断するようになりました。これは少し心配です。
答え1
ヘルスチェックが失敗する最も一般的な原因は、サービスをインスタンスの外部 IP アドレスにのみバインドし、ロードバランサーのアドレスにはバインドしないことです。
サーバー プロセスがホスト上のすべての構成済みアドレスをリッスンするようにする必要があります。こうすることで、ロード バランサーの外部アドレスに対してヘルス チェックが機能するようになります。
Google Cloud Platform の負荷分散におけるヘルスチェックのデバッグ方法に関する詳細な情報が見つかります。ここ。
答え2
私の場合、それはファイアウォール ルールが原因でした。インスタンスは共有 VPC 内のカスタム サブネットにあり、ロード バランサーとヘルス チェッカーの IP アドレスを許可どおりに手動で追加する必要がありました (ドキュメントに記載されているとおり)。