3.5. KRaft モードでの Kafka クラスターの実行


KRaft モードで Kafka クラスターを設定して実行します。クラスター内のノードは、ブローカー、コントローラー、またはその両方のロールを実行します。

ブローカーのロール
メッセージの保存と受け渡しを管理します。
コントローラーのロール
クラスターを調整し、メタデータを管理します。
複合的なロール
単一のノードがブローカーとコントローラーの両方として機能します。

安定性と可用性を確保するために、トピックレプリケーションを備えた 3 つのブローカーと 3 つのコントローラーを最低限設定することが推奨されます。内部の __cluster_metadata トピックには、クラスター全体の情報が格納されます。

前提条件

  • Streams for Apache Kafka が 各ホストにインストールされており、設定ファイルが使用可能である。
  • この手順では、kafka-storage.sh ツール、kafka-server-start.sh ツール、および kafka-metadata-quorum.sh ツールを使用します。

手順

  1. kafka-storage ツールを使用して一意の Kafka クラスター ID を生成します。

    ./bin/kafka-storage.sh random-uuid

    この ID はすべてのノードで再利用されるため保存します。

  2. 各ノードの設定ファイルを作成します。

    設定ファイルは、Kafka で提供されている例に基づいて作成します。

    • コントローラー専用ノードの controller.properties
    • ブローカー専用ノードの broker.properties
    • 両方のロールを持つノードの server.properties
    注記

    サンプルの server.properties ファイルでは、静的クォーラム設定を目的とした controller.quorum.voters がデフォルトで使用されます。動的クォーラム (推奨) を使用するには、この手順に示すように、これを controller.quorum.bootstrap.servers に置き換えます。controller.properties ファイルは、デフォルトで controller.quorum.bootstrap.servers を使用します。

    ノードごとに、以下のプロパティーを調整します。

    node.id=1
    process.roles=broker,controller
    controller.quorum.bootstrap.servers=node1:9093,node2:9093,node3:9093
    listeners=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093
    advertised.listeners=PLAINTEXT://node1:9092
    inter.broker.listener.name=PLAINTEXT
    controller.listener.names=CONTROLLER
    log.dirs=/var/lib/kafka/data

    重要な考慮事項:

    • 各ノードには一意の node.id が必要です。
    • listeners のホスト名 (0.0.0.0) はすべてのインターフェイスにバインドされますが、必要に応じて各ノードごとに特定のホスト名または IP アドレスに変更できます。
    • advertised.listeners は、クライアントが Kafka ノードに接続するために使用する実際のアドレスを反映する必要があります。
    • 設定ファイル内の log.dirs パスは、メタデータが保存される場所を定義します。設定されていない場合は、デフォルトで一時的な場所に設定され、再起動時に消去されるため、開発にのみ適しています。
  3. コントローラークォーラムをブートストラップします (コントローラーは 1 つのみ)。

    ./bin/kafka-storage.sh format --cluster-id <uuid> --standalone --config ./config/controller.properties

    これにより、メタデータログが初期化され、クォーラムがブートストラップされます。1 つのノードでのみ使用してください。<uuid> は、生成されたクラスター ID に置き換えます。

    注記

    複数のコントローラーでブートストラップするには、代わりに --initial-controllers を使用します。

  4. コントローラーを起動します。

    ./bin/kafka-server-start.sh ./config/controller.properties
  5. クォーラムにコントローラーを追加します

    すべてのノードで controller.quorum.bootstrap.servers が正しく設定され、コントローラーが起動されていることを確認します。

  6. 残りのノード (ブローカー) をフォーマットします。

    ./bin/kafka-storage.sh format --cluster-id <uuid> --config ./config/server.properties --no-initial-controllers

    各ノードのロールに基づいて適切な設定ファイルを使用します。すべてのノードに同じクラスター ID を使用します。この手順では、コントローラークォーラムを変更せずに各ノードのストレージを準備します。

  7. 各ブローカーノードを起動します。

    ./bin/kafka-server-start.sh ./config/server.properties
  8. Kafka が稼働していることを確認します。

    jcmd | grep kafka

    戻り値:

    process ID kafka.Kafka ./config/server.properties

    各ノードのログをチェックして、KRaft クラスターに正常に参加していることを確認します。

    tail -f ./logs/server.log

次のステップ

トピックを作成し、ブローカーからメッセージを送受信できるようになりました。

メッセージを渡すブローカーの場合、クラスター内のブローカー全体でトピックのレプリケーションを使用して、データの耐久性を確保できます。トピックのレプリケーション係数を少なくとも 3 に設定し、同期レプリカの最小数をレプリケーション係数より 1 少ない数に設定します (replication.factor=3min.insync.replicas=2)。詳細は、「トピックの作成」 を参照してください。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat
トップに戻る