MicroStrategy ONE
ZooKeeper から KRaft モードへの移行
Strategy One (2025年12月) 以降、Kafka は Platform Analytics で KRaft モードのみで動作するようになります。このアップデートにより、ZooKeeper サービスの要件と可用性が削除され、バージョン 4.10 の時点で最新の Kafka アーキテクチャと一致して、パフォーマンスが向上し、レジリエンスが改善されます。
既存のデータの移行はサポートされていないことに注意してください。既存のすべてのテレメトリ データは、Strategy One (2025年12月) 以降にアップグレードする前に完全に処理する必要があります。
主なアップグレードの影響
-
データ移行の制限: 履歴データの移行なし
Kafka v4.1.0 以降では、ZooKeeper から KRaft モードへの履歴データまたはコンシューマー グループ オフセットの移行がサポートされていません。
-
現在の Kafka クラスター (ZooKeeper を使用) 内の既存のデータは、アップグレード後に使用できなくなります。
-
お客様は、アップグレードを開始する前に、既存のすべてのテレメトリ データを処理する必要があります。未処理のレコードとオフセットは転送または保存できないため、データ損失を回避するために必要です。
アップグレードする前に、以下を完了する必要があります:
-
すべての処理中のデータを処理: すべての Platform Analytics コンシューマーがすべてのトピック パーティションの使用を完了し、バックログをクリアしていることを確認します。
-
コンシューマーの完了を検証:
lu_topic_partition_offsetテーブルを確認して、オフセットが増加しなくなったことを確認します。これは、コンシューマーがすべてのトピックからのデータの処理を完了したことを示します。 -
オンプレミスおよびインスタンスベースのユーザーの場合、すべてのデータを処理せずに誤ってアップグレードした場合は、古い ZooKeeper モードでクラスターを一時的に再起動して、残りのレコードを処理してから、最終的に KRaft に移行できます。
すべてのデータを処理せずにアップグレードすると、未処理のテレメトリは永久に失われます。
-
-
アーキテクチャの変更: ZooKeeper の削除
v4.1.0 以降、ZooKeeper は Kafka デプロイメントに含まれなくなりました。
-
ZooKeeper サービスまたはコンテナー/ポッドは不要になりました。
-
すべてのクラスター メタデータと調整は、Raft コンセンサス プロトコル (KRaft) を介して Kafka 内で行われます。
-
-
アップグレード要件
-
すべてのブローカーを一度にアップグレードする必要があります: 混合モード クラスターはサポートされていません。一部のブローカーを ZooKeeper で、他のブローカーを KRaft で同時に実行することはできません。
-
ネットワーク構成: コントローラー クォーラム トラフィックに必要なポートを開き、必要に応じてファイアウォール/ネットワーク ポリシーを更新します。
-
Platform Analytics 用の KRaft モードで 3 ノード Kafka クラスターを構成する
単一ノード Kafka デプロイメントは、Windows および Linux インストーラーによって標準で利用できます。以下の手順を使用して、3 ノード クラスターをデプロイします。
前提条件
ノード: 3 つの Linux サーバーが必要です:
-
ノード 1:
<IP Node1> -
ノード 2:
<IP Node2> -
ノード 3:
<IP Node3>
クラスター ID: 汎用一意識別子 (UUID) を使用します。例: 11111111-1111-1111-1111-111111111111。
3 ノード Kafka クラスターを構成する
-
各ノードで
config/server.propertiesファイルを次のように作成または編集します:-
ノード 1 (
<IP Node1>):コピーnode.id=1
listeners=PLAINTEXT://<IP Node1>:9092,CONTROLLER://<IP Node1>:9093
advertised.listeners=PLAINTEXT://<IP Node1>:9092
controller.quorum.bootstrap.servers=<IP Node1>:9093,<IP Node2>:9093,<IP Node3>:9093
controller.quorum.voters=1@<IP Node1>:9093,2@<IP Node2>:9093,3@<IP Node3>:9093
offsets.topic.replication.factor=3
share.coordinator.state.topic.replication.factor=3
transaction.state.log.replication.factor=3 -
ノード 2 (
<IP Node2>):コピーnode.id=2
listeners=PLAINTEXT://<IP Node2>:9092,CONTROLLER://<IP Node2>:9093
advertised.listeners=PLAINTEXT://<IP Node2>:9092
controller.quorum.bootstrap.servers=<IP Node1>:9093,<IP Node2>:9093,<IP Node3>:9093
controller.quorum.voters=1@<IP Node1>:9093,2@<IP Node2>:9093,3@<IP Node3>:9093
offsets.topic.replication.factor=3
share.coordinator.state.topic.replication.factor=3
transaction.state.log.replication.factor=3 -
ノード 3 (
<IP Node3>):コピーnode.id=3
listeners=PLAINTEXT://<IP Node3>:9092,CONTROLLER://<IP Node3>:9093
advertised.listeners=PLAINTEXT://<IP Node3>:9092
controller.quorum.bootstrap.servers=<IP Node1>:9093,<IP Node2>:9093,<IP Node3>:9093
controller.quorum.voters=1@<IP Node1>:9093,2@<IP Node2>:9093,3@<IP Node3>:9093
offsets.topic.replication.factor=3
share.coordinator.state.topic.replication.factor=3
transaction.state.log.replication.factor=3
-
-
すべてのノードで同じクラスター ID を使用して、各ノードで次を実行します:
コピーbin/kafka-storage.sh format -t 11111111-1111-1111-1111-111111111111 -c config/server.properties -
各ノードで、次を使用して Kafka をデーモンとして起動します:
コピーbin/kafka-server-start.sh -daemon config/server.properties -
任意のノードで、KRaft クォーラム ステータスを確認します:
コピーbin/kafka-metadata-quorum.sh --bootstrap-server <IP Node3>:9092 describe --status次のような詳細が表示されます:
コピーClusterId: 11111111-1111-1111-1111-111111111111
LeaderId: 3
CurrentVoters: [{"id": 1, "endpoints": [...]}, {"id": 2, ...}, {"id": 3, ...}]
... -
次を使用して、Platform Analytics と Intelligence Server を構成します:
-
Platform Analytics Consumer (
PAConsumerConfig.yaml):コピーkafkaTopicNumberOfReplicas: 3
kafkaConsumerProperties:
bootstrap.servers: "<IP Node1>:9092,<IP Node2>:9092,<IP Node3>:9092" -
Intelligence Server (Command Manager 経由):
コピーALTER SERVER CONFIGURATION ENABLEMESSAGINGSERVICES TRUE CONFIGUREMESSAGINGSERVICES "bootstrap.servers:<IP Node1>:9092,<IP Node2>:9092,<IP Node3>:9092/batch.num.messages:5000/queue.buffering.max.ms:2000"; -
Library Config:
コピーproducer.kafkaProperties.bootstrap.servers = <IP Node1>:9092,<IP Node2>:9092,<IP Node3>:9092
-
-
Kafka の起動後、Kafka トピック データ フォルダー
kafka_dataが各ノードで利用可能であることを確認します。 -
次のテスト メッセージを送信します:
コピーbin/kafka-console-producer.sh --bootstrap-server <IP Node3>:9092 --topic Mstr.PlatformAnalytics.IsReportSecurityFilterStats次のメッセージを使用してテストします:
コピーbin/kafka-console-consumer.sh --bootstrap-server <IP Node3>:9092 --topic Mstr.PlatformAnalytics.IsReportSecurityFilterStats --from-beginningメッセージが表示され、ノード間レプリケーションとクラスターの健全性が確認されます。
追加情報
-
ZooKeeper サービスは不要です - ZooKeeper プロパティを構成しないでください。
-
3 つのノードすべてが同じクラスター ID を使用する必要があります。
-
フォールト トレランスのために、レプリケーション係数はブローカーの数と同じでなければなりません。
よくある質問
1. 既存の Kafka データとオフセットを新しいクラスターに移行できますか?
いいえ。ZooKeeper から KRaft クラスターへの履歴データ移行はサポートされていません。既存のすべてのデータは、アップグレード前に処理する必要があります。
2. アップグレード後に ZooKeeper サービスは存在しますか?
いいえ。ZooKeeper はアーキテクチャから完全に削除されます。すべての調整は、Raft を介して Kafka 内で管理されます。
Kafka サービス スクリプトの更新
/etc/init.d の下の Linux サービス スクリプトは、mstr-user@install_time-kafka-zookeeper から mstr-user@install_time-kafka に名前が変更されます。
新しい Kafka サービス コマンド
制御コマンドが kafka-zookeeper から kafka に変更されました:
service microstrategy kafkastart | kafkastop | kafkastatus
3. 未処理のデータがある状態で誤ってアップグレードした場合はどうなりますか?
データは失われます。オンプレミス デプロイメントの場合、古い Kafka (ZooKeeper モード) を一時的に起動し、処理を完了してから、再アップグレードできます。
