Zookeeper——Docker 下安装部署
单节点安装
一、 环境说明
- docker: 18.09.9-ce
- zookeeper: 3.5.6
二、 拉取 zookeeper 镜像
- 拉取镜像
docker pull zookeeper
默认是摘取最新版本 zookeeper:latest。
- 查看当前镜像
三、 准备工作
将它部署在 /usr/local/zookeeper 目录下:
cd /usr/local && mkdir zookeeper && cd zookeeper
创建 data 目录,用于挂载容器中的数据目录:
mkdir data
四、 正式部署
- 部署命令:
docker run -d -e TZ="Asia/Shanghai" -p 2181:2181 -v $PWD/data:/data --name zookeeper --restart always zookeeper
- 命令详细说明:
-e TZ="Asia/Shanghai" # 指定上海时区 -d # 表示在一直在后台运行容器 -p 2181:2181 # 对端口进行映射,将本地 2181 端口映射到容器内部的 2181 端口 --name # 设置创建的容器名称 -v # 将本地目录 (文件) 挂载到容器指定目录;
--restart always #始终重新启动 zookeeper
- 查看容器启动情况:
docker ps -a
注:状态(STATUS)为 Up,说明容器已经启动成功。
五、 测试
- 使用 zk 命令行客户端连接 zk
docker run -it --rm --link zookeeper:zookeeper zookeeper zkCli.sh -server zookeeper
说明:-server zookeeper
是启动 zkCli.sh
的参数
六、 其它命令
查看 zookeeper 容器实例进程信息
docker top zookeeper
停止 zookeeper 实例进程
docker stop zookeeper
启动 zookeeper 实例进程
docker start zookeeper
重启 zookeeper 实例进程
docker restart zookeeper
查看 zookeeper 进程日志
docker logs -f zookeeper
杀死 zookeeper 实例进程
docker kill -s KILL zookeeper
移除 zookeeper 实例
docker rm -f -v zookeeper
集群方式安装
集群方式选择使用 docker-compose
来完成。
一、安装 docker-compose
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
二、配置 docker-compose
编写配置文件,并将其命名为:docker-compose.yml
(docker-compose
默认配置文件名)
配置文件内容:
version: '2' services: zoo1: image: zookeeper restart: always container_name: zoo1 ports: - "2181:2181" environment: ZOO_MY_ID: 1 ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888 zoo2: image: zookeeper restart: always container_name: zoo2 ports: - "2182:2181" environment: ZOO_MY_ID: 2 ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888 zoo3: image: zookeeper restart: always container_name: zoo3 ports: - "2183:2181" environment: ZOO_MY_ID: 3 ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
此配置文件表示,Docker 需要启动三个 zookeeper 实例,并将 2181,2182,2183 三个端口号映射到容器内的 2181 这个端口上。ZOO_MY_ID
:表示 zk 服务的 ID, 取值为 1-255 之间的整数,且必须唯一ZOO_SERVERS
:表示 zk 集群的主机列表
三、启动 zookeeper 集群
docker-compose up -d
该命令执行需要在 docker-compose
配置文件的目录下执行,结果如下:
[root@izbp13xko46hud9vfr5s94z conf]# docker-compose up -d
Starting zoo1 ... done
Starting zoo2 ... done
Starting zoo3 ... done
[root@izbp13xko46hud9vfr5s94z conf]#
四、查看 zookeeper 集群实例
- 通过
docker ps
查看
[root@izbp13xko46hud9vfr5s94z ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e53b4c838001 zookeeper "/docker-entrypoint.…" 4 minutes ago Up 44 seconds 2888/tcp, 0.0.0.0:2181->2181/tcp, 3888/tcp zoo1
19282fb6f9b4 zookeeper "/docker-entrypoint.…" 4 minutes ago Up 44 seconds 2888/tcp, 3888/tcp, 0.0.0.0:2182->2181/tcp zoo2
099b926fa2d3 zookeeper "/docker-entrypoint.…" 4 minutes ago Up 44 seconds 2888/tcp, 3888/tcp, 0.0.0.0:2183->2181/tcp zoo3
- 通过
docker-compose ps
查看
[root@izbp13xko46hud9vfr5s94z conf]# docker-compose ps Name Command State Ports ------------------------------------------------------------------------------------------ zoo1 /docker-entrypoint.sh zkSe ... Up 0.0.0.0:2181->2181/tcp, 2888/tcp, 3888/tcp zoo2 /docker-entrypoint.sh zkSe ... Up 0.0.0.0:2182->2181/tcp, 2888/tcp, 3888/tcp zoo3 /docker-entrypoint.sh zkSe ... Up 0.0.0.0:2183->2181/tcp, 2888/tcp, 3888/tcp [root@izbp13xko46hud9vfr5s94z conf]#
注:这个命令需要在 docker-compose
配置文件下执行。
五、管理 docker-compose 服务
# 停止 docker-compose 服务
docker-compose stop
# 启动 docker-compose 服务
docker-compose start
# 重启 docker-compose 服务
docker-compose restart
六、查看 zookeeper 集群节点主从关系
使用 docker exec -it zoo1 /bin/bash
这个命令进入 zoo1
节点中,之后输入 ./bin/zkServer.sh statu
来查看节点主从关系
[root@izbp13xko46hud9vfr5s94z conf]# docker exec -it zoo1 /bin/bash bash-4.4# ./bin/zkServer.sh status ZooKeeper JMX enabled by default Using config: /conf/zoo.cfg Mode: follower bash-4.4#