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
| 一、示例
测试环境基于文档:docker深入2-熟悉v1.11和找不同.txt
目标:熟悉自定义网络的应用
------------------------------------------------------
---------------------- n36.test ----------------------
zk1 172.30.40.1
zk2 -> docker network(net_env_test) -> 172.30.40.2
zk3 172.30.40.3
------------------------------------------------------
二、镜像和网络
1、镜像
[Jack@n36 ~]$ docker pull registry.aliyuncs.com/denverdino/zookeeper:3.4.8
2、自定义网络
[Jack@n36 ~]$ docker network create --subnet 172.30.0.0/16 --gateway 172.30.0.1 --ip-range 172.30.0.0/17 net_env_test
fe455726968a326cbae52a4260cfd1d013884f897f442fdaafa43f6fa2dffcc3
三、启动zookeeper集群,指定IP地址
[Jack@n36 ~]$ docker run -d \
--name zk1 \
--net net_env_test \
--ip 172.30.40.1 \
-e SERVER_ID=1 \
-e ADDITIONAL_ZOOKEEPER_1=server.1=172.30.40.1:2888:3888 \
-e ADDITIONAL_ZOOKEEPER_2=server.2=172.30.40.2:2888:3888 \
-e ADDITIONAL_ZOOKEEPER_3=server.3=172.30.40.3:2888:3888 \
registry.aliyuncs.com/denverdino/zookeeper:3.4.8
[Jack@n36 ~]$ docker run -d \
--name zk2 \
--net net_env_test \
--ip 172.30.40.2 \
-e SERVER_ID=2 \
-e ADDITIONAL_ZOOKEEPER_1=server.1=172.30.40.1:2888:3888 \
-e ADDITIONAL_ZOOKEEPER_2=server.2=172.30.40.2:2888:3888 \
-e ADDITIONAL_ZOOKEEPER_3=server.3=172.30.40.3:2888:3888 \
registry.aliyuncs.com/denverdino/zookeeper:3.4.8
[Jack@n36 ~]$ docker run -d \
--name zk3 \
--net net_env_test \
--ip 172.30.40.3 \
-e SERVER_ID=3 \
-e ADDITIONAL_ZOOKEEPER_1=server.1=172.30.40.1:2888:3888 \
-e ADDITIONAL_ZOOKEEPER_2=server.2=172.30.40.2:2888:3888 \
-e ADDITIONAL_ZOOKEEPER_3=server.3=172.30.40.3:2888:3888 \
registry.aliyuncs.com/denverdino/zookeeper:3.4.8
[Jack@n36 ~]$ docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' `docker ps -f name=zk[1-3] -q`
172.30.40.3
172.30.40.2
172.30.40.1
[Jack@n36 ~]$ docker ps -f name=zk[1-3]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c2feaffe2ce7 registry.aliyuncs.com/denverdino/zookeeper:3.4.8 "/opt/zookeeper.sh" 27 seconds ago Up 26 seconds 2181/tcp, 2888/tcp, 3888/tcp zk3
85e66c209e30 registry.aliyuncs.com/denverdino/zookeeper:3.4.8 "/opt/zookeeper.sh" 31 seconds ago Up 30 seconds 2181/tcp, 2888/tcp, 3888/tcp zk2
5950af6802fe registry.aliyuncs.com/denverdino/zookeeper:3.4.8 "/opt/zookeeper.sh" 36 seconds ago Up 35 seconds 2181/tcp, 2888/tcp, 3888/tcp zk1
四、测试
1、连通性
[Jack@n36 ~]$ docker exec -it zk1 bash
bash-4.3# ping zk2
PING zk2 (172.30.40.2): 56 data bytes
64 bytes from 172.30.40.2: seq=0 ttl=64 time=0.173 ms
^C
--- zk2 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.173/0.173/0.173 ms
bash-4.3# ping zk3
PING zk3 (172.30.40.3): 56 data bytes
64 bytes from 172.30.40.3: seq=0 ttl=64 time=0.101 ms
^C
--- zk3 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.101/0.101/0.101 ms
2、服务
[Jack@n36 ~]$ docker exec -it zk1 bash
bash-4.3# bin/zkCli.sh -server zk3:2181
2016-06-23 03:27:28,058 [myid:] - INFO [main:Environment@100] - Client environment:zookeeper.version=3.4.8--1, built on 02/06/2016 03:18 GMT
2016-06-23 03:27:28,063 [myid:] - INFO [main:Environment@100] - Client environment:host.name=5950af6802fe
2016-06-23 03:27:28,063 [myid:] - INFO [main:Environment@100] - Client environment:java.version=1.8.0_77-internal
2016-06-23 03:27:28,066 [myid:] - INFO [main:Environment@100] - Client environment:java.vendor=Oracle Corporation
2016-06-23 03:27:28,067 [myid:] - INFO [main:Environment@100] - Client environment:java.home=/usr/lib/jvm/java-1.8-openjdk/jre
2016-06-23 03:27:28,067 [myid:] - INFO [main:Environment@100] - Client environment:java.class.path=/opt/zookeeper/bin/../build/classes:/opt/zookeeper/bin/../build/lib/*.jar:/opt/zookeeper/bin/../lib/slf4j-log4j12-1.6.1.jar:/opt/zookeeper/bin/../lib/slf4j-api-1.6.1.jar:/opt/zookeeper/bin/../lib/netty-3.7.0.Final.jar:/opt/zookeeper/bin/../lib/log4j-1.2.16.jar:/opt/zookeeper/bin/../lib/jline-0.9.94.jar:/opt/zookeeper/bin/../zookeeper-3.4.8.jar:/opt/zookeeper/bin/../src/java/lib/*.jar:/opt/zookeeper/bin/../conf:
2016-06-23 03:27:28,067 [myid:] - INFO [main:Environment@100] - Client environment:java.library.path=/usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/server:/usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64:/usr/lib/jvm/java-1.8-openjdk/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
2016-06-23 03:27:28,067 [myid:] - INFO [main:Environment@100] - Client environment:java.io.tmpdir=/tmp
2016-06-23 03:27:28,067 [myid:] - INFO [main:Environment@100] - Client environment:java.compiler=<NA>
2016-06-23 03:27:28,068 [myid:] - INFO [main:Environment@100] - Client environment:os.name=Linux
2016-06-23 03:27:28,068 [myid:] - INFO [main:Environment@100] - Client environment:os.arch=amd64
2016-06-23 03:27:28,068 [myid:] - INFO [main:Environment@100] - Client environment:os.version=3.10.0-229.el7.x86_64
2016-06-23 03:27:28,068 [myid:] - INFO [main:Environment@100] - Client environment:user.name=root
2016-06-23 03:27:28,068 [myid:] - INFO [main:Environment@100] - Client environment:user.home=/root
2016-06-23 03:27:28,068 [myid:] - INFO [main:Environment@100] - Client environment:user.dir=/opt/zookeeper
2016-06-23 03:27:28,070 [myid:] - INFO [main:ZooKeeper@438] - Initiating client connection, connectString=zk3:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@3eb07fd3
Welcome to ZooKeeper!
2016-06-23 03:27:28,109 [myid:] - INFO [main-SendThread(zk3.net_env_test:2181):ClientCnxn$SendThread@1032] - Opening socket connection to server zk3.net_env_test/172.30.40.3:2181. Will not attempt to authenticate using SASL (unknown error)
JLine support is enabled
2016-06-23 03:27:28,205 [myid:] - INFO [main-SendThread(zk3.net_env_test:2181):ClientCnxn$SendThread@876] - Socket connection established to zk3.net_env_test/172.30.40.3:2181, initiating session
2016-06-23 03:27:28,215 [myid:] - INFO [main-SendThread(zk3.net_env_test:2181):ClientCnxn$SendThread@1299] - Session establishment complete on server zk3.net_env_test/172.30.40.3:2181, sessionid = 0x3557b3d3ba80001, negotiated timeout = 30000
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
[zk: zk3:2181(CONNECTED) 0]
[zk: zk3:2181(CONNECTED) 0] ls /
[zookeeper]
[zk: zk3:2181(CONNECTED) 1] create /zk_test test_data
Created /zk_test
[zk: zk3:2181(CONNECTED) 2] ls /
[zookeeper, zk_test]
[zk: zk3:2181(CONNECTED) 3] get /zk_test
test_data
cZxid = 0x100000015
ctime = Thu Jun 23 03:28:07 GMT 2016
mZxid = 0x100000015
mtime = Thu Jun 23 03:28:07 GMT 2016
pZxid = 0x100000015
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 11
numChildren = 0
[zk: zk3:2181(CONNECTED) 7] quit
Quitting...
2016-06-23 03:28:25,427 [myid:] - INFO [main:ZooKeeper@684] - Session: 0x3557b3d3ba80001 closed
bash-4.3#
ZYXW、参考
1、学习Docker容器网络模型 - 搭建分布式Zookeeper集群
https://yq.aliyun.com/articles/3 ... ont55866.14.KQScYn#
https://github.com/denverdino/al ... cont30328.19.av6ce8
|