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 のいずれであっても、更新するコンポーネントのクラスターも実行されている必要があります。

手順

  1. 手動で更新する 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 です。

  2. 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"

  3. 次の調整が発生するまで待ちます (デフォルトでは 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
        # ...

手順

  1. 手動で更新する 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 を引いた値で終わります。

  2. 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"
  3. 次の調整が発生するまで待ちます (デフォルトでは 2 分ごとです)。アノテーションが調整プロセスで検出されれば、アノテーションが付けられた Pod のローリング更新がトリガーされます。Pod のローリング更新が完了すると、アノテーションは Pod から自動的に削除されます。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.