ZooKeeper Starter

What is ZooKeeper?

ZooKeeper是用于维护配置信息,命名,提供分布式同步和提供组服务的集中式服务。 所有这些类型的服务都以某种形式被分布式应用程序使用。 每次实施它们时,都会进行很多工作来修复不可避免的错误和竞争条件。 由于难以实现这类服务,因此应用程序最初通常会跳过它们,这会使它们在存在更改的情况下变得脆弱,并且难以管理。 即使部署正确,这些服务的不同实现也会导致管理复杂。

Docker下安装zookeeper(单机 & 集群)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
[root@recall-gpu-01 ~]# docker pull zookeeper
Using default tag: latest
latest: Pulling from library/zookeeper
a2abf6c4d29d: Pull complete
2bbde5250315: Pull complete
202a34e7968e: Pull complete
4e4231e30efc: Pull complete
707593b95343: Pull complete
b070e6dedb4b: Pull complete
46e5380f3905: Pull complete
8b7e330117e6: Pull complete
Digest: sha256:2c8c5c2db6db22184e197afde13e33dad849af90004c330f20b17282bcd5afd7
Status: Downloaded newer image for zookeeper:latest
docker.io/library/zookeeper:latest

[root@recall-gpu-01 ~]# docker images | grep zoo
zookeeper latest 36c607e7b14d 5 months ago 278MB

[root@recall-gpu-01 ~]# docker inspect 36c607e7b14d [97/638]
[
{
"Id": "sha256:36c607e7b14df07e3976ebe6216db9aabd41ef0884f73d4e6b5ccf5d44d9c195",
"RepoTags": [
"zookeeper:latest"
],
"RepoDigests": [
"zookeeper@sha256:2c8c5c2db6db22184e197afde13e33dad849af90004c330f20b17282bcd5afd7"
],
"Parent": "",
"Comment": "",
"Created": "2021-12-22T18:17:20.28518457Z",
"Container": "086e5b0d9ac03c033e92402c9a0ac04376e6c4530f798549645a0fb834edc180",
"ContainerConfig": {
"Hostname": "086e5b0d9ac0",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"2181/tcp": {},
"2888/tcp": {},
"3888/tcp": {},
"8080/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/openjdk-11/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/apache-zookeeper-3.7.0-bin/bin",
"JAVA_HOME=/usr/local/openjdk-11",
"LANG=C.UTF-8",
"JAVA_VERSION=11.0.13",
"ZOO_CONF_DIR=/conf",
"ZOO_DATA_DIR=/data",
"ZOO_DATA_LOG_DIR=/datalog",
"ZOO_LOG_DIR=/logs",
"ZOO_TICK_TIME=2000",
"ZOO_INIT_LIMIT=5",
"ZOO_SYNC_LIMIT=2",
"ZOO_AUTOPURGE_PURGEINTERVAL=0",
"ZOO_AUTOPURGE_SNAPRETAINCOUNT=3",
"ZOO_MAX_CLIENT_CNXNS=60",
"ZOO_STANDALONE_ENABLED=true",
"ZOO_ADMINSERVER_ENABLED=true",
"ZOOCFGDIR=/conf"
],
"Cmd": [
"/bin/sh",
"-c",
"#(nop) ",
"CMD [\"zkServer.sh\" \"start-foreground\"]"
],
"Image": "sha256:034a6fb5e9094c790fd637c3b8098df0dbeacd0327461859e79f3ca268f4e6c9",
"Volumes": { [41/638]
"/data": {},
"/datalog": {},
"/logs": {}
},
"WorkingDir": "/apache-zookeeper-3.7.0-bin",
"Entrypoint": [
"/docker-entrypoint.sh"
],
"OnBuild": null,
"Labels": {}
},
"DockerVersion": "20.10.7",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"2181/tcp": {},
"2888/tcp": {},
"3888/tcp": {},
"8080/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/openjdk-11/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/apache-zookeeper-3.7.0-bin/bin",
"JAVA_HOME=/usr/local/openjdk-11",
"LANG=C.UTF-8",
"JAVA_VERSION=11.0.13",
"ZOO_CONF_DIR=/conf",
"ZOO_DATA_DIR=/data",
"ZOO_DATA_LOG_DIR=/datalog",
"ZOO_LOG_DIR=/logs",
"ZOO_TICK_TIME=2000",
"ZOO_INIT_LIMIT=5",
"ZOO_SYNC_LIMIT=2",
"ZOO_AUTOPURGE_PURGEINTERVAL=0",
"ZOO_AUTOPURGE_SNAPRETAINCOUNT=3",
"ZOO_MAX_CLIENT_CNXNS=60",
"ZOO_STANDALONE_ENABLED=true",
"ZOO_ADMINSERVER_ENABLED=true",
"ZOOCFGDIR=/conf"
],
"Cmd": [
"zkServer.sh",
"start-foreground"
],
"Image": "sha256:034a6fb5e9094c790fd637c3b8098df0dbeacd0327461859e79f3ca268f4e6c9",
"Volumes": {
"/data": {},
"/datalog": {},
"/logs": {}
},
"WorkingDir": "/apache-zookeeper-3.7.0-bin",
"Entrypoint": [
"/docker-entrypoint.sh"
],
"OnBuild": null,
"Labels": null
},
"Architecture": "amd64",
"Os": "linux",
"Size": 277821092,
"VirtualSize": 277821092,
"GraphDriver": {
"Data": {
"LowerDir": "/data1/dockerdata/docker/overlay2/ad6fa8de40fcfdbafd09ce6d622fb0d36b42247ddb1145e1805cd9f2838b618d/diff:/data1/dockerdata/docker/overlay2/2bf75614290b1a7b85de3ea445d1589801745a65625c18b1fd75573c39e36a1c/diff:/
data1/dockerdata/docker/overlay2/7d4926b65a6a823b4397ec0d006ce88a229d00faf799f7e89f8d0e19324de20d/diff:/data1/dockerdata/docker/overlay2/408c95815c8bb24e0b4c74a5e84886027840ea2cd55709f94dabe18d0ad67f59/diff:/data1/dockerdata/docker/overla
y2/1c89de86db2808d341b460d63c3e03e3b54e2ad458b0f33e0827635461165800/diff:/data1/dockerdata/docker/overlay2/c2d4370b2b2e62632707c8c040824c39782ef4efa0c83d61ed01ad876ba32ae2/diff:/data1/dockerdata/docker/overlay2/ad1feeb83204ad583016f1f1289
c034b06a7c5d1b39f098ed496b188087f4699/diff",
"MergedDir": "/data1/dockerdata/docker/overlay2/2a4f9488f19f451ae1ab2405b0d51d394d4c0e8c36379d30335dd46525dab6e9/merged",
"UpperDir": "/data1/dockerdata/docker/overlay2/2a4f9488f19f451ae1ab2405b0d51d394d4c0e8c36379d30335dd46525dab6e9/diff",
"WorkDir": "/data1/dockerdata/docker/overlay2/2a4f9488f19f451ae1ab2405b0d51d394d4c0e8c36379d30335dd46525dab6e9/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:2edcec3590a4ec7f40cf0743c15d78fb39d8326bc029073b41ef9727da6c851f",
"sha256:afda989d53ee25f18b7810206b39580df30518043d1f34f1d514f665ba8026f4",
"sha256:c3aa798711862658bf26a9c0d64e917e737ddfe89558554b02d22022694f45d7",
"sha256:d0771a598f012fdd2b325314c006c37843f6be2f59d30a862a68c6c17f27e2b8",
"sha256:2490c30bbef3f75a4c1a4874b9eb550f90eec35c4ec098e4734ae6e52d67a6fa",
"sha256:00510f82f2cdfb4a39f994b7461d1bad936998a355f7baac29821ef92a4f5ad4",
"sha256:b2f57731deef9b512cf5cef75f1f373c4869e6e6d9740181f31cad4aa564b890",
"sha256:73d59a6eacae0c15469ec7fa4f219be70cc9a2bda526b181340903d200531cc8"
]
},
"Metadata": {
"LastTagTime": "0001-01-01T00:00:00Z"
}
}
]

[root@recall-gpu-01 ~]# docker run -d -p 2181:2181 --name some-zookeeper zookeeper
1c3a2b477c6fd1aa4f05e1e979f236d1d239d5bcc2bb9b4a89f0e29951f631b0
[root@recall-gpu-01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1c3a2b477c6f zookeeper "/docker-entrypoint.…" 7 seconds ago Up 5 seconds 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, 8080/tcp some-zookeeper

[root@recall-gpu-01 ~]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1413/sshd
tcp 0 0 0.0.0.0:7895 0.0.0.0:* LISTEN 26247/docker-proxy
tcp 0 0 127.0.0.1:8125 0.0.0.0:* LISTEN 15814/netdata
tcp 0 0 0.0.0.0:19999 0.0.0.0:* LISTEN 15814/netdata
tcp 0 0 0.0.0.0:2181 0.0.0.0:* LISTEN 15681/docker-proxy
udp 0 0 0.0.0.0:68 0.0.0.0:* 1159/dhclient
udp 0 0 127.0.0.1:323 0.0.0.0:* 882/chronyd
udp 0 0 127.0.0.1:8125 0.0.0.0:* 15814/netdata
udp6 0 0 ::1:323 :::* 882/chronyd

单机部署

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# docker run -d -p 2181:2181 --name some-zookeeper --restart always zookeeper
[root@recall-gpu-01 ~]# docker exec -it some-zookeeper bash
root@1c3a2b477c6f:/apache-zookeeper-3.7.0-bin# ./bin/zkCli.sh
Connecting to localhost:2181
2021-12-25 04:46:40,847 [myid:] - INFO [main:Environment@98] - Client environment:zookeeper.version=3.7.0-e3704b390a6697bfdf4b0bef79e3da7a4f6bac4b, built on 2021-03-17 09:46 UTC
2021-12-25 04:46:40,849 [myid:] - INFO [main:Environment@98] - Client environment:host.name=1c3a2b477c6f
2021-12-25 04:46:40,850 [myid:] - INFO [main:Environment@98] - Client environment:java.version=11.0.13
2021-12-25 04:46:40,851 [myid:] - INFO [main:Environment@98] - Client environment:java.vendor=Oracle Corporation
2021-12-25 04:46:40,851 [myid:] - INFO [main:Environment@98] - Client environment:java.home=/usr/local/openjdk-11
2021-12-25 04:46:40,852 [myid:] - INFO [main:Environment@98] - Client environment:java.class.path=/apache-zookeeper-3.7.0-bin/bin/../zookeeper-server/target/classes:/apache-zookeeper-3.7.0-bin/bin/../build/classes:/apache-zookeeper-3.7.0-bin/bin/../zookeeper-server/target/lib/*.jar:/apache-zookeeper-3.7.0-bin/bin/../build/lib/*.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/zookeeper-prometheus-metrics-3.7.0.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/zookeeper-jute-3.7.0.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/zookeeper-3.7.0.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/snappy-java-1.1.7.7.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/slf4j-log4j12-1.7.30.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/slf4j-api-1.7.30.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/simpleclient_servlet-0.9.0.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/simpleclient_hotspot-0.9.0.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/simpleclient_common-0.9.0.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/simpleclient-0.9.0.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/netty-transport-native-unix-common-4.1.59.Final.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/netty-transport-native-epoll-4.1.59.Final.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/netty-transport-4.1.59.Final.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/netty-resolver-4.1.59.Final.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/netty-handler-4.1.59.Final.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/netty-common-4.1.59.Final.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/netty-codec-4.1.59.Final.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/netty-buffer-4.1.59.Final.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/metrics-core-4.1.12.1.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/log4j-1.2.17.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/jline-2.14.6.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/jetty-util-ajax-9.4.38.v20210224.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/jetty-util-9.4.38.v20210224.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/jetty-servlet-9.4.38.v20210224.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/jetty-server-9.4.38.v20210224.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/jetty-security-9.4.38.v20210224.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/jetty-io-9.4.38.v20210224.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/jetty-http-9.4.38.v20210224.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/javax.servlet-api-3.1.0.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/jackson-databind-2.10.5.1.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/jackson-core-2.10.5.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/jackson-annotations-2.10.5.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/commons-cli-1.4.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/audience-annotations-0.12.0.jar:/apache-zookeeper-3.7.0-bin/bin/../zookeeper-*.jar:/apache-zookeeper-3.7.0-bin/bin/../zookeeper-server/src/main/resources/lib/*.jar:/conf:
2021-12-25 04:46:40,852 [myid:] - INFO [main:Environment@98] - Client environment:java.library.path=/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib
2021-12-25 04:46:40,852 [myid:] - INFO [main:Environment@98] - Client environment:java.io.tmpdir=/tmp
2021-12-25 04:46:40,852 [myid:] - INFO [main:Environment@98] - Client environment:java.compiler=<NA>
2021-12-25 04:46:40,852 [myid:] - INFO [main:Environment@98] - Client environment:os.name=Linux
2021-12-25 04:46:40,852 [myid:] - INFO [main:Environment@98] - Client environment:os.arch=amd64
2021-12-25 04:46:40,852 [myid:] - INFO [main:Environment@98] - Client environment:os.version=3.10.0-1160.25.1.el7.x86_64
2021-12-25 04:46:40,852 [myid:] - INFO [main:Environment@98] - Client environment:user.name=root
2021-12-25 04:46:40,852 [myid:] - INFO [main:Environment@98] - Client environment:user.home=/root
2021-12-25 04:46:40,852 [myid:] - INFO [main:Environment@98] - Client environment:user.dir=/apache-zookeeper-3.7.0-bin
2021-12-25 04:46:40,852 [myid:] - INFO [main:Environment@98] - Client environment:os.memory.free=247MB
2021-12-25 04:46:40,854 [myid:] - INFO [main:Environment@98] - Client environment:os.memory.max=256MB
2021-12-25 04:46:40,854 [myid:] - INFO [main:Environment@98] - Client environment:os.memory.total=256MB
2021-12-25 04:46:40,858 [myid:] - INFO [main:ZooKeeper@637] - Initiating client connection, connectString=localhost:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@7946e1f4
2021-12-25 04:46:40,861 [myid:] - INFO [main:X509Util@77] - Setting -D jdk.tls.rejectClientInitiatedRenegotiation=true to disable client-initiated TLS renegotiation
2021-12-25 04:46:40,866 [myid:] - INFO [main:ClientCnxnSocket@239] - jute.maxbuffer value is 1048575 Bytes
2021-12-25 04:46:40,874 [myid:] - INFO [main:ClientCnxn@1726] - zookeeper.request.timeout value is 0. feature enabled=false
Welcome to ZooKeeper!
2021-12-25 04:46:40,887 [myid:localhost:2181] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1171] - Opening socket connection to server localhost/127.0.0.1:2181.
2021-12-25 04:46:40,887 [myid:localhost:2181] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1173] - SASL config status: Will not attempt to authenticate using SASL (unknown error)
2021-12-25 04:46:40,896 [myid:localhost:2181] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1005] - Socket connection established, initiating session, client: /127.0.0.1:41648, server: localhost/127.0.0.1:2181
JLine support is enabled
2021-12-25 04:46:40,919 [myid:localhost:2181] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1438] - Session establishment complete on server localhost/127.0.0.1:2181, session id = 0x1012af3f5800000, negotiated timeout = 30000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0]

Macos ZooKeeper GUI 客户端: PrettyZoo

![](https://blogimgs-1256340525.cos.ap-chengdu.myqcloud.com/images/Screen Shot 2021-12-25 at 1.10.52 PM.png)

集群

环境:单台宿主机(192.168.192.128),启动三个zookeeper容器。

这里涉及一个问题,就是Docker容器之间通信的问题,这个很重要!

1
2
3
4
5
6
[root@recall-gpu-01 ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
cf4c40eade1c bridge bridge local
c8279f8d143e host host local
e9fcc824e3eb minikube bridge local
058a268a86b9 none null local

Docker有三种网络模式,bridge、host、none,在你创建容器的时候,不指定–network默认是bridge。

bridge:为每一个容器分配IP,并将容器连接到一个docker0虚拟网桥,通过docker0网桥与宿主机通信。也就是说,此模式下,你不能用宿主机的IP+容器映射端口来进行Docker容器之间的通信。

host:容器不会虚拟自己的网卡,配置自己的IP,而是使用宿主机的IP和端口。这样一来,Docker容器之间的通信就可以用宿主机的IP+容器映射端口

none:无网络。

=====================================================

先在本地创建目录:

1
2
3
4
5
6
7
8
9
[root@recall-gpu-01 ~]# mkdir /usr/local/zookeeper-cluster
[root@recall-gpu-01 ~]# mkdir -p /usr/local/zookeeper-cluster/node1
[root@recall-gpu-01 ~]# mkdir -p /usr/local/zookeeper-cluster/node2
[root@recall-gpu-01 ~]# mkdir -p /usr/local/zookeeper-cluster/node3
[root@recall-gpu-01 ~]# ll /usr/local/zookeeper-cluster/
total 12
drwxr-xr-x 2 root root 4096 Dec 25 13:15 node1
drwxr-xr-x 2 root root 4096 Dec 25 13:15 node2
drwxr-xr-x 2 root root 4096 Dec 25 13:15 node3

创建zookeeper网络

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
[root@recall-gpu-01 ~]# docker network create --driver bridge zoonet
904d7bb34961d58c371a98cf3a39e87c191befd3f297b49cdac1df6c3443891d
[root@recall-gpu-01 ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
cf4c40eade1c bridge bridge local
c8279f8d143e host host local
e9fcc824e3eb minikube bridge local
058a268a86b9 none null local
904d7bb34961 zoonet bridge local
[root@recall-gpu-01 ~]# docker network inspect 904d7bb34961
[
{
"Name": "zoonet",
"Id": "904d7bb34961d58c371a98cf3a39e87c191befd3f297b49cdac1df6c3443891d",
"Created": "2021-12-25T14:46:42.761330747+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "10.11.11.0/16",
"Gateway": "10.11.11.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {},
"Labels": {}
}
]

然后我们修改一下zookeeper容器的创建命令。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ docker run -d -p 2181:2181 --name zookeeper_node1 --privileged --network zoonet \
#--ip 10.11.11.2 \
-v /usr/local/zookeeper-cluster/node1/volumes/data:/data \
-v /usr/local/zookeeper-cluster/node1/volumes/datalog:/datalog \
-v /usr/local/zookeeper-cluster/node1/volumes/logs:/logs \
-e ZOO_MY_ID=1 \
-e "ZOO_SERVERS=server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181" zookeeper:latest

# docker run -d -p 2182:2181 --name zookeeper_node2 --privileged --network zoonet --ip 10.11.11.3 \
-v /usr/local/zookeeper-cluster/node2/volumes/data:/data \
-v /usr/local/zookeeper-cluster/node2/volumes/datalog:/datalog \
-v /usr/local/zookeeper-cluster/node2/volumes/logs:/logs \
-e ZOO_MY_ID=2 \
-e "ZOO_SERVERS=server.1=10.11.11.2:2888:3888;2181 server.2=10.11.11.3:2888:3888;2181 server.3=10.11.11.4:2888:3888;2181" zookeeper:latest

# docker run -d -p 2183:2181 --name zookeeper_node3 --privileged --network zoonet --ip 10.11.11.4 \
-v /usr/local/zookeeper-cluster/node3/volumes/data:/data \
-v /usr/local/zookeeper-cluster/node3/volumes/datalog:/datalog \
-v /usr/local/zookeeper-cluster/node3/volumes/logs:/logs \
-e ZOO_MY_ID=3 \
-e "ZOO_SERVERS=server.1=10.11.11.2:2888:3888;2181 server.2=10.11.11.3:2888:3888;2181 server.3=10.11.11.4:2888:3888;2181" zookeeper:latest

\1. 由于2888 、3888 不需要暴露,就不映射了;

\2. 指定自己的网络,并指定IP;

\3. 每个容器之间环境是隔离的,所以容器内所用的端口一样:2181/2888/3888

img

运行结果:

1
2
3
4
5
[root@recall-gpu-01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3d8ef9566284 zookeeper:latest "/docker-entrypoint.…" 14 seconds ago Up 12 seconds 2888/tcp, 3888/tcp, 8080/tcp, 0.0.0.0:2183->2181/tcp zookeeper_node3
4b51b7e64619 zookeeper:latest "/docker-entrypoint.…" 21 seconds ago Up 19 seconds 2888/tcp, 3888/tcp, 8080/tcp, 0.0.0.0:2182->2181/tcp zookeeper_node2
2c3508bc5d49 zookeeper:latest "/docker-entrypoint.…" 28 seconds ago Up 26 seconds 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, 8080/tcp zookeeper_node1

进入容器内部验证一下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@recall-gpu-01 ~]# docker exec -it zookeeper_node1 bash
root@2c3508bc5d49:/apache-zookeeper-3.7.0-bin# ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
root@2c3508bc5d49:/apache-zookeeper-3.7.0-bin#
exit
[root@recall-gpu-01 ~]# docker exec -it zookeeper_node2 bash
root@4b51b7e64619:/apache-zookeeper-3.7.0-bin# ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader
root@4b51b7e64619:/apache-zookeeper-3.7.0-bin#
exit
[root@recall-gpu-01 ~]# docker exec -it zookeeper_node3 bash
root@3d8ef9566284:/apache-zookeeper-3.7.0-bin# ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower

再验证一下创建节点:

1
2
3
4
5
# docker run -it \
--rm \
--network host \
zookeeper:latest /bin/bash
root@deeprec02:/apache-zookeeper-3.7.0-bin# ./bin/zkCli.sh -server 10.11.11.2:2181,10.11.11.3:2182,10.11.11.4:2183

集群安装方式二:通过docker stack deploy或docker-compose安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 安装docker-compose
$ curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose

$ docker-compose --version
Docker Compose version v2.6.0

# 卸载的话
# rm /usr/local/bin/docker-compose
$ docker version
Client: Docker Engine - Community
Version: 20.10.8
API version: 1.41
Go version: go1.16.6
Git commit: 3967b7d
Built: Fri Jul 30 19:55:49 2021
OS/Arch: linux/amd64
Context: default
Experimental: true

Server: Docker Engine - Community
Engine:
Version: 20.10.8
API version: 1.41 (minimum version 1.12)
Go version: go1.16.6
Git commit: 75249d8
Built: Fri Jul 30 19:54:13 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.4.3
GitCommit: 269548fa27e0089a8b8278fc4fc781d7f65a939b
runc:
Version: 1.0.0-rc92
GitCommit: ff819c7e9184c13b7c2607fe6c30ae19403a7aff
docker-init:
Version: 0.19.0
GitCommit: de40ad0

开始配置,新建三个挂载目录

1
2
3
[root@localhost admin]# mkdir -p /usr/local/zookeeper-cluster/node4
[root@localhost admin]# mkdir -p /usr/local/zookeeper-cluster/node5
[root@localhost admin]# mkdir -p /usr/local/zookeeper-cluster/node6

新建任意目录,然后在里面新建一个文件

1
2
3
[root@localhost admin]# c
[root@localhost admin]# cd DockerComposeFolder/
[root@localhost DockerComposeFolder]# vim docker-compose.yml

文件内容如下:(自定义网络见上面)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
version: "3.8"

services:
zoo1:
image: zookeeper
# restart: always
privileged: true
hostname: zoo1
ports:
- 2181:2181
volumes: # 挂载数据
- /usr/local/zookeeper-cluster/node4/data:/data
- /usr/local/zookeeper-cluster/node4/datalog:/datalog
environment:
ZOO_MY_ID: 4
ZOO_SERVERS: server.4=0.0.0.0:2888:3888;2181 server.5=zoo2:2888:3888;2181 server.6=zoo3:2888:3888;2181
networks:
default:
ipv4_address: 10.11.11.14

zoo2:
image: zookeeper
# restart: always
privileged: true
hostname: zoo2
ports:
- 2182:2181
volumes: # 挂载数据
- /usr/local/zookeeper-cluster/node5/data:/data
- /usr/local/zookeeper-cluster/node5/datalog:/datalog
environment:
ZOO_MY_ID: 5
ZOO_SERVERS: server.4=zoo1:2888:3888;2181 server.5=0.0.0.0:2888:3888;2181 server.6=zoo3:2888:3888;2181
networks:
default:
ipv4_address: 10.11.11.15

zoo3:
image: zookeeper
# restart: always
privileged: true
hostname: zoo3
ports:
- 2183:2181
volumes: # 挂载数据
- /usr/local/zookeeper-cluster/node6/data:/data
- /usr/local/zookeeper-cluster/node6/datalog:/datalog
environment:
ZOO_MY_ID: 6
ZOO_SERVERS: server.4=zoo1:2888:3888;2181 server.5=zoo2:2888:3888;2181 server.6=0.0.0.0:2888:3888;2181
networks:
default:
ipv4_address: 10.11.11.16

networks: # 自定义网络
default:
external:
name: zoonet

然后执行(-d后台启动)

1
2
3
4
5
6
$ docker-compose -f docker-compose.yml up -d
WARN[0000] network default: network.external.name is deprecated in favor of network.name
[+] Running 3/3
⠿ Container dockercomposefolder-zoo3-1 Started 1.8s
⠿ Container dockercomposefolder-zoo2-1 Started 1.9s
⠿ Container dockercomposefolder-zoo1-1 Started 1.6s

查看已启动的容器

1
2
3
4
5
[root@recall-gpu-01 DockerComposeFolder]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5102f295e451 zookeeper "/docker-entrypoint.…" About a minute ago Up About a minute 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, 8080/tcp dockercomposefolder-zoo1-1
895bf30ed76a zookeeper "/docker-entrypoint.…" About a minute ago Up About a minute 2888/tcp, 3888/tcp, 8080/tcp, 0.0.0.0:2183->2181/tcp dockercomposefolder-zoo3-1
8a90f2ceaf1a zookeeper "/docker-entrypoint.…" About a minute ago Up About a minute 2888/tcp, 3888/tcp, 8080/tcp, 0.0.0.0:2182->2181/tcp dockercomposefolder-zoo2-1

进入一个容器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
[root@recall-gpu-01 DockerComposeFolder]# docker exec -it dockercomposefolder-zoo1-1 bash
root@zoo1:/apache-zookeeper-3.7.0-bin# ls
LICENSE.txt NOTICE.txt README.md README_packaging.md bin conf docs lib
root@zoo1:/apache-zookeeper-3.7.0-bin# ./bin/zkCli.sh
Connecting to localhost:2181
2021-12-25 07:31:07,554 [myid:] - INFO [main:Environment@98] - Client environment:zookeeper.version=3.7.0-e3704b390a6697bfdf4b0bef79e3da7a4f6bac4b, built on 2021-03-17 09:46 UTC
2021-12-25 07:31:07,557 [myid:] - INFO [main:Environment@98] - Client environment:host.name=zoo1
2021-12-25 07:31:07,557 [myid:] - INFO [main:Environment@98] - Client environment:java.version=11.0.13
2021-12-25 07:31:07,559 [myid:] - INFO [main:Environment@98] - Client environment:java.vendor=Oracle Corporation
2021-12-25 07:31:07,559 [myid:] - INFO [main:Environment@98] - Client environment:java.home=/usr/local/openjdk-11
2021-12-25 07:31:07,559 [myid:] - INFO [main:Environment@98] - Client environment:java.class.path=/apache-zookeeper-3.7.0-bin/bin/../zookeeper-server/target/classes:/apache-zookeeper-3.7.0-bin/bin/../build/classes:/apache-zookeeper-3.7.0-bin/bin/../zookeeper-server/target/lib/*.jar:/apache-zookeeper-3.7.0-bin/bin/../build/lib/*.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/zookeeper-prometheus-metrics-3.7.0.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/zookeeper-jute-3.7.0.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/zookeeper-3.7.0.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/snappy-java-1.1.7.7.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/slf4j-log4j12-1.7.30.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/slf4j-api-1.7.30.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/simpleclient_servlet-0.9.0.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/simpleclient_hotspot-0.9.0.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/simpleclient_common-0.9.0.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/simpleclient-0.9.0.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/netty-transport-native-unix-common-4.1.59.Final.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/netty-transport-native-epoll-4.1.59.Final.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/netty-transport-4.1.59.Final.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/netty-resolver-4.1.59.Final.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/netty-handler-4.1.59.Final.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/netty-common-4.1.59.Final.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/netty-codec-4.1.59.Final.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/netty-buffer-4.1.59.Final.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/metrics-core-4.1.12.1.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/log4j-1.2.17.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/jline-2.14.6.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/jetty-util-ajax-9.4.38.v20210224.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/jetty-util-9.4.38.v20210224.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/jetty-servlet-9.4.38.v20210224.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/jetty-server-9.4.38.v20210224.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/jetty-security-9.4.38.v20210224.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/jetty-io-9.4.38.v20210224.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/jetty-http-9.4.38.v20210224.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/javax.servlet-api-3.1.0.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/jackson-databind-2.10.5.1.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/jackson-core-2.10.5.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/jackson-annotations-2.10.5.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/commons-cli-1.4.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/audience-annotations-0.12.0.jar:/apache-zookeeper-3.7.0-bin/bin/../zookeeper-*.jar:/apache-zookeeper-3.7.0-bin/bin/../zookeeper-server/src/main/resources/lib/*.jar:/conf:
2021-12-25 07:31:07,559 [myid:] - INFO [main:Environment@98] - Client environment:java.library.path=/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib
2021-12-25 07:31:07,559 [myid:] - INFO [main:Environment@98] - Client environment:java.io.tmpdir=/tmp
2021-12-25 07:31:07,560 [myid:] - INFO [main:Environment@98] - Client environment:java.compiler=<NA>
2021-12-25 07:31:07,560 [myid:] - INFO [main:Environment@98] - Client environment:os.name=Linux
2021-12-25 07:31:07,560 [myid:] - INFO [main:Environment@98] - Client environment:os.arch=amd64
2021-12-25 07:31:07,560 [myid:] - INFO [main:Environment@98] - Client environment:os.version=3.10.0-1160.25.1.el7.x86_64
2021-12-25 07:31:07,560 [myid:] - INFO [main:Environment@98] - Client environment:user.name=root
2021-12-25 07:31:07,560 [myid:] - INFO [main:Environment@98] - Client environment:user.home=/root
2021-12-25 07:31:07,560 [myid:] - INFO [main:Environment@98] - Client environment:user.dir=/apache-zookeeper-3.7.0-bin
2021-12-25 07:31:07,560 [myid:] - INFO [main:Environment@98] - Client environment:os.memory.free=247MB
2021-12-25 07:31:07,562 [myid:] - INFO [main:Environment@98] - Client environment:os.memory.max=256MB
2021-12-25 07:31:07,562 [myid:] - INFO [main:Environment@98] - Client environment:os.memory.total=256MB
2021-12-25 07:31:07,565 [myid:] - INFO [main:ZooKeeper@637] - Initiating client connection, connectString=localhost:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@7946e1f4
2021-12-25 07:31:07,569 [myid:] - INFO [main:X509Util@77] - Setting -D jdk.tls.rejectClientInitiatedRenegotiation=true to disable client-initiated TLS renegotiation
2021-12-25 07:31:07,574 [myid:] - INFO [main:ClientCnxnSocket@239] - jute.maxbuffer value is 1048575 Bytes
2021-12-25 07:31:07,582 [myid:] - INFO [main:ClientCnxn@1726] - zookeeper.request.timeout value is 0. feature enabled=false
Welcome to ZooKeeper!
2021-12-25 07:31:07,593 [myid:localhost:2181] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1171] - Opening socket connection to server localhost/127.0.0.1:2181.
2021-12-25 07:31:07,594 [myid:localhost:2181] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1173] - SASL config status: Will not attempt to authenticate using SASL (unknown error)
2021-12-25 07:31:07,601 [myid:localhost:2181] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1005] - Socket connection established, initiating session, client: /127.0.0.1:43744, server: localhost/127.0.0.1:2181
JLine support is enabled
2021-12-25 07:31:07,627 [myid:localhost:2181] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1438] - Session establishment complete on server localhost/127.0.0.1:2181, session id = 0x4012b89174d0000, negotiated timeout = 30000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0]
[zk: localhost:2181(CONNECTED) 1] ls /
[zookeeper]
[zk: localhost:2181(CONNECTED) 2] create /hi
Created /hi
[zk: localhost:2181(CONNECTED) 3] ls /
[hi, zookeeper]

进入另一个容器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
[root@recall-gpu-01 DockerComposeFolder]# docker exec -it dockercomposefolder-zoo2-1 bash
root@zoo2:/apache-zookeeper-3.7.0-bin# ./bin/zkCli.sh
Connecting to localhost:2181
2021-12-25 07:33:15,149 [myid:] - INFO [main:Environment@98] - Client environment:zookeeper.version=3.7.0-e3704b390a6697bfdf4b0bef79e3da7a4f6bac4b, built on 2021-03-17 09:46 UTC
2021-12-25 07:33:15,152 [myid:] - INFO [main:Environment@98] - Client environment:host.name=zoo2
2021-12-25 07:33:15,152 [myid:] - INFO [main:Environment@98] - Client environment:java.version=11.0.13
2021-12-25 07:33:15,154 [myid:] - INFO [main:Environment@98] - Client environment:java.vendor=Oracle Corporation
2021-12-25 07:33:15,154 [myid:] - INFO [main:Environment@98] - Client environment:java.home=/usr/local/openjdk-11
2021-12-25 07:33:15,154 [myid:] - INFO [main:Environment@98] - Client environment:java.class.path=/apache-zookeeper-3.7.0-bin/bin/../zookeeper-server/target/classes:/apache-zookeeper-3.7.0-bin/bin/../build/classes:/apache-zookeeper-3.7.0-bin/bin/../zookeeper-server/target/lib/*.jar:/apache-zookeeper-3.7.0-bin/bin/../build/lib/*.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/zookeeper-prometheus-metrics-3.7.0.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/zookeeper-jute-3.7.0.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/zookeeper-3.7.0.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/snappy-java-1.1.7.7.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/slf4j-log4j12-1.7.30.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/slf4j-api-1.7.30.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/simpleclient_servlet-0.9.0.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/simpleclient_hotspot-0.9.0.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/simpleclient_common-0.9.0.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/simpleclient-0.9.0.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/netty-transport-native-unix-common-4.1.59.Final.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/netty-transport-native-epoll-4.1.59.Final.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/netty-transport-4.1.59.Final.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/netty-resolver-4.1.59.Final.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/netty-handler-4.1.59.Final.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/netty-common-4.1.59.Final.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/netty-codec-4.1.59.Final.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/netty-buffer-4.1.59.Final.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/metrics-core-4.1.12.1.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/log4j-1.2.17.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/jline-2.14.6.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/jetty-util-ajax-9.4.38.v20210224.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/jetty-util-9.4.38.v20210224.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/jetty-servlet-9.4.38.v20210224.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/jetty-server-9.4.38.v20210224.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/jetty-security-9.4.38.v20210224.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/jetty-io-9.4.38.v20210224.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/jetty-http-9.4.38.v20210224.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/javax.servlet-api-3.1.0.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/jackson-databind-2.10.5.1.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/jackson-core-2.10.5.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/jackson-annotations-2.10.5.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/commons-cli-1.4.jar:/apache-zookeeper-3.7.0-bin/bin/../lib/audience-annotations-0.12.0.jar:/apache-zookeeper-3.7.0-bin/bin/../zookeeper-*.jar:/apache-zookeeper-3.7.0-bin/bin/../zookeeper-server/src/main/resources/lib/*.jar:/conf:
2021-12-25 07:33:15,154 [myid:] - INFO [main:Environment@98] - Client environment:java.library.path=/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib
2021-12-25 07:33:15,154 [myid:] - INFO [main:Environment@98] - Client environment:java.io.tmpdir=/tmp
2021-12-25 07:33:15,155 [myid:] - INFO [main:Environment@98] - Client environment:java.compiler=<NA>
2021-12-25 07:33:15,155 [myid:] - INFO [main:Environment@98] - Client environment:os.name=Linux
2021-12-25 07:33:15,155 [myid:] - INFO [main:Environment@98] - Client environment:os.arch=amd64
2021-12-25 07:33:15,155 [myid:] - INFO [main:Environment@98] - Client environment:os.version=3.10.0-1160.25.1.el7.x86_64
2021-12-25 07:33:15,155 [myid:] - INFO [main:Environment@98] - Client environment:user.name=root
2021-12-25 07:33:15,155 [myid:] - INFO [main:Environment@98] - Client environment:user.home=/root
2021-12-25 07:33:15,155 [myid:] - INFO [main:Environment@98] - Client environment:user.dir=/apache-zookeeper-3.7.0-bin
2021-12-25 07:33:15,155 [myid:] - INFO [main:Environment@98] - Client environment:os.memory.free=247MB
2021-12-25 07:33:15,157 [myid:] - INFO [main:Environment@98] - Client environment:os.memory.max=256MB
2021-12-25 07:33:15,157 [myid:] - INFO [main:Environment@98] - Client environment:os.memory.total=256MB
2021-12-25 07:33:15,161 [myid:] - INFO [main:ZooKeeper@637] - Initiating client connection, connectString=localhost:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@7946e1f4
2021-12-25 07:33:15,164 [myid:] - INFO [main:X509Util@77] - Setting -D jdk.tls.rejectClientInitiatedRenegotiation=true to disable client-initiated TLS renegotiation
2021-12-25 07:33:15,169 [myid:] - INFO [main:ClientCnxnSocket@239] - jute.maxbuffer value is 1048575 Bytes
2021-12-25 07:33:15,177 [myid:] - INFO [main:ClientCnxn@1726] - zookeeper.request.timeout value is 0. feature enabled=false
Welcome to ZooKeeper!
2021-12-25 07:33:15,186 [myid:localhost:2181] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1171] - Opening socket connection to server localhost/127.0.0.1:2181.
2021-12-25 07:33:15,187 [myid:localhost:2181] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1173] - SASL config status: Will not attempt to authenticate using SASL (unknown error)
2021-12-25 07:33:15,194 [myid:localhost:2181] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1005] - Socket connection established, initiating session, client: /127.0.0.1:43768, server: localhost/127.0.0.1:2181
JLine support is enabled
2021-12-25 07:33:15,210 [myid:localhost:2181] - INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1438] - Session establishment complete on server localhost/127.0.0.1:2181, session id = 0x5012b89174d0000, negotiated timeout = 30000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0] ls /
[hi, zookeeper]

停止所有活动容器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@recall-gpu-01 DockerComposeFolder]# docker-compose ps
WARN[0000] network default: network.external.name is deprecated in favor of network.name
NAME COMMAND SERVICE STATUS PORTS
dockercomposefolder-zoo1-1 "/docker-entrypoint.…" zoo1 running 0.0.0.0:2181->2181/tcp
dockercomposefolder-zoo2-1 "/docker-entrypoint.…" zoo2 running 0.0.0.0:2182->2181/tcp
dockercomposefolder-zoo3-1 "/docker-entrypoint.…" zoo3 running 0.0.0.0:2183->2181/tcp
[root@recall-gpu-01 DockerComposeFolder]# docker-compose stop
WARN[0000] network default: network.external.name is deprecated in favor of network.name
[+] Running 3/3
⠿ Container dockercomposefolder-zoo1-1 Stopped 1.0s
⠿ Container dockercomposefolder-zoo2-1 Stopped 0.9s
⠿ Container dockercomposefolder-zoo3-1 Stopped 1.2s
[root@recall-gpu-01 DockerComposeFolder]# docker-compose rm
WARN[0000] network default: network.external.name is deprecated in favor of network.name
? Going to remove dockercomposefolder-zoo1-1, dockercomposefolder-zoo3-1, dockercomposefolder-zoo2-1 Yes
[+] Running 3/0
⠿ Container dockercomposefolder-zoo2-1 Removed 0.0s
⠿ Container dockercomposefolder-zoo3-1 Removed 0.0s
⠿ Container dockercomposefolder-zoo1-1 Removed 0.0s
[root@recall-gpu-01 DockerComposeFolder]#

A interactive Zookeeper client.

let-us-go/zkcli

References:

1、Docker下安装zookeeper(单机 & 集群)

2、https://www.cnblogs.com/ronnieyuan/p/12661810.html

3、https://blog.csdn.net/weixin_39555954/article/details/119942679

4、https://hub.docker.com/_/zookeeper

5、https://blog.51cto.com/u_15127674/3320245