ZooKeeper 详解
一、ZooKeeper 介绍
- 官方网址:https://zookeeper.apache.org/
1.1 ZooKeeper 使用场景
二、ZooKeeper 单机部署
2.1 配置 java 环境
- https://zookeeper.apache.org/doc/r3.4.14/zookeeperAdmin.html#sc_requiredSoftware 解决官方依赖
- 安装步骤
[root@dockerclient ]#cd /usr/local/src
[root@dockerclient src]# wget https://download.oracle.com/otn/java/jdk/8u333-b02/2dee051a5d0647d5be72a7c0abff270e/jdk-8u333-linux-x64.tar.gz?AuthParam=1657380087_122f09a4329860af4ab6a2ebcc9eebbc #下载jdk
[root@dockerclient src]# tar -zxf jdk-8u333-linux-x64.tar.gz
[root@dockerclient src]# mv jdk1.8.0_333 /usr/local/
[root@dockerclient src]# vim /etc/profile
[root@dockerclient src]#
....
export JAVA_HOME="/usr/local/jdk1.8.0_333"
export PATH=$JAVA_HOME/bin:$PATH
[root@dockerclient src]#
[root@dockerclient src]#
[root@dockerclient src]# source /etc/profile
[root@dockerclient src]# java -version
java version "1.8.0_333"
Java(TM) SE Runtime Environment (build 1.8.0_333-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.333-b02, mixed mode)
2.2 部署ZooKeeper
- 官方下载地址:https://archive.apache.org/dist/zookeeper/
- 安装步骤
[root@dockerclient src]# wget https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz --no-check-certificate
[root@dockerclient src]# tar -zxf apache-zookeeper-3.7.1-bin.tar.gz
[root@dockerclient src]# mv apache-zookeeper-3.7.1-bin /apps/zookeeper
[root@dockerclient src]#
[root@dockerclient src]# cd /apps/zookeeper/
[root@dockerclient zookeeper]# cd conf/
[root@dockerclient conf]# ls
configuration.xsl log4j.properties zoo_sample.cfg
[root@dockerclient conf]# mv zoo_sample.cfg zoo.cfg
[root@dockerclient conf]# cat zoo.cfg | grep -Ev "^$|^#" #修改配置文件
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper
clientPort=2181
- 启动ZooKeeper
[root@dockerclient conf]# /apps/zookeeper/bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /apps/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... already running as process 2522.
[root@dockerclient conf]# ps -ef |grep zookeeper
root 2522 1 0 08:40 pts/0 00:00:00 /usr/local/jdk1.8.0_333/bin/java -Dzookeeper.log.dir=/apps/zookeeper/bin/../logs -Dzookeeper.log.file=zookeeper-root-server-dockerclient.log -Dzookeeper.root.logger=INFO,CONSOLE -XX:+HeapDumpOnOutOfMemoryError -XX:OnOutOfMemoryError=kill -9 %p -cp /apps/zookeeper/bin/../zookeeper-server/target/classes:/apps/zookeeper/bin/../build/classes:/apps/zookeeper/bin/../zookeeper-server/target/lib/*.jar:/apps/zookeeper/bin/../build/lib/*.jar:/apps/zookeeper/bin/../lib/zookeeper-prometheus-metrics-3.7.1.jar:/apps/zookeeper/bin/../lib/zookeeper-jute-3.7.1.jar:/apps/zookeeper/bin/../lib/zookeeper-3.7.1.jar:/apps/zookeeper/bin/../lib/snappy-java-1.1.7.7.jar:/apps/zookeeper/bin/../lib/slf4j-reload4j-1.7.35.jar:/apps/zookeeper/bin/../lib/slf4j-api-1.7.35.jar:/apps/zookeeper/bin/../lib/simpleclient_servlet-0.9.0.jar:/apps/zookeeper/bin/../lib/simpleclient_hotspot-0.9.0.jar:/apps/zookeeper/bin/../lib/simpleclient_common-0.9.0.jar:/apps/zookeeper/bin/../lib/simpleclient-0.9.0.jar:/apps/zookeeper/bin/../lib/reload4j-1.2.19.jar:/apps/zookeeper/bin/../lib/netty-transport-native-unix-common-4.1.76.Final.jar:/apps/zookeeper/bin/../lib/netty-transport-native-epoll-4.1.76.Final.jar:/apps/zookeeper/bin/../lib/netty-transport-classes-epoll-4.1.76.Final.jar:/apps/zookeeper/bin/../lib/netty-transport-4.1.76.Final.jar:/apps/zookeeper/bin/../lib/netty-resolver-4.1.76.Final.jar:/apps/zookeeper/bin/../lib/netty-handler-4.1.76.Final.jar:/apps/zookeeper/bin/../lib/netty-common-4.1.76.Final.jar:/apps/zookeeper/bin/../lib/netty-codec-4.1.76.Final.jar:/apps/zookeeper/bin/../lib/netty-buffer-4.1.76.Final.jar:/apps/zookeeper/bin/../lib/metrics-core-4.1.12.1.jar:/apps/zookeeper/bin/../lib/jline-2.14.6.jar:/apps/zookeeper/bin/../lib/jetty-util-ajax-9.4.43.v20210629.jar:/apps/zookeeper/bin/../lib/jetty-util-9.4.43.v20210629.jar:/apps/zookeeper/bin/../lib/jetty-servlet-9.4.43.v20210629.jar:/apps/zookeeper/bin/../lib/jetty-server-9.4.43.v20210629.jar:/apps/zookeeper/bin/../lib/jetty-security-9.4.43.v20210629.jar:/apps/zookeeper/bin/../lib/jetty-io-9.4.43.v20210629.jar:/apps/zookeeper/bin/../lib/jetty-http-9.4.43.v20210629.jar:/apps/zookeeper/bin/../lib/javax.servlet-api-3.1.0.jar:/apps/zookeeper/bin/../lib/jackson-databind-2.13.2.1.jar:/apps/zookeeper/bin/../lib/jackson-core-2.13.2.jar:/apps/zookeeper/bin/../lib/jackson-annotations-2.13.2.jar:/apps/zookeeper/bin/../lib/commons-cli-1.4.jar:/apps/zookeeper/bin/../lib/audience-annotations-0.12.0.jar:/apps/zookeeper/bin/../zookeeper-*.jar:/apps/zookeeper/bin/../zookeeper-server/src/main/resources/lib/*.jar:/apps/zookeeper/bin/../conf: -Xmx1000m -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false org.apache.zookeeper.server.quorum.QuorumPeerMain /apps/zookeeper/bin/../conf/zoo.cfg
- 查看状态
[root@dockerclient conf]# /apps/zookeeper/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /apps/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: standalone
三、ZooKeeper 集群部署
- ZooKeeper 集群用于解决单点和单机性能及数据高可用等问题
- 数据读写:https://www.sohu.com/a/253808097_465221
3.1 ZooKeeper集群架构
3.2 集群角色说明
- leader(领导者)
- 事务请求的唯一调度和处理者,保证集群事务处理的顺序性
- 集群内部各服务器的调度者
- leaner(学习者)
- follower(跟随者)
- 处理客户端非事务请求,转发事务请求给leader服务器
- 参与事务请求Proposal的头片
- 参与leader选举的投票
- observer(观察者)
- follower 和 observer 唯一的区别在于observer 机器不参与leader 的选举过程,也不参与写操作的“过半写成功”策略,因此observer 机器可以在不影响写性能的情况下提升集群的读性能
- Client (客户端)
- 请求发起方
3.3 集群部署
- 各 zookeeper 服务器配置java环境并部署 zookeeper 集群
- 服务器环境: 需要3台服务作为一套集群
- zk 节点1部署
# 按照单机部署,将zookeeper服务部署上去
# 修改配置文件
[root@dockerserver1 conf]# cat zoo.cfg | grep -Ev "^$|^#"
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper
clientPort=2181
server.1=192.168.111.10:2888:3888
server.2=192.168.111.11:2888:3888
server.3=192.168.111.12:2888:3888
[root@dockerserver1 conf]# echo "1" > /data/zookeeper/myid
- zk 节点2部署
# 按照单机部署,将zookeeper服务部署上去
# 修改配置文件
[root@dockerserver1 conf]# cat zoo.cfg | grep -Ev "^$|^#"
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper
clientPort=2181
server.1=192.168.111.10:2888:3888
server.2=192.168.111.11:2888:3888
server.3=192.168.111.12:2888:3888
[root@dockerserver1 conf]# echo "2" > /data/zookeeper/myid
- zk 节点3部署
# 按照单机部署,将zookeeper服务部署上去
# 修改配置文件
[root@dockerserver1 conf]# cat zoo.cfg | grep -Ev "^$|^#"
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper
clientPort=2181
server.1=192.168.111.10:2888:3888
server.2=192.168.111.11:2888:3888
server.3=192.168.111.12:2888:3888
[root@dockerserver1 conf]# echo "3" > /data/zookeeper/myid
3.4 验证服务
- 启动服务
#zk01
[root@dockerserver1 conf]# /apps/zookeeper/bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /apps/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
#zk02
[root@dockerserver2 conf]# /apps/zookeeper/bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /apps/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
#zk03
[root@dockerclient conf]# /apps/zookeeper/bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /apps/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
- 查看状态
#zk01
[root@dockerserver1 conf]# /apps/zookeeper/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /apps/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
#zk02
[root@dockerserver2 conf]# /apps/zookeeper/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /apps/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader
#zk03
[root@dockerclient conf]# /apps/zookeeper/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /apps/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
3.5 zookeeper 集群选举过程
-
节点角色状态说明
- LOOKING : 寻找Leader状态,处于该状态需要进入选举流程
- LEADING : 领导者状态,处于该状态的节点说明,角色已经是Leader
- FOLLOWING :跟随者状态,表示Leader已经选举出来,当前节点角色是follower
- OBSERVER : 观察者状态,表明当前节点角色是observer
- 选举ID
- ZXID
- myid
- Leader 选举过程
- 投票日志
#zk01
[root@dockerserver1 conf]# cat /apps/zookeeper/logs/zookeeper-root-server-dockerserver1.out
2022-07-10 23:25:05,825 [myid:1] - INFO [QuorumPeer[myid=1](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):QuorumPeer@1438] - LOOKING
2022-07-10 23:25:05,825 [myid:1] - INFO [QuorumPeer[myid=1](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):FastLeaderElection@945] - New election. My id = 1, proposed zxid=0x0
2022-07-10 23:25:05,836 [myid:1] - INFO [ListenerHandler-/192.168.111.10:3888:QuorumCnxManager$Listener$ListenerHandler@1071] - 1 is accepting connections now, my election bind port: /192.168.111.10:3888
2022-07-10 23:25:05,838 [myid:1] - INFO [WorkerReceiver[myid=1]:FastLeaderElection$Messenger$WorkerReceiver@390] - Notification: my state:LOOKING; n.sid:1, n.state:LOOKING, n.leader:1, n.round:0x1, n.peerEpoch:0x0, n.zxid:0x0, message format version:0x2, n.config version:0x0
2022-07-10 23:25:13,985 [myid:1] - INFO [QuorumPeer[myid=1](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):QuorumPeer@902] - Peer state changed: following
2022-07-10 23:25:13,985 [myid:1] - INFO [QuorumPeer[myid=1](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):QuorumPeer@1520] - FOLLOWING
2022-07-10 23:25:13,988 [myid:1] - INFO [QuorumPeer[myid=1](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):Learner@130] - leaderConnectDelayDuringRetryMs: 100
#zk02
[root@dockerserver2 conf]# cat /apps/zookeeper/logs/zookeeper-root-server-dockerserver2.out
2022-07-10 23:25:13,757 [myid:2] - INFO [QuorumPeer[myid=2](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):QuorumPeer@1438] - LOOKING
2022-07-10 23:25:13,758 [myid:2] - INFO [QuorumPeer[myid=2](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):FastLeaderElection@945] - New election. My id = 2, proposed zxid=0x0
2022-07-10 23:25:13,761 [myid:2] - INFO [ListenerHandler-/192.168.111.11:3888:QuorumCnxManager$Listener$ListenerHandler@1071] - 2 is accepting connections now, my election bind port: /192.168.111.11:3888
2022-07-10 23:25:13,769 [myid:2] - INFO [WorkerReceiver[myid=2]:FastLeaderElection$Messenger$WorkerReceiver@390] - Notification: my state:LOOKING; n.sid:2, n.state:LOOKING, n.leader:2, n.round:0x1, n.peerEpoch:0x0, n.zxid:0x0, message format version:0x2, n.config version:0x0
2022-07-10 23:25:13,783 [myid:2] - WARN [QuorumConnectionThread-[myid=2]-2:QuorumCnxManager@401] - Cannot open channel to 3 at election address /192.168.111.12:3888
java.net.ConnectException: Connection refused (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394)
at java.net.Socket.connect(Socket.java:606)
at org.apache.zookeeper.server.quorum.QuorumCnxManager.initiateConnection(QuorumCnxManager.java:384)
at org.apache.zookeeper.server.quorum.QuorumCnxManager$QuorumConnectionReqThread.run(QuorumCnxManager.java:458)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:750)
2022-07-10 23:25:13,787 [myid:2] - INFO [WorkerReceiver[myid=2]:FastLeaderElection$Messenger$WorkerReceiver@390] - Notification: my state:LOOKING; n.sid:1, n.state:LOOKING, n.leader:1, n.round:0x1, n.peerEpoch:0x0, n.zxid:0x0, message format version:0x2, n.config version:0x0
2022-07-10 23:25:13,788 [myid:2] - INFO [WorkerReceiver[myid=2]:FastLeaderElection$Messenger$WorkerReceiver@390] - Notification: my state:LOOKING; n.sid:1, n.state:LOOKING, n.leader:2, n.round:0x1, n.peerEpoch:0x0, n.zxid:0x0, message format version:0x2, n.config version:0x0
2022-07-10 23:25:13,989 [myid:2] - INFO [QuorumPeer[myid=2](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):QuorumPeer@902] - Peer state changed: leading
2022-07-10 23:25:13,989 [myid:2] - INFO [QuorumPeer[myid=2](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):QuorumPeer@1532] - LEADING
2022-07-10 23:25:13,991 [myid:2] - INFO [QuorumPeer[myid=2](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):LearnerMaster@47] - zookeeper.leader.maxConcurrentSnapSyncs = 10
#zk03
[root@dockerclient conf]# cat /apps/zookeeper/logs/zookeeper-root-server-dockerclient.out
2022-07-10 23:25:16,315 [myid:3] - INFO [QuorumPeer[myid=3](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):QuorumPeer@1438] - LOOKING
2022-07-10 23:25:16,315 [myid:3] - INFO [QuorumPeer[myid=3](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):FastLeaderElection@945] - New election. My id = 3, proposed zxid=0x0
2022-07-10 23:25:16,326 [myid:3] - INFO [ListenerHandler-/192.168.111.12:3888:QuorumCnxManager$Listener$ListenerHandler@1071] - 3 is accepting connections now, my election bind port: /192.168.111.12:3888
2022-07-10 23:25:16,330 [myid:3] - INFO [WorkerReceiver[myid=3]:FastLeaderElection$Messenger$WorkerReceiver@390] - Notification: my state:LOOKING; n.sid:3, n.state:LOOKING, n.leader:3, n.round:0x1, n.peerEpoch:0x0, n.zxid:0x0, message format version:0x2, n.config version:0x0
2022-07-10 23:25:16,341 [myid:3] - INFO [WorkerReceiver[myid=3]:FastLeaderElection$Messenger$WorkerReceiver@390] - Notification: my state:LOOKING; n.sid:1, n.state:LOOKING, n.leader:2, n.round:0x1, n.peerEpoch:0x0, n.zxid:0x0, message format version:0x2, n.config version:0x0
2022-07-10 23:25:16,341 [myid:3] - INFO [WorkerReceiver[myid=3]:FastLeaderElection$Messenger$WorkerReceiver@390] - Notification: my state:LOOKING; n.sid:2, n.state:LOOKING, n.leader:2, n.round:0x1, n.peerEpoch:0x0, n.zxid:0x0, message format version:0x2, n.config version:0x0
2022-07-10 23:25:16,341 [myid:3] - INFO [WorkerReceiver[myid=3]:FastLeaderElection$Messenger$WorkerReceiver@390] - Notification: my state:LOOKING; n.sid:1, n.state:FOLLOWING, n.leader:2, n.round:0x1, n.peerEpoch:0x1, n.zxid:0x0, message format version:0x2, n.config version:0x0
2022-07-10 23:25:16,344 [myid:3] - INFO [WorkerReceiver[myid=3]:FastLeaderElection$Messenger$WorkerReceiver@390] - Notification: my state:LOOKING; n.sid:2, n.state:LEADING, n.leader:2, n.round:0x1, n.peerEpoch:0x1, n.zxid:0x0, message format version:0x2, n.config version:0x0
2022-07-10 23:25:16,344 [myid:3] - INFO [QuorumPeer[myid=3](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):QuorumPeer@902] - Peer state changed: following
2022-07-10 23:25:16,344 [myid:3] - INFO [QuorumPeer[myid=3](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):QuorumPeer@1520] - FOLLOWING
2022-07-10 23:25:16,347 [myid:3] - INFO [QuorumPeer[myid=3](plain=[0:0:0:0:0:0:0:0]:2181)(secure=disabled):Learner@130] - leaderConnectDelayDuringRetryMs: 100
3.6 Zookeeper 数据增删改查
- 命令行写入数据
[root@dockerserver1 conf]# /apps/zookeeper/bin/zkCli.sh -server 192.168.111.10:2181
Connecting to 192.168.111.10:2181
2022-07-10 23:40:40,384 [myid:] - INFO [main:Environment@98] - Client environment:zookeeper.version=3.7.1-a2fb57c55f8e59cdd76c34b357ad5181df1258d5, built on 2022-05-07 06:45 UTC
2022-07-10 23:40:40,385 [myid:] - INFO [main:Environment@98] - Client environment:host.name=dockerserver1
2022-07-10 23:40:40,385 [myid:] - INFO [main:Environment@98] - Client environment:java.version=1.8.0_333
2022-07-10 23:40:40,385 [myid:] - INFO [main:Environment@98] - Client environment:java.vendor=Oracle Corporation
2022-07-10 23:40:40,385 [myid:] - INFO [main:Environment@98] - Client environment:java.home=/usr/local/jdk1.8.0_333/jre
2022-07-10 23:40:40,385 [myid:] - INFO [main:Environment@98] - Client environment:java.class.path=/apps/zookeeper/bin/../zookeeper-server/target/classes:/apps/zookeeper/bin/../build/classes:/apps/zookeeper/bin/../zookeeper-server/target/lib/*.jar:/apps/zookeeper/bin/../build/lib/*.jar:/apps/zookeeper/bin/../lib/zookeeper-prometheus-metrics-3.7.1.jar:/apps/zookeeper/bin/../lib/zookeeper-jute-3.7.1.jar:/apps/zookeeper/bin/../lib/zookeeper-3.7.1.jar:/apps/zookeeper/bin/../lib/snappy-java-1.1.7.7.jar:/apps/zookeeper/bin/../lib/slf4j-reload4j-1.7.35.jar:/apps/zookeeper/bin/../lib/slf4j-api-1.7.35.jar:/apps/zookeeper/bin/../lib/simpleclient_servlet-0.9.0.jar:/apps/zookeeper/bin/../lib/simpleclient_hotspot-0.9.0.jar:/apps/zookeeper/bin/../lib/simpleclient_common-0.9.0.jar:/apps/zookeeper/bin/../lib/simpleclient-0.9.0.jar:/apps/zookeeper/bin/../lib/reload4j-1.2.19.jar:/apps/zookeeper/bin/../lib/netty-transport-native-unix-common-4.1.76.Final.jar:/apps/zookeeper/bin/../lib/netty-transport-native-epoll-4.1.76.Final.jar:/apps/zookeeper/bin/../lib/netty-transport-classes-epoll-4.1.76.Final.jar:/apps/zookeeper/bin/../lib/netty-transport-4.1.76.Final.jar:/apps/zookeeper/bin/../lib/netty-resolver-4.1.76.Final.jar:/apps/zookeeper/bin/../lib/netty-handler-4.1.76.Final.jar:/apps/zookeeper/bin/../lib/netty-common-4.1.76.Final.jar:/apps/zookeeper/bin/../lib/netty-codec-4.1.76.Final.jar:/apps/zookeeper/bin/../lib/netty-buffer-4.1.76.Final.jar:/apps/zookeeper/bin/../lib/metrics-core-4.1.12.1.jar:/apps/zookeeper/bin/../lib/jline-2.14.6.jar:/apps/zookeeper/bin/../lib/jetty-util-ajax-9.4.43.v20210629.jar:/apps/zookeeper/bin/../lib/jetty-util-9.4.43.v20210629.jar:/apps/zookeeper/bin/../lib/jetty-servlet-9.4.43.v20210629.jar:/apps/zookeeper/bin/../lib/jetty-server-9.4.43.v20210629.jar:/apps/zookeeper/bin/../lib/jetty-security-9.4.43.v20210629.jar:/apps/zookeeper/bin/../lib/jetty-io-9.4.43.v20210629.jar:/apps/zookeeper/bin/../lib/jetty-http-9.4.43.v20210629.jar:/apps/zookeeper/bin/../lib/javax.servlet-api-3.1.0.jar:/apps/zookeeper/bin/../lib/jackson-databind-2.13.2.1.jar:/apps/zookeeper/bin/../lib/jackson-core-2.13.2.jar:/apps/zookeeper/bin/../lib/jackson-annotations-2.13.2.jar:/apps/zookeeper/bin/../lib/commons-cli-1.4.jar:/apps/zookeeper/bin/../lib/audience-annotations-0.12.0.jar:/apps/zookeeper/bin/../zookeeper-*.jar:/apps/zookeeper/bin/../zookeeper-server/src/main/resources/lib/*.jar:/apps/zookeeper/bin/../conf:
2022-07-10 23:40:40,385 [myid:] - INFO [main:Environment@98] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
2022-07-10 23:40:40,385 [myid:] - INFO [main:Environment@98] - Client environment:java.io.tmpdir=/tmp
2022-07-10 23:40:40,385 [myid:] - INFO [main:Environment@98] - Client environment:java.compiler=<NA>
2022-07-10 23:40:40,385 [myid:] - INFO [main:Environment@98] - Client environment:os.name=Linux
2022-07-10 23:40:40,385 [myid:] - INFO [main:Environment@98] - Client environment:os.arch=amd64
2022-07-10 23:40:40,385 [myid:] - INFO [main:Environment@98] - Client environment:os.version=3.10.0-1160.el7.x86_64
2022-07-10 23:40:40,385 [myid:] - INFO [main:Environment@98] - Client environment:user.name=root
2022-07-10 23:40:40,385 [myid:] - INFO [main:Environment@98] - Client environment:user.home=/root
2022-07-10 23:40:40,385 [myid:] - INFO [main:Environment@98] - Client environment:user.dir=/apps/zookeeper/conf
2022-07-10 23:40:40,385 [myid:] - INFO [main:Environment@98] - Client environment:os.memory.free=11MB
2022-07-10 23:40:40,386 [myid:] - INFO [main:Environment@98] - Client environment:os.memory.max=247MB
2022-07-10 23:40:40,386 [myid:] - INFO [main:Environment@98] - Client environment:os.memory.total=15MB
2022-07-10 23:40:40,395 [myid:] - INFO [main:ZooKeeper@657] - Initiating client connection, connectString=192.168.111.10:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@5f5a92bb
2022-07-10 23:40:40,400 [myid:] - INFO [main:X509Util@77] - Setting -D jdk.tls.rejectClientInitiatedRenegotiation=true to disable client-initiated TLS renegotiation
2022-07-10 23:40:40,407 [myid:] - INFO [main:ClientCnxnSocket@239] - jute.maxbuffer value is 1048575 Bytes
2022-07-10 23:40:40,419 [myid:] - INFO [main:ClientCnxn@1735] - zookeeper.request.timeout value is 0. feature enabled=false
Welcome to ZooKeeper!
JLine support is enabled
2022-07-10 23:40:40,462 [myid:192.168.111.10:2181] - INFO [main-SendThread(192.168.111.10:2181):ClientCnxn$SendThread@1171] - Opening socket connection to server dockerserver1/192.168.111.10:2181.
2022-07-10 23:40:40,462 [myid:192.168.111.10:2181] - INFO [main-SendThread(192.168.111.10:2181):ClientCnxn$SendThread@1173] - SASL config status: Will not attempt to authenticate using SASL (unknown error)
2022-07-10 23:40:40,470 [myid:192.168.111.10:2181] - INFO [main-SendThread(192.168.111.10:2181):ClientCnxn$SendThread@1005] - Socket connection established, initiating session, client: /192.168.111.10:52200, server: dockerserver1/192.168.111.10:2181
2022-07-10 23:40:40,514 [myid:192.168.111.10:2181] - INFO [main-SendThread(192.168.111.10:2181):ClientCnxn$SendThread@1446] - Session establishment complete on server dockerserver1/192.168.111.10:2181, session id = 0x1000109253a0000, negotiated timeout = 30000
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
[zk: 192.168.111.10:2181(CONNECTED) 1] create /test "hello" #创建数据
Created /test
[zk: 192.168.111.10:2181(CONNECTED) 2] get /test #获取数据
hello
[zk: 192.168.111.10:2181(CONNECTED) 3] delete /test #删除数据
[zk: 192.168.111.10:2181(CONNECTED) 4] get /test
Node does not exist: /test
#可以登录其他机器验证数据一致性