5.3. Kafka クラスターの設定
Kafka クラスターは、1 つまたは複数のブローカーで構成されます。プロデューサーおよびコンシューマーがブローカー内のトピックにアクセスできるようにするには、Kafka 設定でクラスターへのデータの保存方法、およびデータへのアクセス方法を定義する必要があります。ラック 全体で複数のブローカーノードを使用して Kafka クラスターを実行するように設定できます。
- ストレージ
Kafka および ZooKeeper は、ディスクにデータを格納します。
AMQ Streams は、
StorageClass
でプロビジョニングされるブロックストレージが必要です。ストレージ用のファイルシステム形式は XFS または EXT4 である必要があります。3 種類のデータストレージがサポートされます。- 一時データストレージ (開発用のみで推奨されます)
- 一時ストレージは、インスタンスの有効期間についてのデータを格納します。インスタンスを再起動すると、データは失われます。
- 永続ストレージ
- 永続ストレージは、インスタンスのライフサイクルとは関係なく長期のデータストレージに関連付けられます。
- JBOD (Just a Bunch of Disks、Kafka のみに適しています)
- JBOD では、複数のディスクを使用して各ブローカーにコミットログを保存できます。
既存の Kafka クラスターが使用するディスク容量は、増やすことができます (インフラストラクチャーでサポートされる場合)。
- リスナー
リスナーは、クライアントが Kafka クラスターに接続する方法を設定します。
Kafka クラスター内の各リスナーに一意の名前とポートを指定することで、複数のリスナーを設定できます。
以下のタイプのリスナーがサポートされます。
- OpenShift 内でのアクセスに使用する 内部リスナー
- OpenShift 外からアクセスするときに使用する 外部リスナー
リスナーの TLS 暗号化を有効にし、認証 を設定できます。
内部リスナーは
internal
タイプを使用して指定されます。外部リスナーは、外部用
type
を指定して Kafka を公開します。-
OpenShift ルートおよびデフォルトの HAProxy ルーターを使用する
route
-
ロードバランサーサービスを使用する
loadbalancer
-
OpenShift ノードのポートを使用する
nodeport
-
OpenShift Ingress と NGINX Ingress Controller for Kubernetes を使用する
ingress
トークンベースの認証に OAuth 2.0 を使用している場合は、リスナーが承認サーバーを使用するように設定できます。
- ラックアウェアネス
- ラックアウェアネス (rack awareness) は、Kafka ブローカーの Pod とトピックレプリカを racks 全体に分散する設定機能です。ラックとは、データセンターまたは、データセンター内のラック、アベイラビリティーゾーンを表します。
Kafka 設定の YAML 例
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster spec: kafka: # ... listeners: - name: tls port: 9093 type: internal tls: true authentication: type: tls - name: external1 port: 9094 type: route tls: true authentication: type: tls # ... storage: type: persistent-claim size: 10000Gi # ... rack: topologyKey: topology.kubernetes.io/zone # ...