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 名を使用する必要がある場合に役立ちます。ここで、ブローカーは advertised.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