gpt4 book ai didi

apache-kafka - Kafka 在某些节点上分区不同步

转载 作者:行者123 更新时间:2023-12-04 12:50:52 25 4
gpt4 key购买 nike

我正在 3 个 EC2 实例上运行 Kafka 集群。每个实例运行 kafka (0.11.0.1) 和 zookeeper (3.4)。我的主题配置为每个主题有 20 个分区,ReplicationFactor 为 3。

今天我注意到一些分区拒绝同步到所有三个节点。下面是一个例子:

bin/kafka-topics.sh --zookeeper "10.0.0.1:2181,10.0.0.2:2181,10.0.0.3:2181" --describe --topic prod-decline
Topic:prod-decline PartitionCount:20 ReplicationFactor:3 Configs:
Topic: prod-decline Partition: 0 Leader: 2 Replicas: 1,2,0 Isr: 2
Topic: prod-decline Partition: 1 Leader: 2 Replicas: 2,0,1 Isr: 2
Topic: prod-decline Partition: 2 Leader: 0 Replicas: 0,1,2 Isr: 2,0,1
Topic: prod-decline Partition: 3 Leader: 1 Replicas: 1,0,2 Isr: 2,0,1
Topic: prod-decline Partition: 4 Leader: 2 Replicas: 2,1,0 Isr: 2
Topic: prod-decline Partition: 5 Leader: 2 Replicas: 0,2,1 Isr: 2
Topic: prod-decline Partition: 6 Leader: 2 Replicas: 1,2,0 Isr: 2
Topic: prod-decline Partition: 7 Leader: 2 Replicas: 2,0,1 Isr: 2
Topic: prod-decline Partition: 8 Leader: 0 Replicas: 0,1,2 Isr: 2,0,1
Topic: prod-decline Partition: 9 Leader: 1 Replicas: 1,0,2 Isr: 2,0,1
Topic: prod-decline Partition: 10 Leader: 2 Replicas: 2,1,0 Isr: 2
Topic: prod-decline Partition: 11 Leader: 2 Replicas: 0,2,1 Isr: 2
Topic: prod-decline Partition: 12 Leader: 2 Replicas: 1,2,0 Isr: 2
Topic: prod-decline Partition: 13 Leader: 2 Replicas: 2,0,1 Isr: 2
Topic: prod-decline Partition: 14 Leader: 0 Replicas: 0,1,2 Isr: 2,0,1
Topic: prod-decline Partition: 15 Leader: 1 Replicas: 1,0,2 Isr: 2,0,1
Topic: prod-decline Partition: 16 Leader: 2 Replicas: 2,1,0 Isr: 2
Topic: prod-decline Partition: 17 Leader: 2 Replicas: 0,2,1 Isr: 2
Topic: prod-decline Partition: 18 Leader: 2 Replicas: 1,2,0 Isr: 2
Topic: prod-decline Partition: 19 Leader: 2 Replicas: 2,0,1 Isr: 2

只有节点 2 的所有数据都是同步的。我试过重新启动代理 0 和 1,但它并没有改善情况 - 它使情况变得更糟。我很想重新启动节点 2,但我假设它会导致停机或集群故障,所以我想尽可能避免它。

我在日志中没有看到任何明显的错误,所以我很难弄清楚如何调试这种情况。任何提示将非常感谢。

谢谢!

编辑:一些附加信息...如果我检查节点 2(具有完整数据的节点)上的指标,它确实意识到某些分区未正确复制。:
$>get -d kafka.server -b kafka.server:type=ReplicaManager,name=UnderReplicatedPartitions *
#mbean = kafka.server:type=ReplicaManager,name=UnderReplicatedPartitions:
Value = 930;

节点 0 和 1 没有。他们似乎认为一切都很好:
$>get -d kafka.server -b kafka.server:type=ReplicaManager,name=UnderReplicatedPartitions *
#mbean = kafka.server:type=ReplicaManager,name=UnderReplicatedPartitions:
Value = 0;

这是预期的行为吗?

最佳答案

尝试增加 replica.lag.time.max.ms .

解释是这样的:

如果副本未能发送获取请求的时间超过 replica.lag.time.max.ms ,它被认为是死的,并从 ISR 中删除。

如果副本开始落后于领导者的时间超过 replica.lag.time.max.ms ,那么它被认为太慢并从 ISR 中删除。因此,即使出现流量高峰并且大量消息写入领导者,除非副本始终保持在领导者之后的 replica.lag.time.max.ms,否则它不会在 ISR 中混入和混出。

关于apache-kafka - Kafka 在某些节点上分区不同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51062935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com