首页/网络/常用端口速查/3888 ZooKeeper Leader 选举

3888 ZooKeeper Leader 选举

ZooKeeper 集群的选举端口:Leader 宕机后节点通过它重新投票,与 2181(客户端)、2888(复制)构成完整三件套。

常用端口速查网络更新于 2026-10-13

ZooKeeper 选举端口是什么

ZooKeeper 集群由 Leader 与若干 Follower 组成,一旦 Leader 失联,其余节点要通过投票重新选主——承载投票报文的默认端口就是 3888。集群还有另外两个关键端口:2181 面向客户端,2888 用于 Leader 与 Follower 之间的数据复制。zoo.cfg 里 server.N=host:2888:3888 一行同时定义后两个端口,三件套缺一不可。

基本信息

服务ZooKeeper election port
协议TCP
默认端口2181 客户端、2888 复制、3888 选举
配置文件zoo.cfg 中 server.N=主机:2888:3888
安全等级仅集群内网,禁止跨安全域暴露

典型使用场景

  • 集群扩容:新增节点时按现有节点格式补齐 server.N 行,保证选举与复制端口一致
  • 跨机房部署:核对各节点防火墙是否同时放行 2888 与 3888
  • 故障排查:写可用性抖动、连接重置时先看是否频繁进入选举
  • 巡检:确认三端口都在监听,且绑定在内网地址上
  • 安全评估:确认 2181 是否对业务网之外开放,ZooKeeper 早期版本无认证

确认三端口与集群状态

确认三端口与集群状态
ss -lntp | grep -E ':(2181|2888|3888)'
# zoo.cfg 片段:三节点集群
# server.1=zk1:2888:3888
# server.2=zk2:2888:3888
# server.3=zk3:2888:3888
echo stat | nc 127.0.0.1 2181     # 返回是否为 leader/follower
echo mntr | nc 127.0.0.1 2181     # 关键运行指标

三端口分工

端口角色故障表现
2181客户端连接与读写客户端报连接失败,业务直接不可用
2888Leader 与 Follower 数据复制写入传播慢,数据可能落后
3888Leader 选举投票集群反复选主,写可用性抖动
版本差异:3.5 之后四字母命令(stat、mntr 等)默认受 4lw.commands.whitelist 限制,若手工测试没有回显,先确认该白名单是否配置,而不是先怀疑端口不通。
集群频繁进入选举时先查网络丢包与 3888 是否被策略拦截;选举无法完成的时间超过会话超时,会连带影响依赖 ZooKeeper 做过期判定的上层服务。

巡检与变更要点

  • 节点扩缩容后核对每台机器的 zoo.cfg 完全一致,端口与编号不要重复
  • 选举端口与复制端口成对放行,跨网段部署时同时确认双向可达
  • 会话超时与心跳参数改动前先在测试集群验证,避免生产频繁误判
  • 保留集群角色变化记录,便于把写可用性异常与选主事件对应起来
排障顺序建议:先看集群角色与选举次数,再看节点间连通性,最后才怀疑配置错误;顺序颠倒会把网络抖动当成配置问题反复改动。

易错点

  • 集群跨机房只放 2181,选举超时导致写可用性反复抖动
  • 扩容时新节点的 server.N 行端口与老节点不一致:新节点能连上却始终参与不了复制
  • 把 2181 暴露到业务网之外:旧版本无认证,可读写 Znodes 并影响上层服务
  • 选举超时与会话超时参数单独调整:只改一侧会造成节点反复判死与被踢出

数据来源与参考

  • Apache ZooKeeper 官方文档:集群端口需求

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌