ZooKeeper的简单集群搭建
1.官网下载ZooKeeper
2.准备
解压后,在目录下创建zkCluster文件夹,并且在zkCluster下面创建zk1,zk2,zk3文件夹,并且每个文件夹下面准备data和log文件夹
mkdir {zk1,zk2,zk3}/{data,log}
在每个data文件夹中创建myid文件,并且在里面输入一个数字即可(定义编号)
3.编辑配置文件
在主目录下的conf文件中,复制zoo_sample.cfg为zoo1.cfg,zoo2.cfg,zoo3.cfg
编辑以下项:
dataDir=/usr/local/src/zookeeper/zkCluster/zk1/data
dataLogDir=/usr/local/src/zookeeper/zkCluster/zk1/log
...
clientPort=2181
server.1=192.168.126.129:2887:3887
server.2=192.168.126.129:2888:3888
server.3=192.168.126.129:2889:3889
注意,每个cfg的clientPort不能相同,dataDir和dataLogDir中的路径要对应
4.启动ZooKeeper
启动命令:
sh zkServer.sh start zoo1.cfg
sh zkServer.sh start zoo2.cfg
sh zkServer.sh start zoo3.cfg
命令说明:
//启动
sh zkServer.sh start zoo1.cfg
//查看状态
sh zkServer.sh status zoo1.cfg
//关闭
sh zkServer.sh stop zoo1.cfg
为什么集群一般都设计为奇数
原因:搭建集群必须满足:剩余节点数>N/2,N代表节点的总数,否则集群就崩溃
1台能否搭建集群:1-1=0>0.5,不成立,1台不能搭建集群
2台能否搭建集群:2-1=1>1,不成立,2台不能搭建集群
3台能否搭建集群:3-1=2>1.5,成立,3台可以搭建集群
结论:搭建集群至少需要3台才可以搭建,3台宕机1台也可以正常工作
4台能否搭建集群:4-1=3>2,成立,4台可以搭建集群
但是:4台不能宕机2台,否则也会崩溃,4台和3台都最多只能宕机1台
结论:奇数台和偶数台最大宕机数量是一样的,所以为了节省开销,一般都是搭建奇数台
宕机后的投票选举
问题1:1234567,依次启动,主机是谁?答案:4
问题2:1234567,依次启动,主机宕机,再次选举的主机是谁?答案:7
问题3:1234567,哪几台永远不能当主机?答案:123