Zookeeper集群搭建 & 启动
Zookeeper解压安装 & 环境变量配置
[root@hadoop001 home]# tar zxvf zookeeper-3.4.9.tar.gz
[root@hadoop001 home]# cd zookeeper-3.4.9
[root@hadoop001 zookeeper-3.4.9]# vi /etc/profile
#set zookeeper environment
export ZOOKEEPER_HOME=/home/zookeeper-3.4.9
export PATH=$PATH:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf
Zookeeper配置
[root@hadoop001 zookeeper-3.4.9]# cd conf
[root@hadoop001 conf]# ll
total 12
-rw-rw-r--. 1 1001 1001 535 Aug 23 2016 configuration.xsl
-rw-rw-r--. 1 1001 1001 2161 Aug 23 2016 log4j.properties
-rw-rw-r--. 1 1001 1001 922 Aug 23 2016 zoo_sample.cfg
[root@hadoop001 conf]# cp zoo_sample.cfg zoo.cfg
配置文件解读:
# Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳
# 即每2秒就做一次心跳同步
tickTime=2000
# Zookeeper有2个角色:follower和leader
# 集群中的follower与leader之间 初始连接 时能容忍的最多心跳数(tickTime的数量)
# 此配置表示,允许follower连接并同步到leader的初始化连接时间,它以tickTime的倍数来表示
# 当超过设置倍数的tickTime时间,则连接失败
initLimit=10
# 集群中的follower与leader之间 请求和应答 之间能容忍的最多心跳数(tickTime的数量)
# 此配置表示,leader与follower之间发送消息, 请求 和 应答 时间长度。
# 如果follower在设置的时间内不能与leader进行通信,那么此follower将被丢弃。
syncLimit=5
# 数据目录
dataDir=/home/zookeeper-3.4.9/data
# 客户端端口
clientPort=2181
# Zookeeper的server节点
# 需要配置ZK的服务端口和ZK的选举端口(因为选举服务和通信服务是分别占用2个端口的)
# 服务端口:2888 选举端口:3888
server.1=192.168.26.191:2888:3888
server.2=192.168.26.192:2888:3888
server.3=192.168.26.193:2888:3888
创建ZK的唯一标识(根据ZK的官网,这个唯一标识只能是myid),即哪台机子是第一个节点、哪台机子是第二个节点..
[root@hadoop001 conf]# cd ..
[root@hadoop001 zookeeper-3.4.9]# mkdir data
[root@hadoop001 zookeeper-3.4.9]# cd data/
[root@hadoop001 data]# echo "1" > myid
分发
[root@hadoop001 home]# scp -r /home/zookeeper-3.4.9 root@192.168.26.192:/home
[root@hadoop001 home]# scp -r /home/zookeeper-3.4.9 root@192.168.26.193:/home
[root@hadoop001 zookeeper-3.4.9]# scp -r /etc/profile root@192.168.26.192:/etc/
[root@hadoop001 zookeeper-3.4.9]# scp -r /etc/profile root@192.168.26.193:/etc/
修改第二台机器myid
[root@hadoop002 ~]# cd /home/zookeeper-3.4.9
[root@hadoop002 zookeeper-3.4.9]# cd data/
[root@hadoop002 data]# vi myid
2
修改第三台机器myid
[root@hadoop003 ~]# cd /home/zookeeper-3.4.9/data/
[root@hadoop003 data]# vi myid
3
启动Zookeeper集群:
[root@hadoop001 zookeeper-3.4.9]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/zookeeper-3.4.9/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@hadoop002 zookeeper-3.4.9]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/zookeeper-3.4.9/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@hadoop003 zookeeper-3.4.9]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/zookeeper-3.4.9/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
查看Zookeeper状态:
[root@hadoop001 zookeeper-3.4.9]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: follower
[root@hadoop002 zookeeper-3.4.9]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: follower
[root@hadoop003 zookeeper-3.4.9]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: leader
使用zkCli.sh验证Zookeeper的数据同步性
数据同步的测试
数据创建:
192.168.26.191机器的操作:
[zk: localhost:2181(CONNECTED) 2] create /my hello
Created /my
[zk: localhost:2181(CONNECTED) 4] get /my
hello
cZxid = 0x200000004
ctime = Mon May 14 02:38:45 CST 2018
mZxid = 0x200000004
mtime = Mon May 14 02:38:45 CST 2018
pZxid = 0x200000004
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0
数据同步到192.168.26.192机器上了:
[zk: localhost:2181(CONNECTED) 1] get /my
hello
cZxid = 0x200000004
ctime = Mon May 14 02:38:45 CST 2018
mZxid = 0x200000004
mtime = Mon May 14 02:38:45 CST 2018
pZxid = 0x200000004
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0
数据同步到192.168.26.193机器上了:
[zk: localhost:2181(CONNECTED) 1] get /my
hello
cZxid = 0x200000004
ctime = Mon May 14 02:38:45 CST 2018
mZxid = 0x200000004
mtime = Mon May 14 02:38:45 CST 2018
pZxid = 0x200000004
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
数据修改:
在192.168.26.193机器上修改数据:
[zk: localhost:2181(CONNECTED) 2] set /my 123
cZxid = 0x200000004
ctime = Mon May 14 02:38:45 CST 2018
mZxid = 0x200000005
mtime = Mon May 14 02:42:17 CST 2018
pZxid = 0x200000004
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
数据同步到192.168.26.192机器上了:
[zk: localhost:2181(CONNECTED) 2] get /my
123
cZxid = 0x200000004
ctime = Mon May 14 02:38:45 CST 2018
mZxid = 0x200000005
mtime = Mon May 14 02:42:17 CST 2018
pZxid = 0x200000004
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
数据同步到192.168.26.191机器上了:
[zk: localhost:2181(CONNECTED) 5] get /my
123
cZxid = 0x200000004
ctime = Mon May 14 02:38:45 CST 2018
mZxid = 0x200000005
mtime = Mon May 14 02:42:17 CST 2018
pZxid = 0x200000004
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0