我在 Kubernetes 中运行一个由 3 个实例组成的 zookeeper 集成。该集成运行基本正常,并成功为其支持的 Solr 集群提供服务。但有一件事似乎不对劲,结果破坏了我应用程序另一部分(Sitecore)的一些健康检查。
由于某种原因,Solr -> 云 -> ZK 状态页面 -AND-主叫领导者本身的命令报告追随者的数量偶尔变化且不正确:
root@zk-1:/zookeeper-3.4.14# echo mntr | nc localhost 2181
zk_version 3.4.14-4c25d480e66aadd371de8bd2fd8da255ac140bcf, built on 03/06/2019 16:18 GMT
zk_avg_latency 2
zk_max_latency 4
zk_min_latency 1
zk_packets_received 1132
zk_packets_sent 1131
zk_num_alive_connections 5
zk_outstanding_requests 0
zk_server_state leader
zk_znode_count 1405
zk_watch_count 0
zk_ephemerals_count 57
zk_approximate_data_size 4703048
zk_open_file_descriptor_count 42
zk_max_file_descriptor_count 1048576
zk_fsync_threshold_exceed_count 0
zk_followers 5
zk_synced_followers 2
zk_pending_syncs 0
zk_last_proposal_size 92
zk_max_proposal_size 55791
zk_min_proposal_size 32
请注意,报告的关注者数量(zk_followers)并不一致 - 在这个示例中,GUI 报告 4,但命令行报告 5。每次我刷新 GUI 或重新运行 mntr 命令时,这个数字都会上下跳动,通常在 3-6 之间(正确的结果显然应该是 2)
我无法弄清楚所报告的这些额外关注者是什么,因为除了 zk_followers var 之外没有其他输出显示除两个真实关注者之外的任何内容,并且日志似乎没有报告任何不良情况。
动物园配置文件:
root@zk-1:/zookeeper-3.4.14# cat /conf/zoo.cfg
clientPort=2181
dataDir=/store/data
dataLogDir=/store/datalog
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
server.1=zk-0.zk:2888:3888
server.2=0.0.0.0:2888:3888
server.3=zk-2.zk:2888:3888
zooservers.txt:
root@zk-1:/zookeeper-3.4.14# cat /conf/zooservers.txt
server.1=zk-0.zk:2888:3888 server.2=0.0.0.0:2888:3888 server.3=zk-2.zk:2888:3888
如上所述,这似乎不会对整体或 solr 集群造成任何实际问题,只是它未能通过一些容器启动健康检查,从而导致应用程序不一致,并可能导致部分应用程序崩溃。