说明:
1)zookeeper集群最少需要三个节点,因为zookeeper可用条件就是最少一半以上的节点可用就表示集群可用,
如果是2个节点,那么挂掉一个,剩下一个也就是一半节点可用,就没有超过半数,集群就不可以用了,
如果是3个节点,就算挂掉一个还剩两个,超过半数可用,满足要求。
2)节点数量最好奇数,因为 4个也只能挂掉一个,三个也只能挂掉一个,
同理5个节点6个节点也最多只能挂掉2个,所以偶数没有太大必要。
zookeeper的集群著有一个leder,其他都是slave或者ovser,
但是每一个都有独立的保存完整数据,不像redis每个主节点各保存一部分。
安装前提:
1,已经安装了zookeer单机
2,已安装了jdk和jdk环境变量(因为zookeeper是一个java编写的项目)
安装大概步骤:
1)创建3个节点目录
2)修改配置文件
3)启动集群
正文:
第一步:创建节点目录
#进入到安装目录
cd /home/comuser/soft/
#创建集群目录
mkdir /home/comuser/soft/zkcluster
#创建三个节点目录
mkdir /home/comuser/soft/zkcluster/z1
mkdir /home/comuser/soft/zkcluster/z2
mkdir /home/comuser/soft/zkcluster/z3
#创建三个节点的data目录
mkdir /home/comuser/soft/zkcluster/z1/data
mkdir /home/comuser/soft/zkcluster/z2/data
mkdir /home/comuser/soft/zkcluster/z3/data
#创建三个节点的log目录
mkdir /home/comuser/soft/zkcluster/z1/log
mkdir /home/comuser/soft/zkcluster/z2/log
mkdir /home/comuser/soft/zkcluster/z3/log
第二步:修改配置文件
1)分别z1,z2,z3创建zoo.cfg文件
#在z1创建zoo.cfg文件
vi zoo.cfg
####在#zoo.cfg添加以下内容:
#心跳时间,心跳间隔2000ms tickTime=2000 #初始化客户端连接次数,不能超过10*2000ms,超过时间客户端请求失败 initLimit=10 #集群中flower服务器(F)跟leader(L)服务器之间的请求和答应最多能容忍的心跳数。 syncLimit=5 #数据和快照位置保存位置 dataDir=/home/comuser/soft/zkcluster/z1/data #日志保存位置 dataLogDir=/home/comuser/soft/zkcluster/z1/log #一个ip所对应的客户机和zk服务器维持连接个数最大值。 maxClientCnxns=5000 #客户端连接端口 clientPort=3181 #集群配置 server.1=192.168.100.10:20881:30881 server.2=192.168.100.10:20882:30882 server.3=192.168.100.10:20883:30883
同样在z2,z3创建zoo.cfg文件,内容同上,修改dataDir,dataLogDir的值,端口分别为3182,3183即可.
2)创建节点编号,执行一下命令即可
echo 1>/home/comuser/soft/zkcluster/z1/data/myid
echo 2>/home/comuser/soft/zkcluster/z2/data/myid
echo 3>/home/comuser/soft/zkcluster/z3/data/myid
第三步:启动集群
因为集群的3个实例挨个启动,所以编写一个脚本,同意启动,关闭,连接等。
1)在zkcluster目录创建启动脚本zkStart.sh
#创建文件
vi zkStart.sh
#文件内容如下:
zkServer.sh start ./z1/zoo.cfg
zkServer.sh start ./z2/zoo.cfg
zkServer.sh start ./z3/zoo.cfg
2)在zkcluster目录创建关闭脚本zkStop.sh
#创建文件
vi zkStop.sh
#文件内容如下:
zkServer.sh stop ./z1/zoo.cfg
zkServer.sh stop ./z2/zoo.cfg
zkServer.sh stop ./z3/zoo.cfg
3)在zkcluster目录创建连接客户端脚本zkClis.sh
#创建连接集群客户端脚本
vi zkClis.sh
#文件内容如下
zkCli.sh -server 192.168.100.10:3181,192.168.100.10:3182,192.168.100.10:3183
4)然后对上面三个文件进行赋权,变成可执行文件
chmod 777 zkStart.sh
chmod 777 zkStop.sh
chmod 777 zkClis.sh
5)启动集群
./zkStart.sh
6)登录集群
#登录集群
./zkClis.sh
#退出集群
quit
7)验证是否正常
#登录节点1,
zkCli.sh -server localhost:3181
#存入数据
create /zk123 123
#退出登录
quit
#登录3节点
zkCli.sh -server localhost:3183
#获取测试数据
ls /zk123
#能回显123表示集群搭建成功