3.10. 分区重新平衡以实现可用性


分区可以在代理之间复制,以进行容错。对于给定分区,一个代理被选为 leader,并处理所有生成请求(写入日志)。在领导失败时,在其他代理中,分区会遵循其他代理为数据可靠性复制分区数据。

followers 通常不提供客户端,但 机架 配置允许消费者在 Kafka 集群跨越多个数据中心时消耗来自最接近的副本的消息。followers 仅操作从分区领导机复制消息,并允许在领导机失败时进行恢复。恢复需要同步的后续程序。遵循者通过向领导发送获取请求来保持同步,这将按顺序将消息返回到后续消息。如果已在领导消息中发现最近提交的消息,则后续者被视为同步。领导机通过查看后续程序请求的最后一个偏移来检查。不同步的后续者通常不符合领导机失败,除非允许未清理的领导选举机制

您可以在考虑不同步前调整滞后时间:

# ...
replica.lag.time.max.ms=30000
# ...
Copy to Clipboard Toggle word wrap

Lag time 对时间设置了一个上限,以将消息复制到所有同步副本以及生成者必须等待确认的时间。如果后续程序无法获取请求,并捕获指定滞后时间的最新消息,则会从同步的副本中删除。您可以更快地减少检测失败的副本的时间,但这样做可能会增加无法同步的后续者数量。正确的滞后时间值取决于网络延迟和代理磁盘带宽。

当领导分区不再可用时,会选择其中一个同步副本作为新的领导。分区副本列表中的第一个代理称为 首选 领导。默认情况下,根据定期检查领导发行版,为自动分区领导重新平衡启用 Kafka。也就是说,Kafka 会检查首选领导是否为 当前的 领导。重新平衡可确保领导在代理和代理间均匀分布,不会超载。

您可以使用 Cruise Control for AMQ Streams 将副本分配找出在集群中平均平衡负载的代理。其计算需要考虑领导和后续者所经历的不同负载。失败的领导会影响 Kafka 集群的平衡,因为剩余的代理会获得领导额外分区的额外工作。

对于 Cruise Control 发现的分配,实际上,分区需要被首选领导。Kafka 可以自动确保首选领导(在可能的情况下),根据需要更改当前的领导。这样可确保集群处于 Cruise Control 找到的均衡状态。

您可以在重新平衡检查前控制重新平衡检查的频率,以及代理允许的最大 imbalance 百分比。

#...
auto.leader.rebalance.enable=true
leader.imbalance.check.interval.seconds=300
leader.imbalance.per.broker.percentage=10
#...
Copy to Clipboard Toggle word wrap

代理的百分比 leader imbalance 是当前代理为当前领导的分区数量和首选领导的分区数量之间的比例。您可以将百分比设置为 0,以确保首选领导一直被选择,假设它们处于同步状态。

如果检查重新平衡需要更多控制,您可以禁用自动重新平衡。然后,您可以选择何时使用 kafka-leader-election.sh 命令行工具触发重新平衡。

注意

由 AMQ Streams 提供的 Grafana 仪表板显示没有活跃领导的分区和分区的指标。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat