目标:搭建一个zk的集群(5个节点)
zk的下载:
wget http://apache.fayea.com/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz
解压:
tar -xvf zookeeper-3.4.9.tar.gz
可执行脚本简介:
zkCleanup—清理ZooKeeper历史数据,包括事物日志文件和快照数据文件。
zkCli—ZooKeeper的一个简易客户端。
zkEnv—设置ZooK的环境变量。
zkServer—ZooKeeper服务的启动、停止和重启脚本。
添加myid文件
(在zoo.cfg 文件中配置的dataDir=/home/q/www/tools/zk/zk1/data/ 对应的下面):
sudo mkdir /home/q/www/tools/zk/zk3/data
sudo echo 1>/home/q/www/tools/zk/zk1/data/myid
改下配置:复制5份:
#zoo_sample.cfg文件重命名为zoo.cfg
sudo cp zoo_sample.cfg zoo.cfg
sudo cp -r zookeeper-3.4.9 zk1
sudo cp -R zookeeper-3.4.9 zk1
sudo cp -R zookeeper-3.4.9 zk2
sudo cp -R zookeeper-3.4.9 zk3
sudo cp -R zookeeper-3.4.9 zk4
sudo cp -R zookeeper-3.4.9 zk5
修改配置:
zk1 zoo.cfg的配置为:
################# ZK 1 #######################################
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/q/www/tools/zk/zk1/data/
clientPort=2182
maxClientCnxns=60
dataLogDir=/home/q/www/tools/zk/zk1/datalog
server.1=127.0.0.1:2881:3881
server.2=127.0.0.1:2882:3882
server.3=127.0.0.1:2883:3883
server.4=127.0.0.1:2884:3884
server.5=127.0.0.1:2885:3885
################# ZK 2 #######################################
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/q/www/tools/zk/zk2/data/
clientPort=2183
maxClientCnxns=60
dataLogDir=/home/q/www/tools/zk/zk2/datalog
server.1=127.0.0.1:2881:3881
server.2=127.0.0.1:2882:3882
server.3=127.0.0.1:2883:3883
server.4=127.0.0.1:2884:3884
server.5=127.0.0.1:2885:3885
################# ZK 3 #######################################
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/q/www/tools/zk/zk3/data/
clientPort=2184
maxClientCnxns=60
dataLogDir=/home/q/www/tools/zk/zk3/datalog
server.1=127.0.0.1:2881:3881
server.2=127.0.0.1:2882:3882
server.3=127.0.0.1:2883:3883
server.4=127.0.0.1:2884:3884
server.5=127.0.0.1:2885:3885
################# ZK 4 #######################################
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/q/www/tools/zk/zk4/data/
clientPort=2185
maxClientCnxns=60
dataLogDir=/home/q/www/tools/zk/zk4/datalog
server.1=127.0.0.1:2881:3881
server.2=127.0.0.1:2882:3882
server.3=127.0.0.1:2883:3883
server.4=127.0.0.1:2884:3884
server.5=127.0.0.1:2885:3885
################# ZK 5 #######################################
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/q/www/tools/zk/zk5/data/
clientPort=2186
maxClientCnxns=60
dataLogDir=/home/q/www/tools/zk/zk5/datalog
server.1=127.0.0.1:2881:3881
server.2=127.0.0.1:2882:3882
server.3=127.0.0.1:2883:3883
server.4=127.0.0.1:2884:3884
server.5=127.0.0.1:2885:3885
################# ZK config end #######################################
启动集群:
#启动
sudo /home/q/www/tools/zk/zk1/bin/zkServer.sh start
#重启
sudo /home/q/www/tools/zk/zk1/bin/zkServer.sh restart
客户端连接某一个机器:
sudo /home/q/www/tools/zk/zk4/bin/zkCli.sh -server 127.0.0.1:2183
#执行操作
get /
ls /
查看命令:
#查看当前的客户端连接数量,当前的Mode 模式(follower/leader)
echo stat|nc 127.0.0.1 2183
#这样也可以查看当前的zk的 Mode
sudo /home/q/www/tools/zk/zk5/bin/zkServer.sh status
#查看当前的zk配置
echo conf|nc 127.0.0.1 2183
#查看当前zk的状态
echo ruok|nc 127.0.0.1 2183
- 1. 可以通过命令:echo stat|nc 127.0.0.1 2181 来查看哪个节点被选择作为follower或者leader
- 2. 使用echo ruok|nc 127.0.0.1 2181 测试是否启动了该Server,若回复imok表示已经启动。
- 3. echo dump| nc 127.0.0.1 2181 ,列出未经处理的会话和临时节点。
- 4. echo kill | nc 127.0.0.1 2181 ,关掉server
- 5. echo conf | nc 127.0.0.1 2181 ,输出相关服务配置的详细信息。
- 6. echo cons | nc 127.0.0.1 2181 ,列出所有连接到服务器的客户端的完全的连接 / 会话的详细信息。
- 7. echo envi |nc 127.0.0.1 2181 ,输出关于服务环境的详细信息(区别于 conf 命令)。
- 8. echo reqs | nc 127.0.0.1 2181 ,列出未经处理的请求。
- 9. echo wchs | nc 127.0.0.1 2181 ,列出服务器 watch 的详细信息。
- 10. echo wchc | nc 127.0.0.1 2181 ,通过 session 列出服务器 watch 的详细信息,它的输出是一个与 watch 相关的会话的列表。
- 11. echo wchp | nc 127.0.0.1 2181 ,通过路径列出服务器 watch 的详细信息。它输出一个与 session 相关的路径。
实验:
5 台 zk ,stop 两台 能正常工作
sudo /home/q/www/tools/zk/zk1/bin/zkServer.sh stop
sudo /home/q/www/tools/zk/zk4/bin/zkServer.sh stop
执行:
sudo /home/q/www/tools/zk/zk4/bin/zkServer.sh status
输出:
ZooKeeper JMX enabled by default
Using config: /home/q/www/tools/zk/zk4/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
执行:
sudo /home/q/www/tools/zk/zk5/bin/zkServer.sh status
输出:(集群正常存在)
ZooKeeper JMX enabled by default
Using config: /home/q/www/tools/zk/zk5/bin/../conf/zoo.cfg
Mode: follower
继续杀掉一台:
sudo /home/q/www/tools/zk/zk2/bin/zkServer.sh stop
检查:(此时集群彻底失败了,不超过1/2的机器死掉无影响,否则集群会挂掉)
sudo /home/q/www/tools/zk/zk5/bin/zkServer.sh status
输出:
ZooKeeper JMX enabled by default
Using config: /home/q/www/tools/zk/zk5/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
继续执行:(启动zk2)
sudo /home/q/www/tools/zk/zk2/bin/zkServer.sh start
检查zk5:(此时集群恢复了正常)
sudo /home/q/www/tools/zk/zk5/bin/zkServer.sh status
输出:
ZooKeeper JMX enabled by default
Using config: /home/q/www/tools/zk/zk5/bin/../conf/zoo.cfg
Mode: leader