9.3. 使用 ZooKeeper 配置 Kafka
更新 Kafka
自定义资源的 spec
属性,以使用 ZooKeeper 配置 Kafka 部署。
除了配置 Kafka 外,您可以为 ZooKeeper 和 Apache Kafka operator 的 Streams 添加配置。Kafka 和 Apache Kafka operator 的配置选项与在 KRaft 模式下使用 Kafka 时相同。有关属性的描述,请参阅 第 9.2 节 “在 KRaft 模式中配置 Kafka”。
inter-broker 协议版本(inter.broker.protocol.version
)必须是 Kafka 版本(spec.kafka.version
)支持的版本。如果配置中没有设置 inter-broker 协议版本,Cluster Operator 会将版本更新为使用的 Kafka 版本的默认设置。
如果您也使用节点池,必须在 节点池 配置中指定以下内容:
- 分配给 Kafka 集群中每个节点的角色
- 使用的副本节点数量
- 节点的存储规格
如果在节点池配置中设置,则不需要 Kafka
资源中的等效配置,如 spec.kafka.replicas
。其他可选属性也可以在节点池中设置。
要深入了解 ZooKeeper 集群配置选项,请参阅 Apache Kafka 自定义资源 API 参考流。
使用 ZooKeeper 时的 Kafka
自定义资源配置示例
- 1
- 特定于 ZooKeeper 的配置包含与 Kafka 配置类似的属性。
- 2
- ZooKeeper 节点数量。ZooKeeper 集群通常有奇数个节点,一般为三个、五个或七个。大多数节点都必须可用,才能保持有效的仲裁。如果 ZooKeeper 集群丢失了其仲裁,它将停止响应客户端,并且 Kafka 代理将停止工作。拥有稳定且高度可用的 ZooKeeper 集群对于 Apache Kafka 来说至关重要。
- 3
- ZooKeeper 日志记录器和日志级别。
- 4
- 为保留支持的资源(当前
cpu
和memory
)的请求,以及指定可消耗的最大资源的限制。 - 5
- JVM 配置选项,用于优化运行 ZooKeeper 的虚拟机(VM)的性能。
- 6
- 持久性卷的存储大小可能会增加,并可以添加额外的卷到 JBOD 存储中。
- 7
- 启用 Prometheus 指标。在本例中,为 Prometheus JMX Exporter (默认指标导出器)配置了指标。
- 8
- 通过 Prometheus JMX Exporter 将指标数据导出到 Grafana 仪表板的规则,通过引用包含 Prometheus JMX exporter 配置的 ConfigMap 来启用。您可以使用对
metricsConfig.valueFrom.configMapKeyRef.key
下包含空文件的 ConfigMap 的引用来启用指标。
9.3.1. 默认 ZooKeeper 配置值 复制链接链接已复制到粘贴板!
当使用 Apache Kafka 的 Streams 部署 ZooKeeper 时,Apache Kafka 的 Streams 设置的一些默认配置与标准 ZooKeeper 默认值不同。这是因为 Apache Kafka 的 Streams 设置多个 ZooKeeper 属性,其值在 OpenShift 环境中运行 ZooKeeper。
Apache Kafka Streams 中密钥 ZooKeeper 属性的默认配置如下:
属性 | 默认值 | Description |
---|---|---|
| 2000 | 以毫秒为单位的单空长度,它决定了会话超时的长度。 |
| 5 | 在 ZooKeeper 集群中允许后续者获得的最大 tick 数量。 |
| 2 | 后续允许不与 ZooKeeper 集群中的领导不同步的最大 tick 数量。 |
| 1 |
启用 |
| false | 禁用 ZooKeeper admin 服务器的标记。在 Apache Kafka 中,流不使用 admin 服务器。 |
修改这些默认值作为 Kafka
自定义资源中的 zookeeper.config
可能会影响 ZooKeeper 集群的行为和性能。
9.3.2. 使用注解删除 ZooKeeper 节点 复制链接链接已复制到粘贴板!
此流程描述了如何使用 OpenShift 注解删除现有 ZooKeeper 节点。删除 ZooKeeper 节点包括删除运行 ZooKeeper 的 Pod
和相关的 PersistentVolumeClaim
(如果集群使用持久性存储部署)。删除后,Pod
及其相关的 PersistentVolumeClaim
会自动重新创建。
删除 PersistentVolumeClaim
可能会导致持久性数据丢失,且不能保证集群可用。只有在遇到存储问题时才应执行以下步骤。
先决条件
- 正在运行的 Cluster Operator
流程
查找您要删除的
Pod
的名称。ZooKeeper pod 名为
<cluster_name>-zookeeper-<index_number>
,其中<index_number>
从 0 开始,以总副本数减一结束。例如,my-cluster-zookeeper-0
。使用
oc annotate
注解 OpenShift 中的Pod
资源:oc annotate pod <cluster_name>-zookeeper-<index_number> strimzi.io/delete-pod-and-pvc="true"
oc annotate pod <cluster_name>-zookeeper-<index_number> strimzi.io/delete-pod-and-pvc="true"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 等待下一个协调,当注解的 pod 带有底层持久性卷声明的 pod 将被删除,然后重新创建。