搭建zookeeper伪集群

来源:互联网 发布:淘宝隐形眼镜可靠吗 编辑:程序博客网 时间:2024/06/05 08:49





搭建伪集群

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 datacd confmv 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-clustercp -r  zookeeper-3.4.6 /usr/local/zookeeper-cluster/zookeeper-1cp -r  zookeeper-3.4.6 /usr/local/zookeeper-cluster/zookeeper-2cp -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=2181dataDir=/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=2182dataDir=/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=2183dataDir=/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/dataecho 1 > myidcd /usr/local/zookeeper-cluster/zookeeper-2/dataecho 2 > myidcd /usr/local/zookeeper-cluster/zookeeper-3/dataecho 3 > myid

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

server.1=192.168.31.135:2881:3881server.2=192.168.31.135:2882:3882server.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.



“`

原创粉丝点击