第29章 Streams for Apache Kafka の管理
Streams for Apache Kafka を管理するには、Kafka クラスターと関連リソースのスムーズな実行を維持するためにさまざまなタスクを実行する必要があります。oc
コマンドを使用してリソースのステータスを確認し、ローリング更新のメンテナンス期間を設定し、Streams for Apache Kafka Drain Cleaner や Kafka Static Quota プラグインなどのツールを活用してデプロイメントを効果的に管理します。
29.1. ローリング更新のメンテナンス時間枠
メンテナンス時間枠によって、Kafka および ZooKeeper クラスターの特定のローリング更新が便利な時間に開始されるようにスケジュールできます。
29.1.1. メンテナンス時間枠の概要
ほとんどの場合、Cluster Operator は対応する Kafka
リソースの変更に対応するために Kafka または ZooKeeper クラスターのみを更新します。これにより、Kafka
リソースの変更を適用するタイミングを計画し、Kafka クライアントアプリケーションへの影響を最小限に抑えることができます。
ただし、Kafka
リソースの変更がなくても Kafka および ZooKeeper クラスターの更新が発生することがあります。たとえば、Cluster Operator によって管理される CA (認証局) 証明書が期限切れ直前である場合にローリング再起動の実行が必要になります。
サービスの 可用性 は Pod のローリング再起動による影響を受けないはずですが (ブローカーおよびトピックの設定が適切である場合)、Kafka クライアントアプリケーションの パフォーマンス は影響を受ける可能性があります。メンテナンス時間枠によって、Kafka および ZooKeeper クラスターのこのような自発的な更新が便利な時間に開始されるようにスケジュールできます。メンテナンス時間枠がクラスターに設定されていない場合は、予測できない高負荷が発生する期間など、不便な時間にこのような自発的なローリング更新が行われる可能性があります。
29.1.2. メンテナンス時間枠の定義
Kafka.spec.maintenanceTimeWindows
プロパティーに文字列の配列を入力して、メンテナンス時間枠を設定します。各文字列は、UTC (協定世界時、Coordinated Universal Time) であると解釈される cron 式 です。UTC は実用的にはグリニッジ標準時と同じです。
以下の例では、日、月、火、水、および木曜日の午前 0 時に開始し、午前 1 時 59 分 (UTC) に終わる、単一のメンテナンス時間枠が設定されます。
# ... maintenanceTimeWindows: - "* * 0-1 ? * SUN,MON,TUE,WED,THU *" # ...
実際には、必要な CA 証明書の更新が設定されたメンテナンス時間枠内で完了できるように、Kafka
リソースの Kafka.spec.clusterCa.renewalDays
および Kafka.spec.clientsCa.renewalDays
プロパティーとともにメンテナンス期間を設定する必要があります。
Streams for Apache Kafka は、指定された期間に従ってメンテナンス操作を正確にスケジュールするわけではありません。その代わりに、調整ごとにメンテナンス期間が現在オープンであるかどうかを確認します。これは、特定の時間枠内でのメンテナンス操作の開始が、最大で Cluster Operator の調整が行われる間隔の長さ分、遅れる可能性があることを意味します。したがって、メンテナンス時間枠は最低でもその間隔の長さにする必要があります。
29.1.3. メンテナンス時間枠の設定
サポートされるプロセスによってトリガーされるローリング更新のメンテナンス時間枠を設定できます。
前提条件
- OpenShift クラスター
- Cluster Operator が稼働中である。
手順
Kafka
リソースのmaintenanceTimeWindows
プロパティー を追加または編集します。たとえば、0800 から 1059 までと、1400 から 1559 までのメンテナンスを可能にするには、以下のようにmaintenanceTimeWindows
を設定します。apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: kafka: # ... zookeeper: # ... maintenanceTimeWindows: - "* * 8-10 * * ?" - "* * 14-15 * * ?"
リソースを作成または更新します。
oc apply -f <kafka_configuration_file>