29.2. アノテーションを使用した Kafka およびその他のオペランドのローリング更新の開始
Streams for Apache Kafka は、Cluster Operator を通じて Kafka やその他のオペランドのローリング更新を手動でトリガーするアノテーションの使用をサポートしています。アノテーションを使用して、Kafka、Kafka Connect、MirrorMaker 2、および ZooKeeper クラスターのローリング更新を開始します。
通常、例外的な状況でのみ、特定の Pod や Pod のセットを手動で実行する必要があります。ただし、Pod を直接削除せずに、Cluster Operator 経由でローリング更新を実行すると、以下を確実に行うことができます。
- Pod を手動で削除しても、他の Pod を並行して削除するなどの、同時に行われる Cluster Operator の操作とは競合しません。
- Cluster Operator ロジックによって、In-Sync レプリカの数などの Kafka 設定で指定された内容が処理されます。
29.2.1. Pod 管理のアノテーションを使用したローリング更新の実行
この手順では、Kafka、Kafka Connect、MirrorMaker 2、または ZooKeeper クラスターのローリング更新をトリガーする方法について説明します。更新をトリガーするには、クラスター上で実行されている Pod を管理するアノテーションを StrimziPodSet
に追加します。
前提条件
手動ローリング更新を実行するには、Cluster Operator が実行されている必要があります。Kafka、Kafka Connect、MirrorMaker 2、または ZooKeeper のいずれであっても、更新するコンポーネントのクラスターも実行されている必要があります。
手順
手動で更新する Pod を制御するリソースの名前を見つけます。
たとえば、Kafka クラスターの名前が my-cluster の場合には、対応する名前は my-cluster-kafka および my-cluster-zookeeper になります。my-connect-cluster という名前の Kafka Connect クラスターの場合に、対応する名前は my-connect-cluster-connect です。my-mm2-cluster という名前の MirrorMaker 2 クラスターの場合、対応する名前は my-mm2-cluster-mirrormaker2 です。
oc annotate
を使用して、OpenShift で適切なリソースにアノテーションを付けます。StrimziPodSet のアノテーション
oc annotate strimzipodset <cluster_name>-kafka strimzi.io/manual-rolling-update="true" oc annotate strimzipodset <cluster_name>-zookeeper strimzi.io/manual-rolling-update="true" oc annotate strimzipodset <cluster_name>-connect strimzi.io/manual-rolling-update="true" oc annotate strimzipodset <cluster_name>-mirrormaker2 strimzi.io/manual-rolling-update="true"
- 次の調整が発生するまで待ちます (デフォルトでは 2 分ごとです)。アノテーションが調整プロセスで検出されれば、アノテーションが付いたリソース内のすべての Pod でローリング更新がトリガーされます。すべての Pod のローリング更新が完了すると、アノテーションはリソースから自動的に削除されます。
29.2.2. Pod アノテーションを使用したローリング更新の実行
この手順では、OpenShift Pod
アノテーションを使用して、既存の Kafka、Kafka Connect、MirrorMaker 2、または ZooKeeper クラスターのローリング更新を手動でトリガーする方法について説明します。複数の Pod にアノテーションが付けられると、連続したローリング更新は同じ調整実行内で実行されます。
前提条件
手動ローリング更新を実行するには、Cluster Operator が実行されている必要があります。Kafka、Kafka Connect、MirrorMaker 2、または ZooKeeper のいずれであっても、更新するコンポーネントのクラスターも実行されている必要があります。
使用されるトピックレプリケーション係数に関係なく、Kafka クラスターでローリング更新を実行できます。ただし、更新中に Kafka を稼働し続けるには、以下が必要になります。
- 更新するノードで実行されている高可用性 Kafka クラスターデプロイメント。
高可用性のためにレプリケートされたトピック。
少なくとも 3 つのレプリケーション係数と、レプリケーション係数よりも 1 つ少ない In-Sync レプリカの最小数を指定するトピック設定。
高可用性のためにレプリケートされた Kafka トピック
apiVersion: kafka.strimzi.io/v1beta2 kind: KafkaTopic metadata: name: my-topic labels: strimzi.io/cluster: my-cluster spec: partitions: 1 replicas: 3 config: # ... min.insync.replicas: 2 # ...
手順
手動で更新する
Pod
の名前を見つけます。Pod の命名規則は以下のとおりです。
-
Kafka クラスターの
<cluster_name>-kafka-<index_number>
-
ZooKeeper クラスターの
<cluster_name>-zookeeper-<index_number>
-
Kafka Connect クラスターの
<cluster_name>-connect-<index_number>
-
MirrorMaker 2 クラスターの
<cluster_name>-mirrormaker2-<index_number>
Pod に割り当てられる
<index_number>
は 0 から始まり、レプリカの合計数から 1 を引いた値で終わります。-
Kafka クラスターの
oc annotate
を使用して、OpenShift でPod
リソースにアノテーションを付けます。oc annotate pod <cluster_name>-kafka-<index_number> strimzi.io/manual-rolling-update="true" oc annotate pod <cluster_name>-zookeeper-<index_number> strimzi.io/manual-rolling-update="true" oc annotate pod <cluster_name>-connect-<index_number> strimzi.io/manual-rolling-update="true" oc annotate pod <cluster_name>-mirrormaker2-<index_number> strimzi.io/manual-rolling-update="true"
-
次の調整が発生するまで待ちます (デフォルトでは 2 分ごとです)。アノテーションが調整プロセスで検出されれば、アノテーションが付けられた
Pod
のローリング更新がトリガーされます。Pod のローリング更新が完了すると、アノテーションはPod
から自動的に削除されます。