4.3. Kafka ブローカーの正常なローリング再起動の実行


この手順では、マルチノードクラスターでブローカーの正常なローリング再起動を実行する方法を説明します。通常、Kafka クラスター設定プロパティーのアップグレードまたは変更後にローリング再起動が必要です。

注記

一部のブローカー設定では、ブローカーの再起動は必要ありません。詳細は、Apache Kafka ドキュメントの Updating Broker Configs を参照してください。

ブローカーの再起動後に、レプリケーションの数が最低数未満であるトピックパーティションがないかをチェックして、レプリカパーティションの数が十分にあることを確認します。

可用性を失わずに正常な再起動を実現するには、トピックをレプリケーションしていること、および少なくとも最小数のレプリカ (min.insync.replicas) が同期していることを確認してください。min.insync.replicas 設定は、書き込みを成功とみなすために書き込みを確認する必要のあるレプリカの最小数を決定します。

マルチノードクラスターの場合に、標準的な方法として、トピックレプリケーション係数を 3 以上に、In-Sync レプリカの最小数をレプリケーション係数よりも 1 少なく設定します。データの持続性のためにプロデューサー設定で acks=all を使用している場合は、再起動したブローカーが、次のブローカーを再起動する前にレプリケーションするすべてのパーティションと同期していることを確認します。

すべてのパーティションが同じブローカーにあるため、単一ノードのクラスターは再起動時に利用できなくなります。

前提条件

  • ZooKeeper クラスターが 設定され、実行されている
  • Kafka クラスターが想定どおりに動作している。

    レプリケーションが不十分なパーティションや、ブローカーの動作に影響を与えるその他の問題がないかどうかを確認します。この手順では、レプリケーションが不十分なパーティションをチェックする方法を説明します。

手順

各 Kafka ブローカーで以下の手順を実行します。次のステップに進む前に、最初のブローカーの手順を完了してください。アクティブなコントローラーの最後のブローカーで手順を実行します。それ以外の場合、アクティブなコントローラーは、再起動を複数回行う時に変更する必要があります。

  1. Kafka ブローカーを停止します。

    /opt/kafka/bin/kafka-server-stop.sh
  2. 完了後に再起動を必要とするブローカー設定に変更を加えます。

    詳細は、以下を参照してください。

  3. Kafka ブローカーを再起動します。

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

    jcmd | grep kafka

    戻り値:

    process ID kafka.Kafka /opt/kafka/config/server.properties
  5. ncat ユーティリティーを使用して dump コマンドを ZooKeeper ノードのいずれかに送信し、すべてのノードが Kafka クラスターのメンバーであることを確認します。

    ncat dump を使用して、ZooKeeper に登録されているすべての Kafka ブローカーを確認します。

    echo dump | ncat zoo1.my-domain.com 2181

    dump のような 4 文字のコマンドを使用するには、zookeeper.properties4lw.commands.whitelist=* を指定する必要があります。

    出力には、起動した Kafka ブローカーが含まれている必要があります。

    3 つのノードで設定される Kafka クラスターの ncat コマンドの出力例

    SessionTracker dump:
    org.apache.zookeeper.server.quorum.LearnerSessionTracker@28848ab9
    ephemeral nodes dump:
    Sessions with Ephemerals (3):
    0x20000015dd00000:
            /brokers/ids/1
    0x10000015dc70000:
            /controller
            /brokers/ids/0
    0x10000015dc70001:
            /brokers/ids/2

  6. ブローカで、レプリケーションが不十分なパーティションがゼロになるまで待ちます。コマンドラインから確認するか、メトリクスを使用できます。

    • --under-replicated-partitions パラメーターを指定して kafka-topics.sh コマンドを使用します。

      /opt/kafka/bin/kafka-topics.sh --bootstrap-server <bootstrap_address>  --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 アプリケーションログでブローカーのシャットダウンと再起動のステータスを確認することもできます。

ブローカーのシャットダウンに成功したログ

# ...
[2022-06-08 14:32:29,885] INFO Terminating process due to signal SIGTERM (org.apache.kafka.common.utils.LoggingSignalHandler)
[2022-06-08 14:32:29,886] INFO [KafkaServer id=0] shutting down (kafka.server.KafkaServer)
[2022-06-08 14:32:29,887] INFO [KafkaServer id=0] Starting controlled shutdown (kafka.server.KafkaServer)
[2022-06-08 14:32:29,896] INFO [KafkaServer id=0] Controlled shutdown request returned successfully after 6ms (kafka.server.KafkaServer)
# ...

ブローカーの再起動に成功したログ

# ...
[2022-06-08 14:39:35,245] INFO [KafkaServer id=0] started (kafka.server.KafkaServer)
# ...

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.