一.简介
docker方式安装zookeeper,更便于管理维护,对于服务器安装zookeeper,需要注意访问限制,一般通过防火墙白名单或者安全组来做访问限制,防止zookeeper被外网非法访问
二.Docker安装zookeeper
1.获取指定版本的zookeeper镜像
docker pull zookeeper:版本号
2.主机上建立挂载目录和zookeeper配置文件,需要确认配置目录,数据目录,日志目录三个挂载目录来防止docker容器重启而数据丢失
mkdir -p /data/zookeeper001/conf
mkdir -p /data/zookeeper001/data
mkdir -p /data/zookeeper001/logs
3.启动容器
zoo.cfg文件内容
dataDir=/data
dataLogDir=/logs
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
standaloneEnabled=true
#关掉admin服务
admin.enableServer=false
server.1=localhost:2888:3888;2181
docker run -d --name zookeeper001 -p 2181:2181 -p 2888:2888 -p 3888:3888 --restart=always -v /data/zookeeper001/data:/data -v /data/zookeeper001/conf:/conf -v /data/zookeeper001/logs:/logs zookeeper:版本号
启动参数说明:
-d:后台运行容器,并返回容器 ID
--name:为容器指定一个名称,这里定义容器名称为zookeeper001
-v /data/zookeeper001/data:/data:主机的数据目录挂载到容器/data下
-v /data/zookeeper001/conf:/conf: 主机的配置目录挂载到容器的/conf下,容器内的zkServer.sh默认会读取/conf/zoo.cfg下的配置,调整zoo.cfg的dataDir=/data后重启服务即可
-v /data/zookeeper001/logs:/logs: 主机的日志目录挂载到容器的/logs下,默认的配置是关闭这一项的,需要在启动容器后,调整zoo.cfg的dataLogDir=/logs后再重启服务即可
-p:指定端口映射 格式为: 主机 port: 容器 port
--restart always:始终重启
如果不加 -p 2181:2181,启动后会暴露端口:
2181:代码访问 Client 的端口;
2888:Leader 和 Folwer 通信的端口;
3888:选举 Leader 时通信的端口
4.查看进程:
docker ps
5.进入zkCli.sh
docker exec -it 容器id /bin/bash
检查容器状态
docker exec -it 容器id /bin/bash ./bin/zkServer.sh status
注意:
1.docker logs zookeeper001 命令提示:/docker-entrypoint.sh: line 43: /conf/zoo.cfg: Permission denied:
// 需要对挂载目录增加777权限
chmod +777 /data/zookeeper001
2.因为默认是开启了admin服务,大部分情况是用不到的,可以考虑关掉
#关掉admin服务
admin.enableServer=false