5.4. Kafka の設定


Kafka はプロパティーファイルを使用して静的設定を保存します。推奨される設定ファイルの場所は /opt/kafka/config/server.properties です。設定ファイルは kafka ユーザーが読み取りできる必要があります。

Streams for Apache Kafka には、製品のさまざまな基本機能と高度な機能を紹介するサンプル設定ファイルが付属しています。ファイルは Streams for Apache Kafka インストールディレクトリー内の config/server.properties にあります。

この章では、最も重要な設定オプションを説明します。

5.4.1. ZooKeeper

Kafka ブローカーは、設定の一部を保存し、クラスターを調整するために (たとえば、どのノードがどのパーティションのリーダーであるかを決定するために) ZooKeeper を必要とします。ZooKeeper クラスターの接続の詳細は、設定ファイルに保存されます。zookeeper.connect フィールドには、zookeeper クラスターのメンバーのホスト名およびポートのコンマ区切りリストが含まれます。

以下に例を示します。

zookeeper.connect=zoo1.my-domain.com:2181,zoo2.my-domain.com:2181,zoo3.my-domain.com:2181

Kafka はこれらのアドレスを使用して ZooKeeper クラスターに接続します。この設定により、すべての Kafka znodes が ZooKeeper データベースのルートに直接作成されます。そのため、このような ZooKeeper クラスターは単一の Kafka クラスターにのみ使用できます。単一の ZooKeeper クラスターを使用するように複数の Kafka クラスターを設定するには、Kafka 設定ファイルの ZooKeeper 接続文字列の最後にベース (接頭辞) パスを指定します。

zookeeper.connect=zoo1.my-domain.com:2181,zoo2.my-domain.com:2181,zoo3.my-domain.com:2181/my-cluster-1

5.4.2. リスナー

リスナーは、Kafka ブローカーへの接続に使用されます。各 Kafka ブローカーは、複数のリスナーを使用するように設定できます。リスナーごとに異なる設定が必要なため、別のポートまたはネットワークインターフェイスでリッスンできます。

リスナーを設定するには、Kafka 設定プロパティーファイルの listeners プロパティーを編集します。listeners プロパティーにコンマ区切りのリストとしてリスナーを追加します。各プロパティーを以下のように設定します。

<listener_name>://<hostname>:<port>

<hostname> が空の場合、Kafka は java.net.InetAddress.getCanonicalHostName() クラスをホスト名として使用します。

複数のリスナーの設定例

listeners=internal-1://:9092,internal-2://:9093,replication://:9094

Kafka クライアントが Kafka クラスターに接続する場合は、最初にクラスターノードの 1 つである ブートストラップサーバー に接続します。ブートストラップサーバーはクライアントにクラスター内のすべてのブローカーのリストを提供し、クライアントは各ブローカーに個別に接続します。ブローカーのリストは、設定された listeners に基づいています。

アドバタイズされたリスナー

任意で、advertised.listeners プロパティーを使用して、listeners プロパティーに指定されたものとは異なるリスナーアドレスのセットをクライアントに提供できます。これは、プロキシーなどの追加のネットワークインフラストラクチャーがクライアントとブローカー間にある場合や、IP アドレスの代わりに外部 DNS 名が使用されている場合に便利です。

advertised.listeners プロパティーは listeners プロパティーと同じ方法でフォーマットされます。

アドバタイズされたリスナーの設定例

listeners=internal-1://:9092,internal-2://:9093
advertised.listeners=internal-1://my-broker-1.my-domain.com:1234,internal-2://my-broker-1.my-domain.com:1235

注記

アドバタイズされたリスナーの名前は、listeners プロパティーに記載されているものと一致する必要があります。

ブローカー間リスナー

ブローカー間リスナー は、Kafka ブローカー間の通信に使用されます。ブローカー間通信は以下に必要です。

  • 異なるブローカー間のワークロードの調整
  • 異なるブローカーに保存されているパーティション間でのメッセージのレプリケーション

ブローカー間リスナーは、任意のポートに割り当てることができます。複数のリスナーが設定されている場合、ブローカー設定の inter.broker.listener.name プロパティーでブローカー間リスナーの名前を定義できます。

ここでは、ブローカー間リスナーの名前を REPLICATION とします。

listeners=REPLICATION://0.0.0.0:9091
inter.broker.listener.name=REPLICATION

コントローラーリスナー

コントローラー設定は、クラスターの調整と、ブローカーおよびパーティションのステータスを追跡するためのメタデータの管理とを行うコントローラーと接続および通信するために使用されます。

デフォルトでは、コントローラーとブローカー間の通信には専用のコントローラーリスナーが使用されます。コントローラーは、パーティションリーダーシップの変更などの管理タスクを調整するため、これらのリスナーが 1 つ以上必要です。

controller.listener.names プロパティーを使用して、コントローラーに使用するリスナーを指定します。controller.quorum.voters プロパティーを使用して、コントローラー投票者のクォーラムを指定できます。クォーラムにより、管理タスクのリーダーとフォロワーの構造が有効になります。リーダーは操作をアクティブに管理し、フォロワーはホットスタンバイとして、メモリー内のメタデータの整合性を確保し、フェイルオーバーを容易にします。

listeners=CONTROLLER://0.0.0.0:9090
controller.listener.names=CONTROLLER
controller.quorum.voters=1@localhost:9090

コントローラー投票者の形式は <cluster_id>@<hostname>:<port> です。

5.4.3. ログのコミット

Apache Kafka は、プロデューサーから受信するすべてのレコードをコミットログに保存します。コミットログには、Kafka が配信する必要がある実際のデータ (レコードの形式) が含まれます。これらのレコードは、ブローカーのアクティビティーの詳細を示すアプリケーションログファイルとは異なることに注意してください。

ログディレクトリー

log.dirs プロパティーファイルを使用してログディレクトリーを設定し、1 つまたは複数のログディレクトリーにコミットログを保存できます。これは、インストール時に作成された /var/lib/kafka ディレクトリーに設定する必要があります。

log.dirs=/var/lib/kafka

パフォーマンス上の理由から、log.dir を複数のディレクトリーに設定し、それぞれを別の物理デバイスに配置して、ディスク I/O のパフォーマンスを向上できます。以下に例を示します。

log.dirs=/var/lib/kafka1,/var/lib/kafka2,/var/lib/kafka3

5.4.4. ブローカー ID

ブローカー ID は、クラスター内の各ブローカーの一意の ID です。ブローカー ID として 0 以上の整数を割り当てることができます。ブローカー ID は、再起動またはクラッシュ後にブローカーを識別するために使用されます。そのため、ID が安定し、時間の経過とともに変更されないようにすることが重要です。ブローカー ID はブローカーのプロパティーファイルで設定されます。

broker.id=1
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.