docker 安装zookeeper
0、准备 自定义网络
docker network create -d bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 zk_net
docker run -d -e TZ="Asia/Shanghai" -p 21811:2181 -p 8081:8080 -p 28881:2888 -p 38881:3888 -v /data/zookeeper/zk1:/data -v /data/zookeeper/zk1/conf:/conf --network zk_net --ip 192.168.0.11 --name zk1 zookeeper // -d 后台运行 // -e 设置环境变量,时区设置为上海 // -p 指定容器端口映射,服务器端口:容器端口 // -v 卷挂载 // 192.168.0.1 为网关,不能使用
1、进入zookeeper容器,修改配置文件(也可在挂载文件中修改)
docker exec -it zk1 /bin/bash
若无vim 则先安装 vim 编辑器
apt-get update apt-get install vim
在 /conf/zoo.cfg 文件中修改配置(zoo_simple.cfg 是配置示例文件,可参考)
①配置查看 Zookeeper 运行状态 (配置白名单)
4lw.commands.whitelist=*
②配置集群
2181:对cline端提供服务
3888:选举leader使用
2888:集群内机器通讯使用(Leader监听此端口)
clientPort=2181 server.1=172.17.0.2:2888:3888 server.2=172.17.0.3:2888:3888 server.3=172.17.0.4:2888:3888
修改data/myid 与上述server.* 数字对应,代表是哪台机器
③默认 具体ip:8080/commands (zk3.5版本后 内置jetty启动后台管理,默认端口为8080,可修改)
admin.serverPort= 任意端口
④其他配置
# Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里 dataDir=/data # 事物日志存储地点,如果没提供的话使用的则是 dataDir dataLogDir=/datalog # 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位 tickTime=2000 # 集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量) initLimit=5 # 集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量) syncLimit=2 # 默认值为3,不支持以系统属性方式配置。用于配置Zookeeper在自动清理的时候需要保留的快照数据文件数量和对应的事务日志文件。此参数的最小值为3,如果配置的值小于3会自动调整到3 autopurge.snapRetainCount=3 # 默认值为0,单位为小时,不支持以系统属性方式配置。用于配置Zookeeper进行历史文件自动清理的频率。如果配置为0或负数,表示不需要开启定时清理功能 autopurge.purgeInterval=0 # 默认为60,不支持以系统属性方式配置。从Socket层面限制单个客户端与单台服务器之间的并发连接数,即以ip地址来进行连接数的限制。 # 如果设置为0,表示不做任何限制。仅仅是单台客户端与单个Zookeeper服务器连接数的限制,不能控制所有客户端的连接数总和 maxClientCnxns=60 # 3.5.0中的新功能:当设置为false时,可以在复制模式下启动单个服务器,单个参与者可以使用观察者运行,并且群集可以重新配置为一个节点,并且从一个节点。 # 对于向后兼容性,默认值为true。可以使用QuorumPeerConfig的setStandaloneEnabled方法或通过将“standaloneEnabled = false”或“standaloneEnabled = true”添加到服务器的配置文件来设置它。 # 当配置了standaloneEnabled=true 或者没有配置集群节点(sever.*)时,Zookeeper使用单机环境启动。 standaloneEnabled=false # 内嵌的管理控制台,停用这个服务 admin.enableServer=false # 开启四字命令,将所有命令添加到白名单中 4lw.commands.whitelist=* # 集群中服务的列表 server.1=localhost:2888:3888;2181 # 这个配置是用来实现动态配置的,一定要设置,否则集群启动后会无法修改现有配置 reconfigEnabled=true
修改后配置文件如图:
docker restart zk1 zk2 zk3 后 ,查看容器启动状态 docker inspect
进入容器中 ,查看节点状态
./bin/zkServer.sh status
===============================启动完成===================================
可参考:Docker 安装 zookeeper 集群_=蜗牛=的博客-优快云博客_docker zookeeper集群
=========================================================================