5.3. Kafka 集群配置
kafka 集群由一个或多个代理组成。要使生产者和消费者能够访问代理内的主题,Kafka 配置必须定义数据如何存储在集群中,以及如何访问数据。您可以将 Kafka 集群配置为在 机架 中使用多个代理节点运行。
- 存储
Kafka 和 ZooKeeper 将数据存储在磁盘上。
AMQ 流需要通过
StorageClass
调配块存储。存储的文件系统格式必须是 XFS 或 EXT4。支持三种类型的数据存储:- 临时(仅适用于开发的建议)
- 临时存储存储实例生命周期的数据。实例重启后数据会丢失。
- persistent
- 持久存储与独立于实例生命周期的长期数据存储相关。
- JBOD(只是一个磁盘绑定,仅适用于 Kafka)
- JBOD 允许您使用多个磁盘将提交日志存储在每个代理中。
如果基础架构支持,可以增加现有 Kafka 集群使用的磁盘容量。
- 监听程序
侦听器配置客户端如何连接到 Kafka 集群。
通过为 Kafka 集群中的每个监听程序指定唯一的名称和端口,您可以配置多个监听程序。
支持以下类型的监听程序:
- 用于 OpenShift 内部访问的内部监听程序
- 用于在 OpenShift 外部访问的外部监听程序
您可以为监听程序启用 TLS 加密,并配置 身份验证。
使用
internal
类型指定内部监听程序。外部监听程序通过指定外部
type
来公开 Kafka:-
route
使用 OpenShift 路由和默认的 HAProxy 路由器 -
loadbalancer
使用负载均衡器服务 -
nodeport
在 OpenShift 节点上使用端口 -
ingress
为 Kubernetes 使用 OpenShift Ingress 和 NGINX Ingress Controller
如果您使用 OAuth 2.0 进行基于令牌的身份验证,您可以将监听程序配置为使用授权服务器。
- 机架感知
- 机架意识是一种配置功能,它可以在 机架 间分发 Kafka 代理 Pod 和主题副本,它代表数据中心中的数据中心或机架或可用性区域。
显示 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 # ...