ブートストラップ接続が成功しても、Kafkaクライアントがまだ生産や消費を行えないことがあります。ブートストラップサーバーはクライアントがクラスターを検出するのを助けるものであり、クライアントが接続する唯一のエンドポイントとは限りません。

ブローカーのメタデータには、後の接続に使われるアドレスが含まれます。それらの名前やポートが想定したプロキシ経路で到達できない場合、最初の接続の成功だけでは残りの作業を解決できません。

広告されるエンドポイントを読む

ブートストラップアドレスと、クライアントが実際に受け取るブローカーアドレスを比較してください。公開ブートストラップの別名がプライベートな広告名につながることがあり、ローカルポートを一つ転送してもメタデータ内のすべてのアドレスが自動的に書き換わるわけではありません。

クライアント実装がサポートするプロキシ経路も特定してください。JavaのシステムSOCKSプロパティは、ライブラリのNIOベースのトランスポートがJDK Socketのプロキシ機構を使うことを保証しません。すべてのJavaソケットが同じ設定に従うと仮定せず、実際のKafkaクライアントとネットワーク統合を確認してください。

プロキシを意識したクライアントには、関連するブローカーエンドポイントへの許可された経路が必要です。ネットワークレベルの構成には、対応する到達性と名前解決が必要です。これらは別の設計であり、どちらもプロキシをブートストラップサーバーとして列挙するだけでは提供されません。

セキュリティプロトコルと認証の設定は分けてください。プロキシがTCP経路を確立しても、TLSの識別情報、SASL認証、ブローカーの承認は依然として失敗することがあります。

診断では、どのエンドポイントが失敗したか、それが静的構成から来たのか返却されたメタデータから来たのかを記録してください。この区別は、すでに到達可能だったエンドポイントを繰り返し変更するよりも問題をはるかに絞り込みます。

関連記事