13.3.2. AMQ Streams の Drain クリーニングのデプロイ
AMQ Streams の Drain クリーニングを、Cluster Operator および Kafka クラスターが稼働している OpenShift クラスターにデプロイします。
前提条件
- AMQ Streams の Drain クリーニングデプロイメントファイルをダウンロードしている。
- 更新する OpenShift ワーカーノードと共に、高可用性 Kafka クラスターデプロイメントが実行されている必要があります。
高可用性のためにトピックがレプリケートされます。
トピック設定は、3 以上のレプリケーション係数を指定し、最小数の In-Sync レプリカをレプリケーション係数より 1 小さく指定します。
高可用性のためにレプリケートされた 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 # ...
ZooKeeper の除外
ZooKeeper を追加しない場合は、AMQ Streams Drain Cleaner Deployment 設定ファイルから --zookeeper コマンドオプションを削除できます。
apiVersion: apps/v1
kind: Deployment
spec:
# ...
template:
spec:
serviceAccountName: strimzi-drain-cleaner
containers:
- name: strimzi-drain-cleaner
# ...
command:
- "/application"
- "-Dquarkus.http.host=0.0.0.0"
- "--kafka"
- "--zookeeper"
# ...
- 1
- このオプションを削除して、ZooKeeper を AMQ Streams の Drain クリーニング操作から除外します。
手順
Kafka
リソースのテンプレート設定を使用して、Kafka デプロイメントの Pod の Disruption Budget(ゼロ)を設定します。Pod の Disruption Budget(停止状態の予算)の指定
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster namespace: myproject spec: kafka: template: podDisruptionBudget: maxUnavailable: 0 # ... zookeeper: template: podDisruptionBudget: maxUnavailable: 0 # ...Pod の Disruption Budget(停止状態の予算)をゼロに減らすと、不要な中断が発生した場合に OpenShift が自動的に Pod をエビクトできなくなるため、Pod は AMQ Streams の Drain クリーニングer によってエビクトされる必要があります。
AMQ Streams の Drain クリーニングを使用して ZooKeeper ノードをドレイン(解放)する場合は、ZooKeeper に同じ設定を追加します。
Kafkaリソースを更新します。oc apply -f <kafka-configuration-file>AMQ Streams Drain Cleaner をデプロイします。
oc apply -f ./install/drain-cleaner/openshift