环境:
- 拥有三台服务器,假设三台服务器的Ip地址为 172.18.19.143,172.18.19.15,172.18.19.129
- 开放三台服务器的2287,3387端口
集群搭建步骤:
- 修改zookeeper服务器对应的配置文件:添加
说明:
-
在zk的新建的data目录下新建文件myid,将步骤1中的数字A添加到文件中
-
使用./zkCli.sh -server 172.18.19.143:2181 登录指定的服务器
至此,集群已搭建完成。
zookeeper一致性协议:
zab协议全称为Zookeeper Atomic Broadcat(zk原子广播)。zk是通过zab协议来保证分布式事务的最终一致性。
基于zab协议,zk集群中的角色主要有以下三类:
- Leader: 领导者负责进行投票的发起和决议,更新系统状态。
- Learner:
- Follower: Follower用于接收客户请求并向客户端返回结果,在选举过程中参与投票
- Observer: Observer可以接收客户端连接,将写请求转发给leader节点。但Observer不参与投票过程,只同步leader的状态。Observer的目的是为了扩展系统,以提高读取速度。
- Client:请求发起方
写请求保持一致性过程:
zookeeper的leader选举:
- looking:寻找leader状态。当服务器处于该状态时,它会认为当前集群没有leader,因此需要进入leader选举状态。
-
leading:领导者状态。表明当前服务器角色是leader.
-
following: 跟随者状态。表明当前服务器角色是follower。
- observing: 观察者状态。表明当前服务器角色是Observer。
在集群初始化阶段,当有一台服务器server1启动时,其单独无法进行和完成leader选举,当第二台服务器server2启动时,此时两台机器可以相互通信,每台机器都试图找到leader,于是进入leader选举过程。选举过程如下:
在zk运行期间,leader与非leader服务器各司其职,即便当有非leader服务器宕机或者新加入,此时也不会影响leader,但是一旦leader服务器宕机了,那么整个集群将会暂停对外服务,进入新一轮leader选举,其过程和启动时期的Leader选举过程基本一致。
假设正在运行的有server1,server2,server3三台服务器,当前leader是server2,若某一时刻leader挂了,此时便开始leader选举。选举过程如下:
observer角色特点:
配置步骤:
Original: https://www.cnblogs.com/kongieg/p/13375683.html
Author: kongieg
Title: zookeeper集群
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/586782/
转载文章受原作者版权保护。转载请注明原作者出处!