8.2. Kafka の設定
Kafka
カスタムリソースの spec
プロパティーを更新して、Kafka デプロイメントを設定します。
Kafka の設定に加え、ZooKeeper および AMQ Streams Operator の設定を追加することもできます。ロギングやヘルスチェックなどの一般的な設定プロパティーは、コンポーネントごとに独立して設定されます。
特に重要な設定オプションには次のものがあります。
- リソース要求 (CPU/メモリー)
- 最大および最小メモリー割り当ての JVM オプション
- クライアントを Kafka ブローカーに接続するためのリスナー (およびクライアントの認証)
- 認証
- ストレージ
- ラックアウェアネス
- メトリック
- Cruise Control によるクラスターのリバランス
Kafka クラスター設定オプションの詳細は、AMQ Streams カスタムリソースの API リファレンス を参照してください。
Kafka バージョン
Kafka config
の inter.broker.protocol.version
プロパティーは、指定された Kafka バージョン (spec.kafka.version
) によってサポートされるバージョンである必要があります。このプロパティーは、Kafka クラスターで使用される Kafka プロトコルのバージョンを表します。
Kafka 3.0.0 以降、inter.broker.protocol.version
が 3.0
以上に設定されていると、log.message.format.version
オプションは無視されるため、設定する必要はありません。
Kafka バージョンのアップグレード時には、inter.broker.protocol.version
のアップグレードが必要です。詳細は、Upgrading Kafka を参照してください。
TLS 証明書の管理
Kafka をデプロイする場合、Cluster Operator は自動で TLS 証明書の設定および更新を行い、クラスター内での暗号化および認証を有効にします。必要な場合は、更新期間の開始前にクラスターおよびクライアント CA 証明書を手動で更新できます。クラスターおよびクライアント CA 証明書によって使用される鍵を置き換えることもできます。詳細は、CA 証明書の手動更新 および 秘密鍵の置換 を参照してください。
Kafka
カスタムリソース設定の例
- 1
- レプリカノードの数。
- 2
- Kafka バージョン。アップグレード手順に従うと、サポート対象のバージョンに変更できます。
- 3
- ConfigMap を介して直接 (
inline
) または間接 (external
) に追加された Kafka ロガーとログレベル。カスタム Log4j 設定は、ConfigMap のlog4j.properties
キーの下に配置する必要があります。Kafkakafka.root.logger.level
ロガーでは、ログレベルを INFO、ERROR、WARN、TRACE、DEBUG、FATAL または OFF に設定できます。 - 4
- 現在
cpu
およびmemory
である、サポートされるリソースの予約を要求し、消費可能な最大リソースを指定を制限します。 - 5
- コンテナーを再起動するタイミング (liveness) およびコンテナーがトラフィックを許可できるタイミング (readiness) を把握するためのヘルスチェック。
- 6
- Kafka を実行している仮想マシン (VM) のパフォーマンスを最適化するための JVM 設定オプション。
- 7
- 高度なオプション: コンテナーイメージの設定。特別な状況でのみ推奨されます。
- 8
- リスナーは、ブートストラップアドレスでクライアントが Kafka クラスターに接続する方法を設定します。リスナーは、OpenShift クラスター内部または外部からの接続の 内部 または 外部 リスナーとして設定されます。
- 9
- リスナーを識別するための名前。Kafka クラスター内で一意である必要があります。
- 10
- Kafka 内でリスナーによって使用されるポート番号。ポート番号は指定の Kafka クラスター内で一意である必要があります。許可されるポート番号は 9092 以上ですが、すでに Prometheus および JMX によって使用されているポート 9404 および 9999 以外になります。リスナーのタイプによっては、ポート番号は Kafka クライアントに接続するポート番号と同じではない場合があります。
- 11
- リスナーのタイプは、
internal
またはcluster-ip
(ブローカーごとのClusterIP
サービスを使用して Kafka を公開するため) として指定されるか、外部リスナーの場合は、route
(OpenShift のみ)、loadbalancer
、nodeport
またはingress
(Kubernetes のみ) として指定されます。 - 12
- 各リスナーの TLS 暗号化を有効にします。デフォルトは
false
です。TLS 暗号化は、route
およびingress
タイプのリスナーに対してtrue
に設定して有効にする必要があります。 - 13
- クラスターサービス接尾辞 (通常は
cluster.local
) を含む完全修飾 DNS 名が割り当てられているかどうかを定義します。 - 14
- mTLS、SCRAM-SHA-512、またはトークンベースの OAuth 2.0 として指定されるリスナー認証メカニズム。
- 15
- 外部リスナー設定は、
route
、loadbalancer
、またはnodeport
からなど、Kafka クラスターが外部の OpenShift に公開される方法を指定します。 - 16
- 外部 CA (認証局) によって管理される Kafka リスナー証明書のオプションの設定。
brokerCertChainAndKey
は、サーバー証明書および秘密鍵が含まれるSecret
を指定します。TLS による暗号化が有効な任意のリスナーで Kafka リスナー証明書を設定できます。 - 17
- 認可は Kafka ブローカーで簡易、OAUTH2.0、または OPA 認可を有効化します。簡易認可では、
AclAuthorizer
およびStandardAuthorizer
Kafka プラグインが使用されます。 - 18
- ブローカー設定。標準の Apache Kafka 設定が提供されることがありますが、AMQ Streams によって直接管理されないプロパティーに限定されます。
- 19
- 永続ボリュームのストレージサイズは拡張可能で、さらに JBOD ストレージへのボリューム追加が可能です。
- 20
- 永続ストレージには、動的ボリュームプロビジョニングのためのストレージ
id
やclass
など、追加の設定オプションがあります。 - 21
- 異なるラック、データセンター、またはアベイラビリティーゾーンにレプリカを分散させるためのラックアウェアネス設定。
topologyKey
は、ラック ID を含むノードラベルと一致する必要があります。この設定で使用される例では、標準のtopology.kubernetes.io/zone
ラベルを使用するゾーンを指定します。 - 22
- Prometheus メトリックが有効になりました。この例では、メトリクスは Prometheus JMX Exporter (デフォルトのメトリクスエクスポーター) に対して設定されます。
- 23
- Prometheus JMX Exporter 経由で Prometheus 形式のメトリクスを Grafana ダッシュボードにエクスポートするルール。Prometheus JMX Exporter の設定が含まれる ConfigMap を参照することで有効になります。
metricsConfig.valueFrom.configMapKeyRef.key
配下に空のファイルが含まれる ConfigMap の参照を使用して、追加設定なしでメトリックを有効にできます。 - 24
- Kafka 設定と似たプロパティーが含まれる、ZooKeeper 固有の設定。
- 25
- ZooKeeper ノードの数。通常、ZooKeeper クラスターまたはアンサンブルは、一般的に 3、5、7 個の奇数個のノードで実行されます。効果的なクォーラムを維持するには、過半数のノードが利用可能である必要があります。ZooKeeper クラスターでクォーラムを失うと、クライアントへの応答が停止し、Kafka ブローカーが機能しなくなります。AMQ Streams では、ZooKeeper クラスターの安定性および高可用性が重要になります。
- 26
- ZooKeeper ロガーとログレベル。
- 27
- Topic Operator および User Operator の設定を指定する Entity Operator 設定。
- 28
- Entity Operator の TLS サイドカー設定。Entity Operator は、ZooKeeper とのセキュアな通信に TLS サイドカーを使用します。
- 29
- 指定された Topic Operator ロガーおよびログレベル。この例では、
inline
ロギングを使用します。 - 30
- 指定された User Operator ロガーおよびログレベル。
- 31
- Kafka Exporter の設定。Kafka Exporter は、Kafka ブローカーからメトリックデータ、特にコンシューマーラグデータを抽出するためのオプションのコンポーネントです。Kafka Exporter が適切に機能できるようにするには、コンシューマーグループを使用する必要があります。
- 32
- Kafka クラスターの再バランスに使用される Cruise Control のオプションの設定。
8.2.1. Kafka Static Quota プラグインを使用したブローカーへの制限の設定 リンクのコピーリンクがクリップボードにコピーされました!
Kafka Static Quota プラグインを使用して、Kafka クラスターのブローカーにスループットおよびストレージの制限を設定します。Kafka
リソースを設定して、プラグインを有効にし、制限を設定します。バイトレートのしきい値およびストレージクォータを設定して、ブローカーと対話するクライアントに制限を設けることができます。
プロデューサーおよびコンシューマー帯域幅にバイトレートのしきい値を設定できます。制限の合計は、ブローカーにアクセスするすべてのクライアントに分散されます。たとえば、バイトレートのしきい値として 40 MBps ををプロデューサーに設定できます。2 つのプロデューサーが実行されている場合、それぞれのスループットは 20MBps に制限されます。
ストレージクォータは、Kafka ディスクストレージの制限をソフト制限とハード制限間で調整します。この制限は、利用可能なすべてのディスク容量に適用されます。プロデューサーは、ソフト制限とハード制限の間で徐々に遅くなります。制限により、ディスクの使用量が急激に増加しないようにし、容量を超えないようにします。ディスクがいっぱいになると、修正が難しい問題が発生する可能性があります。ハード制限は、ストレージの上限です。
JBOD ストレージの場合、制限はすべてのディスクに適用されます。ブローカーが 2 つの 1 TB ディスクを使用し、クォータが 1.1 TB の場合は、1 つのディスクにいっぱいになり、別のディスクがほぼ空になることがあります。
前提条件
- Kafka クラスターを管理する Cluster Operator が稼働している。
手順
Kafka
リソースのconfig
にプラグインのプロパティーを追加します。プラグインプロパティーは、この設定例のとおりです。
Kafka Static Quota プラグインの設定例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow リソースを更新します。
oc apply -f <kafka_configuration_file>
oc apply -f <kafka_configuration_file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.2.2. ZooKeeper のデフォルト設定値 リンクのコピーリンクがクリップボードにコピーされました!
AMQ Streams を使用して ZooKeeper をデプロイする場合、AMQ Streams によって設定されるデフォルト設定の一部は、標準の ZooKeeper デフォルトとは異なります。これは、AMQ Streams が、OpenShift 環境内で ZooKeeper を実行するために最適化された値を使用して、多数の ZooKeeper プロパティーを設定するためです。
AMQ Streams の主要な ZooKeeper プロパティーのデフォルト設定は次のとおりです。
プロパティー | デフォルト値 | 説明 |
---|---|---|
| 2000 | 1 ティックの長さ (ミリ秒単位)。これによってセッションタイムアウトの長さが決まります。 |
| 5 | ZooKeeper クラスター内で、フォロワーがリーダーに遅れることを許可される最大ティック数。 |
| 2 | ZooKeeper クラスター内でフォロワーがリーダーと同期していなくても許容される最大ティック数。 |
| 1 |
|
| false | ZooKeeper 管理サーバーを無効にするフラグ。管理サーバーは AMQ Streams では使用されません。 |
Kafka
カスタムリソースの Zookeeper.config
としてこれらのデフォルト値を変更すると、ZooKeeper クラスターの動作とパフォーマンスに影響を与える可能性があります。