搭建zookeeper伪集群





搭建伪集群

1.安装jdk

2.安装rz上传命令

yum install lrzsz

3.上传zookeeper的解压包到虚拟机(手动选择解压包的位置进行上传)

rz

4.使用命令解压上传的压缩包

tar zxvf zookeeper-3.4.6.tar.gz

5.进入解压完成的目录

cd zookeeper-3.4.6

6.创建data目录,将conf下zoo_sample.cfg文件名改为zoo.cfg

mkdir data
cd conf
mv zoo_sample.cfg zoo.cfg

7.返回根目录,为了方便管理,找起来比较容易,建立/usr/local/zookeeper-cluster目录,将解压后的Zookeeper复制到以下三个目录:
/usr/local/zookeeper-cluster/zookeeper-1
/usr/local/zookeeper-cluster/zookeeper-2
/usr/local/zookeeper-cluster/zookeeper-3

mkdir /usr/local/zookeeper-cluster
cp -r  zookeeper-3.4.6 /usr/local/zookeeper-cluster/zookeeper-1
cp -r  zookeeper-3.4.6 /usr/local/zookeeper-cluster/zookeeper-2
cp -r  zookeeper-3.4.6 /usr/local/zookeeper-cluster/zookeeper-3

8.配置每一个Zookeeper 的dataDir(zoo.cfg) clientPort 分别为2181, 2182 , 2183
修改/usr/local/zookeeper-cluster/zookeeper-1/conf/zoo.cfg

vi /usr/local/zookeeper-cluster/zookeeper-1/conf/zoo.cfg
修改:
clientPort=2181
dataDir=/usr/local/zookeeper-cluster/zookeeper-1/data
退出保存:wq

修改/usr/local/zookeeper-cluster/zookeeper-2/conf/zoo.cfg

vi /usr/local/zookeeper-cluster/zookeeper-2/conf/zoo.cfg
修改:
clientPort=2182
dataDir=/usr/local/zookeeper-cluster/zookeeper-2/data
退出保存:wq

修改/usr/local/zookeeper-cluster/zookeeper-3/conf/zoo.cfg

vi /usr/local/zookeeper-cluster/zookeeper-3/conf/zoo.cfg
修改:
clientPort=2183
dataDir=/usr/local/zookeeper-cluster/zookeeper-3/data
退出保存:wq

9.在每个zookeeper的 data 目录下创建一个 myid 文件,内容分别是1、2、3 。这个文件就是记录每个服务器的ID
——-知识点小贴士——
如果你要创建的文本文件内容比较简单,我们可以通过echo 命令快速创建文件 格式为: echo 内容 >文件名 例如我们为第一个zookeeper指定ID为1,则输入命令

cd /usr/local/zookeeper-cluster/zookeeper-1/data
echo 1 > myid

cd /usr/local/zookeeper-cluster/zookeeper-2/data
echo 2 > myid

cd /usr/local/zookeeper-cluster/zookeeper-3/data
echo 3 > myid

10.在每一个zookeeper 的 zoo.cfg配置客户端访问端口(clientPort)和集群服务器IP列表。ip填自己的

server.1=192.168.31.135:2881:3881
server.2=192.168.31.135:2882:3882
server.3=192.168.31.135:2883:3883

11.启动

/usr/local/zookeeper-cluster/zookeeper-1/bin/zkServer.sh start
/usr/local/zookeeper-cluster/zookeeper-2/bin/zkServer.sh start
/usr/local/zookeeper-cluster/zookeeper-3/bin/zkServer.sh start

状态查询

/usr/local/zookeeper-cluster/zookeeper-1/bin/zkServer.sh status
/usr/local/zookeeper-cluster/zookeeper-2/bin/zkServer.sh status
/usr/local/zookeeper-cluster/zookeeper-3/bin/zkServer.sh status

选主流程

当leader崩溃或者leader失去大多数的follower,这时候zk进入恢复模式,恢复模式需要重新选举出一个新的leader,让所有的Server都恢复到一个正确的状态。Zk的选举算法有两种:一种是基于basic paxos实现的,另外一种是基于fast paxos算法实现的。系统默认的选举算法为fast paxos。先介绍basic paxos流程:

1 .选举线程由当前Server发起选举的线程担任,其主要功能是对投票结果进行统计,并选出推荐的Server;

2 .选举线程首先向所有Server发起一次询问(包括自己);

3 .选举线程收到回复后,验证是否是自己发起的询问(验证zxid是否一致),然后获取对方的id(myid),并存储到当前询问对象列表中,最后获取对方提议的leader相关信息(id,zxid),并将这些信息存储到当次选举的投票记录表中;

4.  收到所有Server回复以后,就计算出zxid最大的那个Server,并将这个Server相关信息设置成下一次要投票的Server;

5.  线程将当前zxid最大的Server设置为当前Server要推荐的Leader,如果此时获胜的Server获得n/2 + 1的Server票数, 设置当前推荐的leader为获胜的Server,将根据获胜的Server相关信息设置自己的状态,否则,继续这个过程,直到leader被选举出来。

通过流程分析我们可以得出:要使Leader获得多数Server的支持,则Server总数必须是奇数2n+1,且存活的Server的数目不得少于n+1.



“`

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值