最终目的:kafka的集群。
kafka依赖zookeeper,因此而配置zookeeper的集群。
服务器
192.168.220.123 zkNodeA
192.168.220.127 zkNodeB
192.168.220.206 zkNodeC
为了后期移动方便,依旧使用docker
搭建服务器准备:已有docker,可联网
为减少制作镜像时下载文件慢,提前做了下载
- 制作基础镜像
FROM centos
MAINTAINER lixr
ADD ./tools /opt/
VOLUME [ "/opt/product/data/" ]
CMD /usr/sbin/init
docker build -t zookeeper:0224 ./
tools 文件下有jdk1.8.0_101 和 zookeeper-3.4.9
- 启动基础镜像
docker run -d -p 2888:2888 -p 3888:3888 -p 2181:2181 --privileged=true -v /opt/product/data/zookeeper/:/opt/product/data --name zkNode zookeeper:0224
- 修改配置
进入容器
docker exec -ti zkNode /bin/bash
在/opt/zookeeper-3.4.9/conf
目录下配置 zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/product/data/
dataLogDir=/opt/product/data/zkdatalog
clientPort=2181
server.1=0.0.0.0:2888:3888
server.2=192.168.220.127:2888:3888
server.3=192.168.220.206:2888:3888
当前服务器上 ip 换成 0.0.0.0
依次在节点上执行
echo "1" > /opt/product/data/myid
echo "2" > /opt/product/data/myid
echo "3" > /opt/product/data/myid
- 启动服务
export JAVA_HOME= /opt/jdk1.8.0_101/
/opt/zookeeper-3.4.9/bin/zkServer.sh start
其他两台操作相同
- 测试集群
4.1 检查zookeeper状态
zkNodeA:
./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: follower
zkNodeB:
./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: leader
zkNodeC:
./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: follower
有一台服务器为 leader
4.2 创建数据
在任意一台上
./zkCli.sh -server 192.168.220.127:2181
[zk: 192.168.220.127:2181(CONNECTED) 1] create /projecttest testbylixr
Created /projecttest
在其他两台上查看4.3 切换leader
对leader节点 关闭
/opt/zookeeper-3.4.9/bin/zkServer.sh stop
再次检查节点状态,之前leader 已不存在,而另外两台中
有一台由 follower 变成 leader
到此,zookeeper的集群配置已完成,后期将手动改成脚本,做到简单化。