5.5. デュアルロールノードへの移行
この手順では、ブローカーロールだけを持つノードとコントローラーロールだけを持つノードの使用から、デュアルロールノードの使用に移行する方法を説明します。Kafka クラスターで、コントローラー専用ノードとブローカー専用ノードを使用している場合は、両方のロールを持つ 1 つのノードを使用するように移行できます。
これを行うには、ノードにデュアルロール設定を追加し、クラスターをリバランスして、コントローラーノードとしてのみ機能していたノードにパーティションレプリカを移動します。
デュアルロール設定は、開発やテストに適しています。通常の実稼働環境では、ブローカー専用ノードとコントローラー専用ノードを使用してください。
前提条件
- Streams for Apache Kafka (2.9 以上) が 各ホストにインストールされており、設定ファイルが使用可能である。
-
controller.quorum.bootstrap.serversプロパティーを使用して、コントローラークォーラムが動的スケーリング用に設定されている。 - Cruise Control がインストールされている。
- クラスターのバックアップが推奨されます。
手順
各コントローラーノードについて、1 つずつ次の手順を実行します。
コントローラーノードを停止します。
./bin/kafka-server-stop.shブローカー固有の設定を追加して、コントローラー専用ノードをデュアルロールノードとして機能するように設定します。
少なくとも次の操作を実行します。
-
process.roles=controllerをprocess.roles=broker, controllerに切り替えます。 -
log.dirsを使用してブローカーのログディレクトリーを追加または更新します。 - ブローカーがクライアントリクエストを処理するためのリスナーを追加します。この例では、PLAINTEXT://:9092 を追加します。
-
listener.security.protocol.mapを使用して、リスナー名とセキュリティープロトコル間のマッピングを更新します。 -
inter.broker.listener.nameを使用してブローカー間通信用のリスナーを設定します。
デュアルロール設定の例
process.roles=broker, controller node.id=1 log.dirs=/var/lib/kafka metadata.log.dir=/var/lib/kafka-metadata listeners=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9090 controller.listener.names=CONTROLLER listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT controller.quorum.bootstrap.servers=localhost:9090 inter.broker.listener.name=PLAINTEXT num.partitions=1 auto.create.topics.enable=false default.replication.factor=3 min.insync.replicas=2 # ...-
デュアルロールで動作するようになったノードを再起動します。
./bin/kafka-server-start.sh -daemon ./config/kraft/dual-role.properties
Cruise Control の
remove_brokerエンドポイントを使用して、現在デュアルロールノードとして機能するようになったノードに、ブローカー専用ノードからパーティションレプリカを再割り当てします。クラスター内のトピックとパーティションの数によっては、再割り当てに時間がかかる場合があります。
詳細は、「最適化プロポーザルの生成」 を参照してください。
ブローカーノードを登録解除します。
./bin/kafka-cluster.sh unregister \ --bootstrap-server <broker_host>:<port> \ --id <node_id_number>詳細は、「スケールダウン操作後のノードの登録解除」 を参照してください。
ブローカーノードを停止します。
./bin/kafka-server-stop.sh