Kafka オンライン向けZookeeperから Apache Kafka Raft(KRaft)への移行
KRaftはZookeeperに取って代わります。 Kafka ポッドはブローカーとなり、Zookeeperポッドはコントローラーとなる。 Kafka 移行中はデュアルモードで動作する。
前提条件
ライブクラスターからブートストラップするには、次の手順を完了してください:
移行を開始する前に、すべてのオペレーターおよびデータストアポッドが稼働していることを確認してください。
kubectl get all -n instana-kafka
マイグレーション・ステップ
ブローカーとコントローラーの両方をサポートするには、ノードプールを有効にする必要があります。
kubectl annotate kafka instana -n instana-kafka strimzi.io/node-pools="enabled" --overwriteKRaftを無効化します。
kubectl annotate kafka instana -n instana-kafka strimzi.io/kraft="disabled" --overwriteブローカー用に YAML ファイルを作成します。 例えば、
kafka-broker.yamlブローカー設定では。apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaNodePool metadata: name: kafka labels: strimzi.io/cluster: instana spec: replicas: 3 roles: - broker storage: type: jbod volumes: - id: 0 type: persistent-claim size: 50Gi deleteClaim: true template: pod: tmpDirSizeLimit: 500Miブローカーを展開する。
kubectl apply -f kafka-broker.yaml -n instana-kafkaブローカーポッドが表示される。
コントローラー用に YAML ファイルを作成します。 例えば、コントローラー
kafka-controller.yamlの設定では。apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaNodePool metadata: name: controller labels: strimzi.io/cluster: instana spec: replicas: 3 roles: - controller storage: type: persistent-claim size: 50Gi deleteClaim: true template: pod: tmpDirSizeLimit: 500Miコントローラーを展開する。
kubectl apply -f kafka-controller.yaml -n instana-kafkaこのコマンドを使用してノードプールの状態を確認できます。
kubectl get kafka kafka -n instana-kafka -o jsonpath='{.status.kafkaNodePools}'移行を有効にする。
kubectl annotate kafka instana -n instana-kafka strimzi.io/kraft="migration" --overwriteコントローラーポッドが出現し、ブローカーポッドが再起動してコントローラーと接続します。
移行ステータスを確認する。
kubectl get kafka instana -n instana-kafka -o jsonpath='{.status.kafkaMetadataState}'kafka.yaml 内のレプリカおよびストレージフィールドは、現在無視されます。 これらのフィールドをファイルから削除できます。
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: ... spec: kafka: ... # replicas: 3 ... # storage: # type: jbod # volumes: # - id: 0 # type: persistent-claim # size: 50Gi # deleteClaim: true # zookeeper: # replicas: 3 # storage: # type: persistent-claim # size: 5Gi # deleteClaim: true ...状態が 'KRaftPostMigration' のときにKRaftステータスを有効に設定する。
kubectl annotate kafka instana -n instana-kafka strimzi.io/kraft="enabled" --overwriteブローカーおよびコントローラーポッドが再起動されます。 Kafka そしてZookeeperポッドは終了します。
- 移行ステータスを再度確認してください。
kubectl get kafka instana -n instana-kafka -o jsonpath='{.status.kafkaMetadataState}'州は今すぐクラフトを提示しなければならない。
- デプロイメントを検査します。
kubectl get all -n instana-kafka
出力は、以下の例のようなものになるかもしれません。
NAME READY STATUS RESTARTS AGE
pod/instana-entity-operator-8564975588-mrz2f 3/3 Running 0 15m
pod/instana-kafka-0 1/1 Running 0 16m
pod/instana-kafka-1 1/1 Running 0 16m
pod/instana-kafka-2 1/1 Running 0 16m
pod/instana-controller-0 1/1 Running 0 17m
pod/instana-controller-1 1/1 Running 0 17m
pod/instana-controller-2 1/1 Running 0 17m
pod/strimzi-cluster-operator-cf49c75d8-qm8jq 1/1 Running 0 34m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/instana-kafka-bootstrap ClusterIP 192.168.1.239 <none> 9091/TCP,9092/TCP 16m
service/instana-kafka-brokers ClusterIP None <none> 9090/TCP,9091/TCP,9092/TCP 16m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/instana-entity-operator 1/1 1 1 15m
deployment.apps/strimzi-cluster-operator 1/1 1 1 34m
NAME DESIRED CURRENT READY AGE
replicaset.apps/instana-entity-operator-8564975588 1 1 1 15m
replicaset.apps/strimzi-cluster-operator-cf49c75d8 1 1 1 34m