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

标签 apache-kafka apache-zookeeper

我正在 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/

相关文章:

apache-kafka - 如果在收到创建消息之前收到更新消息,如何处理kafka消息?

python - Kafka AvroConsumer 使用 offsets_for_times 从时间戳消费

azure - Mapr Streams to Azure 的 SSL 握手错误

java - 多次执行的prepare方法

linux - mapr:手动安装mapr-zookeeper-5.0.0

hadoop - HBase程序无法连接到本地主机上的ZooKeeper

hadoop - 运行 accumulo init 时出错

apache-kafka - 在 Kafka 消息中添加自定义 header

apache-kafka - 提高 Kafka Producer 的性能

solr - AWS EC2 实例上的 Zookeeper 和 SolrCloud