我们有一个apachekafka集群,有5个代理和3个Zookeeper。zokeeper的版本是3.14.3,代理是2.0.0。我已经尝试了很长一段时间来理解为什么代理会与集群断开连接-我得到了几十个“从x,y到x收缩isr”以及在每个主题的每个分区的fozens“从x扩展isr到x,y”之后的几秒钟。例如,
Nov 17 10:06:06 HOSTNAME kafka-server-start.sh[17252]: [2019-11-17 10:06:06,188] INFO [Partition topicname-14 broker=1] Expanding ISR from 1 to 1,3 (kafka.cluster.Partition)
“扩展”日志在“收缩”日志后7秒到达,每1-5分钟重复一次。
06:54:27-收缩>
06:54:32-扩展
06:55:47-收缩>
06:55:52-扩展
06:57:07-收缩>
06:57:13-扩展
07:01:27-收缩>
07:01:36-扩展
我在zookeepers方面没有发现任何异常的东西,其他日志文件(controller.log、state-change.log、kafka authorizer)上也没有任何异常,而这些文件显示在server.log文件上。
两个代理之间的负载相当平衡,我们最近又添加了两个代理,但问题是在添加之前。没有一个代理看起来过于紧张或者什么的,而且它们都是按配置排列的。
这是代理的server.properties:
ssl.key.password=XXXX
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
ssl.keystore.password=XXXX
advertised.listeners=SASL_SSL://HOSTNAME.FQDN:9092
ssl.keystore.location=/etc/kafka/secrets/kafka.keystore.jks
ssl.keystore.filename=kafka.keystore.jks
zookeeper.connect=A:2181, B:2181, C:2181
security.inter.broker.protocol=SASL_SSL
super.users=User:admin
ssl.truststore.credentials=keystore_creds
jmx.port=9999
ssl.keystore.credentials=keystore_creds
log.roll.hours=24
ssl.truststore.location=/etc/kafka/secrets/kafka.truststore.jks
delete.topic.enable=TRUE
message.max.bytes=2097152
ssl.truststore.password=XXXX
broker.id=1
ssl.key.credentials=keystore_creds
log.dirs=/var/lib/kafka/data
ssl.truststore.filename=kafka.truststore.jks
listeners=SASL_SSL://IPADDRESS:9092
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
log.retention.ms=86400000
log.retention.bytes=536870912000
auto.create.topics.enable=false
zookeeper.session.timeout.ms=10000
num.partitions=18
default.replication.factor=2
数据确实成功地进出集群,我的问题是,每次发生这种情况时,生产商都会与我的服务器断开连接,分区的收缩和扩展必须给系统带来很大的成本,它会导致生产商的队列增长,直到其本地队列满为止。生产者配置为连接到vip,而不是连接到服务器阵列或特定服务器。
让我知道如果有任何其他信息,我可以提供,以帮助研究问题的原因,谢谢
2条答案
按热度按时间46qrfjad1#
看完这个-https://www.confluent.io/blog/hands-free-kafka-replication-a-lesson-in-operational-simplicity/ -我已经将replica.lag.time.max.ms增加到20000(从默认值10000),现在isr扩展和收缩停止
qxsslcnc2#
有许多因素涉及试图增加以下参数
replica.lag.time.max.ms如果跟随者至少在这段时间内没有发送任何获取请求,或者没有消耗到leaders日志结束偏移量,那么leader将从isr中删除跟随者
zookeeper.session.timeout.ms
如果消费者在这段时间内没有心跳到zookeeper,它将被视为死亡,并将发生重新平衡。
减少了主题复制因子,以防高复制因子占用更多的isr时间