Docker安装Zookeeper教程(超详细)
生命无罪,健康万岁,我是laity。
我曾七次鄙视自己的灵魂:
第一次,当它本可进取时,却故作谦卑;
第二次,当它在空虚时,用爱欲来填充;
第三次,在困难和容易之间,它选择了容易;
第四次,它犯了错,却借由别人也会犯错来宽慰自己;
第五次,它自由软弱,却把它认为是生命的坚韧;
第六次,当它鄙夷一张丑恶的嘴脸时,却不知那正是自己面具中的一副;
第七次,它侧身于生活的污泥中,虽不甘心,却又畏首畏尾。
Docker安装ZK
-
查看本地镜像和检索拉取Zookeeper 镜像
# 查看本地镜像 docker images # 检索ZooKeeper 镜像 docker search zookeeper # 拉取ZooKeeper镜像最新版本 docker pull zookeeper:latest # 我使用的版本 docker pull zookeeper:3.5.7
-
创建ZooKeeper 挂载目录(数据挂载目录、配置挂载目录和日志挂载目录)
mkdir -p /mydata/zookeeper/data # 数据挂载目录 mkdir -p /mydata/zookeeper/conf # 配置挂载目录 mkdir -p /mydata/zookeeper/logs # 日志挂载目录
-
启动ZooKeeper容器
docker run -d --name zookeeper --privileged=true -p 2181:2181 -v /mydata/zookeeper/data:/data -v /mydata/zookeeper/conf:/conf -v /mydata/zookeeper/logs:/datalog zookeeper:3.5.7
-
参数说明
-e TZ="Asia/Shanghai" # 指定上海时区 -d # 表示在一直在后台运行容器 -p 2181:2181 # 对端口进行映射,将本地2181端口映射到容器内部的2181端口 --name # 设置创建的容器名称 -v # 将本地目录(文件)挂载到容器指定目录; --restart always #始终重新启动zookeeper,看需求设置不设置自启动
-
添加ZooKeeper配置文件,在挂载配置文件目录(/mydata/zookeeper/conf)下,新增zoo.cfg 配置文件,配置内容如下:
dataDir=/data # 保存zookeeper中的数据 clientPort=2181 # 客户端连接端口,通常不做修改 dataLogDir=/datalog tickTime=2000 # 通信心跳时间 initLimit=5 # LF(leader - follower)初始通信时限 syncLimit=2 # LF 同步通信时限 autopurge.snapRetainCount=3 autopurge.purgeInterval=0 maxClientCnxns=60 standaloneEnabled=true admin.enableServer=true server.1=localhost:2888:3888;2181
-
进入容器内部,验证容器状态
# 进入zookeeper 容器内部 docker exec -it zookeeper /bin/bash # 检查容器状态 docker exec -it zookeeper /bin/bash ./bin/zkServer.sh status # 进入控制台 docker exec -it zookeeper zkCli.sh
-
安装ZooInspector客户端连接
下载地址:https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip; 命令:java -jar zookeeper-dev-ZooInspector.jar
遇到的问题:WARNING: IPv4 forwarding is disabled. Networking will not work
解决办法: # vi /etc/sysctl.conf 或者 # vi /usr/lib/sysctl.d/00-system.conf 添加如下代码: net.ipv4.ip_forward=1 重启network服务 # systemctl restart network
测试
docker exec -it zookeeper zkCli.sh
Docker安装Zookeeper集群
-
准备三台机器互相ping通 配置文件zoo.cfg
cd /mydata/zookeeper/conf vim zoo.cfg # 三台机器分别执行添加 clientPort=2181 dataDir=/data dataLogDir=/data/log tickTime=2000 initLimit=5 syncLimit=2 autopurge.snapRetainCount=3 autopurge.purgeInterval=0 maxClientCnxns=60 server.1=node1:2888:3888 server.2=node2:2888:3888 server.3=node3:2888:3888
-
设置myid标识
echo 1 > /mydata/zookeeper/conf/myid 1、2、3 三台机器分别执行 zookeeper选举也会根据myid的大小进行投票master