4.2. リスナー
Kafka ブローカーは、複数のリスナーを使用するように設定できます。各リスナーは、異なるポートまたはネットワークインターフェイスでリッスンするために使用でき、異なる設定を持つことができます。リスナーは、設定ファイルの listeners
プロパティーで設定されます。listeners
プロパティーには、各リスナーが <listenerName> ://<hostname> :_<port>_
として設定されたリスナーのリストが含まれています。ホスト名の値が空の場合、Kafka は java.net.InetAddress.getCanonicalHostName()
をホスト名として使用します。次の例は、複数のリスナーを設定する方法を示しています。
listeners=INT1://:9092,INT2://:9093,REPLICATION://:9094
Kafka クライアントが Kafka クラスターに接続する場合、最初に ブートストラップサーバー に接続します。ブートストラップサーバー は、クラスターノードの 1 つです。クラスターの一部である他のすべてのブローカーのリストをクライアントに提供し、クライアントはそれらに個別に接続します。デフォルトでは、ブートストラップサーバー は listeners
フィールドに基づいてクライアントにノードのリストを提供します。
アドバタイズされたリスナー
listeners プロパティーで指定したものとは異なるアドレスのセットをクライアントに与えることができます。これは、プロキシーなどの追加のネットワークインフラストラクチャーがクライアントとブローカーの間にある場合や、IP アドレスの代わりに外部 DNS 名を使用する必要がある場合に役立ちます。ここで、ブローカーは、advertized.listeners 設定プロパティーでリスナーのアドバタイズされたアドレスを定義できます。このプロパティーは、listeners プロパティーと同じ形式です。次の例は、アドバタイズされたリスナーを設定する方法を示しています。
listeners=INT1://:9092,INT2://:9093 advertised.listeners=INT1://my-broker-1.my-domain.com:1234,INT2://my-broker-1.my-domain.com:1234:9093
リスナーの名前は、listeners
プロパティーのリスナーの名前と一致する必要があります。
inter-broker リスナー
クラスターがトピックをレプリケートした場合、そのようなトピックを担当するブローカーは、それらのトピックのメッセージをレプリケートするために相互に通信する必要があります。複数のリスナーが設定されている場合、設定フィールド inter.broker.listener.name
を使用して、ブローカー間のレプリケーションに使用する必要があるリスナーの名前を指定できます。以下に例を示します。
inter.broker.listener.name=REPLICATION