zookeeper-3.4.x 选举机制-第一次启动 作者:马育民 • 2021-10-07 10:45 • 阅读:10175 # 说明 假设当前集群中有 **5** 台服务,还没有启动 # 服务器1 启动 [![](https://www.malaoshi.top/upload/pic/zookeeper/QQ20211007104826.png)](https://www.malaoshi.top/upload/pic/zookeeper/QQ20211007104826.png) 发起一次选举,`服务器1` 投自己一票。此时 `服务器1` 票数一票,不够半数以上(3票),选举无法完成,`服务器1` 状态保持为 `LOOKING` **提示:** 在 `/program/zookeeper-3.4.14/conf/zoo.cfg` 配置的所有zk服务器的信息 # 服务器2 启动 [![](https://www.malaoshi.top/upload/pic/zookeeper/QQ20211007105227.png)](https://www.malaoshi.top/upload/pic/zookeeper/QQ20211007105227.png) 1. 再发起一次选举,`服务器1` 和 `服务器2` 分别投自己一票 2. 然后 **交换选票信息**:此时 `服务器1` 发现 `服务器2` 的 `myid` 更大,就投票给 `服务器2`。 3. 此时 `服务器1` 票数 **0票**,`服务器2` 票数 **2票**,没有半数以上结果,选举无法完成,`服务器1`,`服务器2` 状态都是 `LOOKING` # 服务器3 启动 [![](https://www.malaoshi.top/upload/pic/zookeeper/QQ20211007105731.png)](https://www.malaoshi.top/upload/pic/zookeeper/QQ20211007105731.png) 1. 发起一次选举,`服务器1` 、 `服务器2`、 `服务器3` 分别投自己一票 2. 然后 **交换选票信息**:此时 `服务器1` 和 `服务器2`,发现 `服务器3` 的 `myid` 更大,就投票给 `服务器3`。 3. 此次投票结果:`服务器1` 为 **0票**,`服务器2` 为 **0票**,`服务器3` 为 **3票**。 4. 此时 `服务器3` 的票数已经超过半数,`服务器3` 当选 `Leader` ,状态为 `LEADING`。`服务器1`,`服务器2` 更改状态为 `FOLLOWING` # 服务器4 启动 [![](https://www.malaoshi.top/upload/pic/zookeeper/QQ20211007111253.png)](https://www.malaoshi.top/upload/pic/zookeeper/QQ20211007111253.png) 发起一次选举。此时 `服务器1`,`服务器2`,`服务器3` 已经不是 `LOOKING` 状态,不会更改选票信息。 交换选票信息结果:`服务器3` 为3票,`服务器4` 为 1票。此时 `服务器4` 服从多数,就投票给 `服务器3`,并更改状态为 `FOLLOWING`; # 服务器5 启动 [![](https://www.malaoshi.top/upload/pic/zookeeper/QQ20211007111118.png)](https://www.malaoshi.top/upload/pic/zookeeper/QQ20211007111118.png) 同4一样 原文出处:http://malaoshi.top/show_1IX1zsy1RXDm.html