|
1 | 1 | # Zookeeper 安装 |
2 | 2 |
|
3 | 3 |
|
| 4 | +## Docker 部署 Zookeeper |
| 5 | + |
| 6 | + |
| 7 | +#### 单个实例 |
| 8 | + |
| 9 | +- 官网仓库:<https://hub.docker.com/r/library/zookeeper/> |
| 10 | +- 单个实例:`docker run -d --restart always --name one-zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime zookeeper:latest` |
| 11 | + - 默认端口暴露是:`This image includes EXPOSE 2181 2888 3888 (the zookeeper client port, follower port, election port respectively)` |
| 12 | +- 容器中的几个重要目录(有需要挂载的可以指定): |
| 13 | + - `/data` |
| 14 | + - `/datalog` |
| 15 | + - `/conf` |
| 16 | + |
| 17 | + |
| 18 | +#### 单机多个实例(集群) |
| 19 | + |
| 20 | +- 创建 docker compose 文件:`vim zookeeper.yml` |
| 21 | +- 下面内容来自官网仓库:<https://hub.docker.com/r/library/zookeeper/> |
| 22 | + |
| 23 | +``` |
| 24 | +version: '3.1' |
| 25 | +
|
| 26 | +services: |
| 27 | + zoo1: |
| 28 | + image: zookeeper |
| 29 | + restart: always |
| 30 | + hostname: zoo1 |
| 31 | + ports: |
| 32 | + - 2181:2181 |
| 33 | + environment: |
| 34 | + ZOO_MY_ID: 1 |
| 35 | + ZOO_SERVERS: server.1=0.0.0.0:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888 |
| 36 | +
|
| 37 | + zoo2: |
| 38 | + image: zookeeper |
| 39 | + restart: always |
| 40 | + hostname: zoo2 |
| 41 | + ports: |
| 42 | + - 2182:2181 |
| 43 | + environment: |
| 44 | + ZOO_MY_ID: 2 |
| 45 | + ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=0.0.0.0:2888:3888 server.3=zoo3:2888:3888 |
| 46 | +
|
| 47 | + zoo3: |
| 48 | + image: zookeeper |
| 49 | + restart: always |
| 50 | + hostname: zoo3 |
| 51 | + ports: |
| 52 | + - 2183:2181 |
| 53 | + environment: |
| 54 | + ZOO_MY_ID: 3 |
| 55 | + ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=0.0.0.0:2888:3888 |
| 56 | +``` |
| 57 | + |
| 58 | +- 启动:`docker-compose -f zookeeper.yml -p zk_test up -d` |
| 59 | + - 参数 -p zk_test 表示这个 compose project 的名字,等价于:`COMPOSE_PROJECT_NAME=zk_test docker-compose -f zookeeper.yml up -d` |
| 60 | + - 不指定项目名称,Docker-Compose 默认以当前文件目录名作为应用的项目名 |
| 61 | + - 报错是正常情况的。 |
| 62 | +- 停止:`docker-compose -f zookeeper.yml -p zk_test stop` |
| 63 | + |
| 64 | +#### 先安装 nc 再来校验 zookeeper 集群情况 |
| 65 | + |
| 66 | +- 环境:CentOS 7.4 |
| 67 | +- 官网下载:<https://nmap.org/download.html>,找到 rpm 包 |
| 68 | +- 当前时间(201803)最新版本下载:`wget https://nmap.org/dist/ncat-7.60-1.x86_64.rpm` |
| 69 | +- 安装:`sudo rpm -i ncat-7.60-1.x86_64.rpm` |
| 70 | +- ln 下:`sudo ln -s /usr/bin/ncat /usr/bin/nc` |
| 71 | +- 检验:`nc --version` |
| 72 | + |
| 73 | +#### 校验 |
| 74 | + |
| 75 | +- 命令:`echo stat | nc 127.0.0.1 2181`,得到如下信息: |
| 76 | + |
| 77 | +``` |
| 78 | +Zookeeper version: 3.4.11-37e277162d567b55a07d1755f0b31c32e93c01a0, built on 11/01/2017 18:06 GMT |
| 79 | +Clients: |
| 80 | + /172.21.0.1:58872[0](queued=0,recved=1,sent=0) |
| 81 | +
|
| 82 | +Latency min/avg/max: 0/0/0 |
| 83 | +Received: 1 |
| 84 | +Sent: 0 |
| 85 | +Connections: 1 |
| 86 | +Outstanding: 0 |
| 87 | +Zxid: 0x100000000 |
| 88 | +Mode: follower |
| 89 | +Node count: 4 |
| 90 | +``` |
| 91 | + |
| 92 | +- 命令:`echo stat | nc 127.0.0.1 2182`,得到如下信息: |
| 93 | + |
| 94 | +``` |
| 95 | +Zookeeper version: 3.4.11-37e277162d567b55a07d1755f0b31c32e93c01a0, built on 11/01/2017 18:06 GMT |
| 96 | +Clients: |
| 97 | + /172.21.0.1:36190[0](queued=0,recved=1,sent=0) |
| 98 | +
|
| 99 | +Latency min/avg/max: 0/0/0 |
| 100 | +Received: 1 |
| 101 | +Sent: 0 |
| 102 | +Connections: 1 |
| 103 | +Outstanding: 0 |
| 104 | +Zxid: 0x500000000 |
| 105 | +Mode: follower |
| 106 | +Node count: 4 |
| 107 | +``` |
| 108 | + |
| 109 | + |
| 110 | +- 命令:`echo stat | nc 127.0.0.1 2183`,得到如下信息: |
| 111 | + |
| 112 | +``` |
| 113 | +Zookeeper version: 3.4.11-37e277162d567b55a07d1755f0b31c32e93c01a0, built on 11/01/2017 18:06 GMT |
| 114 | +Clients: |
| 115 | + /172.21.0.1:33344[0](queued=0,recved=1,sent=0) |
| 116 | +
|
| 117 | +Latency min/avg/max: 0/0/0 |
| 118 | +Received: 1 |
| 119 | +Sent: 0 |
| 120 | +Connections: 1 |
| 121 | +Outstanding: 0 |
| 122 | +Zxid: 0x500000000 |
| 123 | +Mode: leader |
| 124 | +Node count: 4 |
| 125 | +``` |
| 126 | + |
| 127 | +#### 多机多个实例(集群) |
| 128 | + |
| 129 | +- 三台机: |
| 130 | +- 10.129.11.12 zk1 |
| 131 | +- 10.129.11.13 zk2 |
| 132 | +- 10.129.11.14 zk3 |
| 133 | + |
| 134 | +- 节点 1: |
| 135 | + |
| 136 | +``` |
| 137 | +docker run -d \ |
| 138 | +-v /data/docker/zookeeper/data:/data \ |
| 139 | +-v /data/docker/zookeeper/log:/datalog \ |
| 140 | +-e ZOO_MY_ID=1 \ |
| 141 | +-e "ZOO_SERVERS=server.1=10.129.11.12:2888:3888 server.2=10.129.11.13:2888:3888 server.3=10.129.11.14:2888:3888" \ |
| 142 | +--name=zookeeper1 --net=host --restart=always zookeeper |
| 143 | +``` |
| 144 | + |
| 145 | + |
| 146 | +- 节点 2: |
| 147 | + |
| 148 | +``` |
| 149 | +docker run -d \ |
| 150 | +-v /data/docker/zookeeper/data:/data \ |
| 151 | +-v /data/docker/zookeeper/log:/datalog \ |
| 152 | +-e ZOO_MY_ID=2 \ |
| 153 | +-e "ZOO_SERVERS=server.1=10.129.11.12:2888:3888 server.2=10.129.11.13:2888:3888 server.3=10.129.11.14:2888:3888" \ |
| 154 | +--name=zookeeper2 --net=host --restart=always zookeeper |
| 155 | +``` |
| 156 | + |
| 157 | + |
| 158 | +- 节点 3: |
| 159 | + |
| 160 | +``` |
| 161 | +docker run -d \ |
| 162 | +-v /data/docker/zookeeper/data:/data \ |
| 163 | +-v /data/docker/zookeeper/log:/datalog \ |
| 164 | +-e ZOO_MY_ID=3 \ |
| 165 | +-e "ZOO_SERVERS=server.1=10.129.11.12:2888:3888 server.2=10.129.11.13:2888:3888 server.3=10.129.11.14:2888:3888" \ |
| 166 | +--name=zookeeper3 --net=host --restart=always zookeeper |
| 167 | +``` |
| 168 | + |
| 169 | + |
| 170 | + |
| 171 | + |
4 | 172 | ## 需要环境 |
5 | 173 |
|
6 | 174 | - JDK 安装 |
@@ -64,3 +232,7 @@ server.3=192.168.1.112:2888:3888 |
64 | 232 | Using config: /usr/program/zookeeper/zookeeper-3.4.8/bin/../conf/zoo.cfg |
65 | 233 | Mode: follower 或者 Mode: leader |
66 | 234 | ``` |
| 235 | + |
| 236 | +## 资料 |
| 237 | + |
| 238 | +- <https://liwei.io/2017/07/19/zookeeper-cluster-in-docker/> |
0 commit comments