现在我们正在aws ec2服务器上运行kafka,zookeeper也在单独的ec2示例上运行。
我们为kafka和zookeeper创建了一个服务(系统单元),以确保它们在服务器重新启动时启动。
问题是,有时Zookeeper的服务器启动晚了一点,Kafka的经纪人也在那时被终止了。
因此,为了解决这个问题,我们计划在代理端将zookeeper.connection.timeout.ms增加到10分钟这样的高位。这是个好办法吗?
在zookeeper中增加zookeeper.connection.timeout.ms timeout是否有大小效应?
1条答案
按热度按时间gblwokeq1#
增加zookeeper.connection.timeout.ms可能会也可能不会处理您手头上的问题,但检测代理软件故障可能需要更长的时间。
你可以做两件事:1)你必须改变系统来启动Kafka延迟10分钟(你想把时间放在zookeper超时)。2) 我们使用的是hdp集群,它会自动处理这些场景。
以下是kafka常见问题解答的一个解释:在代理软故障期间,例如长gc,它在zookeeper上的会话可能会超时,因此被视为失败。一旦检测到这种情况,kafka将把它当前承载的所有分区领导迁移到其他副本。一旦代理从软故障中恢复,它就只能充当它最初引导的分区的跟随者副本。
要将领导层移回中间人,可以在这里使用首选的领导选举工具。此外,在0.8.2中,还将添加一个新特性,定期触发此功能(此处详细说明)。
要减少zookeeper会话过期,请调整gc或在代理配置中增加zookeeper.session.timeout.ms。
https://cwiki.apache.org/confluence/display/kafka/faq
希望这有帮助