3.6. Kafka ブローカーの正常なローリング再起動の実行
この手順では、マルチノードクラスターでブローカーの正常なローリング再起動を実行する方法を説明します。通常、Kafka クラスター設定プロパティーのアップグレードまたは変更後にローリング再起動が必要です。
一部のブローカー設定では、ブローカーの再起動は必要ありません。詳細は、Apache Kafka ドキュメントの Updating Broker Configs を参照してください。
ブローカーの再起動後に、レプリケーションが不十分なトピックパーティションがないかをチェックして、レプリカパーティションの数が十分にあることを確認します。
可用性を失わずに正常な再起動を実現するには、トピックをレプリケーションしていること、および少なくとも最小数のレプリカ (min.insync.replicas
) が同期していることを確認してください。min.insync.replicas
設定は、書き込みを成功とみなすために書き込みを確認する必要のあるレプリカの最小数を決定します。
マルチノードクラスターの場合に、標準的な方法として、トピックレプリケーション係数を 3 以上に、In-Sync レプリカの最小数をレプリケーション係数よりも 1 少なく設定します。データの持続性のためにプロデューサー設定で acks=all
を使用している場合は、再起動したブローカーが、次のブローカーを再起動する前にレプリケーションするすべてのパーティションと同期していることを確認します。
すべてのパーティションが同じブローカーにあるため、単一ノードのクラスターは再起動時に利用できなくなります。
前提条件
- Streams for Apache Kafka が 各ホストにインストールされており、設定ファイルが使用可能である。
Kafka クラスターが想定どおりに動作している。
レプリケーションが不十分なパーティションや、ブローカーの動作に影響を与えるその他の問題がないかどうかを確認します。この手順では、レプリケーションが不十分なパーティションをチェックする方法を説明します。
手順
各 Kafka ブローカーで以下の手順を実行します。次のステップに進む前に、最初のブローカーの手順を完了してください。コントローラーとしても機能するブローカーでは、最後に手順を実行します。そうしない場合、再起動を複数回行う時にコントローラーを変更する必要があります。
Kafka ブローカーを停止します。
/opt/kafka/bin/kafka-server-stop.sh
完了後に再起動を必要とするブローカー設定に変更を加えます。
詳細は、以下を参照してください。
Kafka ブローカーを再起動します。
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/kraft/server.properties
Kafka が稼働していることを確認します。
jcmd | grep kafka
戻り値:
process ID kafka.Kafka /opt/kafka/config/kraft/server.properties
各ノードのログをチェックして、KRaft クラスターに正常に参加していることを確認します。
tail -f /opt/kafka/logs/server.log
ブローカで、レプリケーションが不十分なパーティションがゼロになるまで待ちます。コマンドラインから確認するか、メトリクスを使用できます。
--under-replicated-partitions
パラメーターを指定してkafka-topics.sh
コマンドを使用します。/opt/kafka/bin/kafka-topics.sh --bootstrap-server <broker_host>:<port> --describe --under-replicated-partitions
以下に例を示します。
/opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --describe --under-replicated-partitions
このコマンドは、クラスターでレプリケーションが不十分なパーティションのトピックのリストを表示します。
レプリケーションが不十分なパーティションのトピック
Topic: topic3 Partition: 4 Leader: 2 Replicas: 2,3 Isr: 2 Topic: topic3 Partition: 5 Leader: 3 Replicas: 1,2 Isr: 1 Topic: topic1 Partition: 1 Leader: 3 Replicas: 1,3 Isr: 3 # …
In-Sync レプリカ (ISR) の数がレプリカの数より少ない場合、レプリケーションが不十分なパーティションが一覧表示されます。リストが返されない場合は、レプリケーションが不十分なパーティションはありません。
UnderReplicatedPartitions
メトリックを使用します。kafka.server:type=ReplicaManager,name=UnderReplicatedPartitions
このメトリックからは、レプリカが不十分なパーティションの数がわかります。数がゼロになるまで待機します。
ヒントトピックにレプリケーションが不十分なパーティションがあると、Kafka Exporter を使用してアラートを作成します。
再起動時のログの確認
ブローカーが起動できない場合は、アプリケーションログで情報を確認します。/opt/kafka/logs/server.log
アプリケーションログでブローカーのシャットダウンと再起動のステータスを確認することもできます。