最終目的:kafka的集群。
kafka依賴zookeeper,因此而配置zookeeper的集群。
服務器
192.168.220.123 zkNodeA
192.168.220.127 zkNodeB
192.168.220.206 zkNodeC
為了后期移動方便,依舊使用docker
搭建服務器準備:已有docker,可聯(lián)網(wǎng)
為減少制作鏡像時下載文件慢,提前做了下載
- 制作基礎鏡像
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
依次在節(jié)點上執(zhí)行
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狀態(tài)
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 創(chuàng)建數(shù)據(jù)
在任意一臺上
./zkCli.sh -server 192.168.220.127:2181
[zk: 192.168.220.127:2181(CONNECTED) 1] create /projecttest testbylixr
Created /projecttest
在其他兩臺上查看
Paste_Image.png
4.3 切換leader
對leader節(jié)點 關閉
/opt/zookeeper-3.4.9/bin/zkServer.sh stop
再次檢查節(jié)點狀態(tài),之前l(fā)eader 已不存在,而另外兩臺中
有一臺由 follower 變成 leader
到此,zookeeper的集群配置已完成,后期將手動改成腳本,做到簡單化。