深入浅出Docker技术- 基于Docker ZooKeeper 集群的搭建

  ZooKeeper为分布式应用提供高效、高可用的分布式协调服务,它有三种运行模式:单机模式、伪集群模式和集群模式。如果对于ZooKeeper 不了解可以查看我之前的Zookeeper 系列教程:  

  ZooKeeper为分布式应用提供高效、高可用的分布式协调服务,它有三种运行模式:单机模式、伪集群模式和集群模式。如果对于ZooKeeper 不了解可以查看我之前的Zookeeper 系列教程:  

       Zookeeper教程

环境准备:

    docker/centos7

实例机器:
     192.168.1.102 本地虚拟机

概括:

   基于三个容器,来实现Zookeeper的集群模式:

方式一:

     采用传统的docker命令,一个一个的容器部署,dockerfile 这里我就不编写,采用官网的docker文件;

 1.新建docker网络

docker network create viemall-zookeeper
docker network ls

2.启动容器服务:

容器A:

docker run -d \
	 --restart=always \
	 -v /opt/docker/zookeeper/zoo1/data:/data \
	 -v /opt/docker/zookeeper/zoo1/datalog:/datalog \
	 -e ZOO_MY_ID=1 \
	 -e ZOO_SERVERS="server.1=zookeeper-A:2888:3888 server.2=zookeeper-B:2888:3888 server.3=zookeeper-C:2888:3888" \
	 --name=zookeeper-A \
	 --net=viemall-zookeeper \
	 --privileged \
	 zookeeper:3.4.11

容器B: 

docker run -d \
	 --restart=always \
	 -v /opt/docker/zookeeper/zoo2/data:/data \
	 -v /opt/docker/zookeeper/zoo2/datalog:/datalog \
	 -e ZOO_MY_ID=2 \
	 -e ZOO_SERVERS="server.1=zookeeper-A:2888:3888 server.2=zookeeper-B:2888:3888 server.3=zookeeper-C:2888:3888" \
	 --name=zookeeper-B \
	 --net=viemall-zookeeper \
	 --privileged \
	 zookeeper:3.4.11

容器C:

docker run -d \
	 --restart=always \
	 -v /opt/docker/zookeeper/zoo3/data:/data \
	 -v /opt/docker/zookeeper/zoo3/datalog:/datalog \
	 -e ZOO_MY_ID=3 \
	 -e ZOO_SERVERS="server.1=zookeeper-A:2888:3888 server.2=zookeeper-B:2888:3888 server.3=zookeeper-C:2888:3888" \
	 --name=zookeeper-C \
	 --net=viemall-zookeeper \
	 --privileged \
	 zookeeper:3.4.11

下面验证一下集群是否工作正常:

查看三个容器的IP:

docker   inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'   b0a6bb150200

可以通过命令:echo stat|nc 172.20.0.4 2181 来查看哪个节点被选择作为follower或者leader 

image.png

通过上面的命令可见集群搭建成功,并且有一个节点为leader状态。

方式二: docker compose

       docker compose是docker编排服务的一部分,可以让用户在其他平台上快速的安装docker,一键就部署成功了;  

      docker compose文件编写:

                Zookeeper compose 地址:  https://gitee.com/gz-tony/viemall-dubbo/tree/master/viemall-docekr/compose/zookeeper

     docker compose 服务启动;

          docker-compose up -d

 

ZooKeeper 常用四字命令:

      ZooKeeper 支持某些特定的四字命令字母与其的交互。它们大多是查询命令,用来获取 ZooKeeper 服务的当前状态及相关信息。用户在客户端可以通过 telnet 或 nc 向 ZooKeeper 提交相应的命令

·         1. 可以通过命令:echo stat|nc 127.0.0.1 2181 来查看哪个节点被选择作为follower或者leader

·         2. 使用echo ruok|nc 127.0.0.1 2181 测试是否启动了该Server,若回复imok表示已经启动。

·         3. echo dump| nc 127.0.0.1 2181 ,列出未经处理的会话和临时节点。

·         4. echo kill | nc 127.0.0.1 2181 ,关掉server

·         5. echo conf | nc 127.0.0.1 2181 ,输出相关服务配置的详细信息。

·         6. echo cons | nc 127.0.0.1 2181 ,列出所有连接到服务器的客户端的完全的连接 / 会话的详细信息。

·         7. echo envi |nc 127.0.0.1 2181 ,输出关于服务环境的详细信息(区别于 conf 命令)。

·         8. echo reqs | nc 127.0.0.1 2181 ,列出未经处理的请求。

·         9. echo wchs | nc 127.0.0.1 2181 ,列出服务器 watch 的详细信息。

·         10. echo wchc | nc 127.0.0.1 2181 ,通过 session 列出服务器 watch 的详细信息,它的输出是一个与 watch 相关的会话的列表。

·         11. echo wchp | nc 127.0.0.1 2181 ,通过路径列出服务器 watch 的详细信息。它输出一个与 session 相关的路径。