zookeeper集群化部署
- 中间件
- 2022-07-25
- 22热度
- 0评论
集群规划
Zookeeper_01机器,ip:192.168.88.161
Zookeeper_02机器,ip:192.168.88.162
Zookeeper_03机器,ip:192.168.88.163
myid 文件配置
在 ${dataDir}目录各机器新建 myid 文件
[root@zookeeper_01 ~]# vim software/zookeeper-3.4.14/zkData/myid
1
[root@zookeeper_02 ~]# vim software/zookeeper-3.4.14/zkData/myid
2
[root@zookeeper_03 ~]# vim software/zookeeper-3.4.14/zkData/myid
1
zoo.cfg 文件内容增加 Cluster 配置
##################Cluster##################
# server.A=B:C:D
# A:表示第几号服务器,myid中的数值
# B:此服务器的ip地址,或者hostname
# C:这个服务器与急群众的Leader服务器交换信息的端口,数据往来
# D:在Leader挂掉时,使用此端口来进行重新选举,选出新的Leader,此端口就是来执行选举是服务器相互通信的端口
server.1=192.168.88.161:2888:3888
server.2=192.168.88.162:2888:3888
server.3=192.168.88.163:2888:3888
集群操作
启动第一台服务,并查看状态为 not running
[root@zookeeper_01 zookeeper-3.4.14]# ./bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /root/software/zookeeper-3.4.14/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@zookeeper_01 zookeeper-3.4.14]# ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /root/software/zookeeper-3.4.14/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
启动第二台服务,并查看状态,被选举为了Leader
[root@zookeeper_02 zookeeper-3.4.14]# ./bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /root/software/zookeeper-3.4.14/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@zookeeper_02 zookeeper-3.4.14]# ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /root/software/zookeeper-3.4.14/bin/../conf/zoo.cfg
Mode: leader
再查看第一台机器状态,启动成功了,为 Follower
[root@zookeeper_01 zookeeper-3.4.14]# ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /root/software/zookeeper-3.4.14/bin/../conf/zoo.cfg
Mode: follower
启动第三台机器,并查看状态,为 Follower
[root@zookeeper_03 zookeeper-3.4.14]# ./bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /root/software/zookeeper-3.4.14/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@zookeeper_03 zookeeper-3.4.14]# ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /root/software/zookeeper-3.4.14/bin/../conf/zoo.cfg
Mode: follower
客户端命令行操作
进入客户端
[root@zookeeper_01 bin]# ./zkCli.sh
Connecting to localhost:2181
2020-02-10 21:23:28,612 [myid:] - INFO [main:Environment@100] - Client environment:zookeeper.version=3.4.14-
。。。。。。中间省略各种信息。。。。。
WatchedEvent state:SyncConnected type:None path:null
通过帮助命令,查看所有支持的操作命令
[zk: localhost:2181(CONNECTED) 0] help
ZooKeeper -server host:port cmd args
stat path [watch]
set path data [version]
ls path [watch]
delquota [-n|-b] path
ls2 path [watch]
setAcl path acl
setquota -n|-b val path
history
redo cmdno
printwatches on|off
delete path [version]
sync path
listquota path
rmr path
get path [watch]
create [-s] [-e] path data acl
addauth scheme auth
quit
getAcl path
close
connect host:port
查看当前znode 中所包含的内容
[zk: localhost:2181(CONNECTED) 1] ls /
[zookeeper]
查看当前节点详细数据
[zk: localhost:2181(CONNECTED) 2] ls2 /
[zookeeper]
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x0
cversion = -1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 1
创建两个普通节点
[zk: localhost:2181(CONNECTED) 1] create /china "Shanghai"
Created /china
[zk: localhost:2181(CONNECTED) 2] ls /
[zookeeper, china]
[zk: localhost:2181(CONNECTED) 3] create /china/huadong "Nanjing"
Created /china/huadong
[zk: localhost:2181(CONNECTED) 4] ls /china
[huadong]
获取节点值
[zk: localhost:2181(CONNECTED) 5] get /
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x200000003
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 2
[zk: localhost:2181(CONNECTED) 6] get /china
Shanghai
cZxid = 0x200000003
ctime = Mon Feb 10 21:30:40 CST 2020
mZxid = 0x200000003
mtime = Mon Feb 10 21:30:40 CST 2020
pZxid = 0x200000005
cversion = 1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 8
numChildren = 1
[zk: localhost:2181(CONNECTED) 7] get /china/huadong
Nanjing
cZxid = 0x200000005
ctime = Mon Feb 10 21:31:53 CST 2020
mZxid = 0x200000005
mtime = Mon Feb 10 21:31:53 CST 2020
pZxid = 0x200000005
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 7
numChildren = 0
创建短暂节点,quit客户端之后就消失
[zk: localhost:2181(CONNECTED) 8] create -e /china/huaxi "huanxicun"
Created /china/huaxi
创建带序号的节点
[zk: localhost:2181(CONNECTED) 14] create -s /china/huaxi "xiaguancun"
Created /china/huaxi0000000002
[zk: localhost:2181(CONNECTED) 15] create -s /china/huaxi "xiaguancun"
Created /china/huaxi0000000003
[zk: localhost:2181(CONNECTED) 16] create -s /china/huaxi "xiaguancun"
Created /china/huaxi0000000004
修改节点数据值
[zk: localhost:2181(CONNECTED) 22] get /china/huaxi
huanxicun
cZxid = 0x200000006
ctime = Mon Feb 10 21:35:23 CST 2020
mZxid = 0x200000006
mtime = Mon Feb 10 21:35:23 CST 2020
pZxid = 0x200000006
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x1000001e1080001
dataLength = 9
numChildren = 0
[zk: localhost:2181(CONNECTED) 23] set /china/huaxi "huanancun"
cZxid = 0x200000006
ctime = Mon Feb 10 21:35:23 CST 2020
mZxid = 0x20000000a
mtime = Mon Feb 10 21:39:37 CST 2020
pZxid = 0x200000006
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x1000001e1080001
dataLength = 9
numChildren = 0
[zk: localhost:2181(CONNECTED) 24] get /china/huaxi
huanancun
cZxid = 0x200000006
ctime = Mon Feb 10 21:35:23 CST 2020
mZxid = 0x20000000a
mtime = Mon Feb 10 21:39:37 CST 2020
pZxid = 0x200000006
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x1000001e1080001
dataLength = 9
numChildren = 0
监听结点值变化
###在C机器启用监听,监听只能有效一次
[zk: localhost:2181(CONNECTED) 2] get /japan watch
nailiang
cZxid = 0x20000000d
ctime = Mon Feb 10 21:43:49 CST 2020
mZxid = 0x20000000d
mtime = Mon Feb 10 21:43:49 CST 2020
pZxid = 0x20000000d
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 8
numChildren = 0
###在A机器进行设置
[zk: localhost:2181(CONNECTED) 28] set /japan "daban"
cZxid = 0x20000000d
ctime = Mon Feb 10 21:43:49 CST 2020
mZxid = 0x20000000f
mtime = Mon Feb 10 21:44:13 CST 2020
pZxid = 0x20000000d
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0
###在C机器就监听到了设置
[zk: localhost:2181(CONNECTED) 3]
WATCHER::
WatchedEvent state:SyncConnected type:NodeDataChanged path:/japan
监听节点的子节点的变化,同样只监听一次有效
[zk: localhost:2181(CONNECTED) 3] ls /japan watch
删除节点
[zk: localhost:2181(CONNECTED) 2] delete /japan/c
[zk: localhost:2181(CONNECTED) 3] get /japan/c
Node does not exist: /japan/c
递归删除,rmr
[zk: localhost:2181(CONNECTED) 7] rmr /japan
[zk: localhost:2181(CONNECTED) 8] get /japan
Node does not exist: /japan
查看节点状态,详细信息
[zk: localhost:2181(CONNECTED) 9] stat /china
cZxid = 0x200000003
ctime = Mon Feb 10 21:30:40 CST 2020
mZxid = 0x200000003
mtime = Mon Feb 10 21:30:40 CST 2020
pZxid = 0x200000012
cversion = 6
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 8
numChildren = 4
###################### stat 结构体 ###################
# cZxid:创建节点的事务 zxid
# ctime:znode被创建的毫秒数(从1970年开始)
# mZxid:znode最后更新的事务zxid
# mtime:znode最后修改的毫秒数(从1970年开始)
# pZxid:znode最后更新的子节点zxid
# cversion:znode子节点变化号,znode子节点修改次数
# dataVersion:znode数据变化号
# aclVersion:znode访问控制列表的变化号
# ephemeralOwner:如果是临时节点,这个是znode拥有者的session id,如果不是临时节点则是0
# dataLength:znode的数据长度
# numChildren:znode子节点数量
[zk: localhost:2181(CONNECTED) 9] stat /china
cZxid = 0x200000003
ctime = Mon Feb 10 21:30:40 CST 2020
mZxid = 0x200000003
mtime = Mon Feb 10 21:30:40 CST 2020
pZxid = 0x200000012
cversion = 6
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 8
numChildren = 4