一、环境准备
docker pull zookeeper
分别创建4个文件夹 第一个存放启动命令留着以后用. 剩下那3个看名字就知道是啥意思了
然后在conf文件夹里面放一个文件: zoo.cfg
内容是:
tickTime=2000
initLimit=100
syncLimit=5
dataDir=/data
dataLogDir=/datalog
clientPort=2181
quorumListenOnAllIPs=true
preAllocSize=64M
globalOutstandingLimit=100000
snapCount=50000
maxClientCnxns=64
minSessionTimeout=4000
maxSessionTimeout=40000
4lw.commands.whitelist=*
admin.enableServer=true
server.1=172.26.226.13:2888:3888
server.2=172.26.226.17:2888:3888
server.3=172.26.130.14:2888:3888
tcpKeepAlive=true
ipReachableTimeout=0
cnxTimeout=3
electionAlg=3
autopurge.snapRetainCount=5
autopurge.purgeInterval=24
#忽略ACL验证
skipACL=yes
forceSync=yes
然后打开防火墙 2181 2888 3888
firewall-cmd --zone=public --add-port=2888/tcp --permanent
firewall-cmd --zone=public --add-port=3888/tcp --permanent
firewall-cmd --zone=public --add-port=2181/tcp --permanent
重启防火墙让它生效
systemctl restart firewalld.service
查看已经开放的端口
firewall-cmd --list-ports
然后就开始执行命令 这个命令保存到cmd文件夹里下次接着用
docker run -itd -p 2181:2181 -p 2888:2888 -p 3888:3888 --restart always --name=zookeeper --hostname zookeeper-server --privileged=true \
-v /public/soft/zookeeper/conf/zoo.cfg:/conf/zoo.cfg \
-v /public/soft/zookeeper/data:/data \
-v /public/soft/zookeeper/datalog:/datalog \
-v /public/soft/zookeeper/logs:/logs \
-e "TZ=Asia/Shanghai" \
-e "ZOO_MY_ID=3" \
-e "JAVA_OPTS=-server -Xms512m -Xmx512m -Xmn256m -Duser.home=/opt -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m -XX:+AlwaysPreTouch -XX:-UseBiasedLocking" \
zookeeper:latest
如果有3台服务器那就 一个1 一个2 一个3 不同的服务器不要写一样的 其他的都一样.
“ZOO_MY_ID=1”
“ZOO_MY_ID=2”
“ZOO_MY_ID=3”
-v的挂在本地要创建文件夹啊 不创建可能就报错了;
验证
docker exec -ti [你的zookeeper container id] zkServer.sh status
docker exec -it zookeeper zkServer.sh status
如果报上面的这个错 那就重启docker
systemctl restart docker 就可以解决了. 但是是啥原因暂时还不知道. 有知道的可以告诉我下 … 欢迎指导!!!