需要
linux主机,安装docker,下载zookeeper镜像
zookeeper集群需知
zookeeper集群至少需要3个节点,每个节点保存全量数据,即内容完全相同。其中一个崩溃后,只要节点数大于3个则可以继续使用。
zookeeper集群只需要修改两个地方,然后各自启动即可:
1、每个节点的配置文件zoo.cfg,列出每个节点地址server.X=...
,其中288*端口号随意什么都行
2、容器中的/data/myid中存放X
,即节点自身标识
步骤一:创建zoo.cfg和myid
zoo.tmpl模板,用于脚本创建多组配置文件:
clientPort=210${N}
dataDir=/data
dataLogDir=/datalog
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
server.1=127.0.0.1:2881:3881
server.2=127.0.0.1:2882:3882
server.3=127.0.0.1:2883:3883
server.4=127.0.0.1:2884:3884
server.5=127.0.0.1:2885:3885
脚本生成5份zoo.cfg和myid分别放在1~5号目录下
for port in seq 1 5; do \
mkdir -p ./${port} \
&& N=${port} envsubst < ./zoo.tmpl > ./${port}/zoo.cfg \
&& echo ${port} > ./${port}/myid;
done;
步骤二:挂载zoo.cfg、myid,运行5个容器
for p in seq 1 5; do \
docker run -d --net host --name zk_${p} \
--privileged=true -v /home/zk/${p}/myid:/data/myid \
--privileged=true -v /home/zk/${p}/zoo.cfg:/conf/zoo.cfg zookeeper ;\
done;
注:我这里以host网络启动容器,方便访问。
测试
这样我们就可以访问zookeeper集群了:
zkCli.sh -server 127.0.0.1:2101,127.0.0.1:2102,127.0.0.1:2103,127.0.0.1:2104,127.0.0.1:2105
利用docker关闭、开启部分节点,就可以测试集群特性了。