自己学Docker:15.Docker使用实战--zookeeper集群部署

之前有介绍过使用Docker创建MySQL服务,说明了三种方式。

  1. 使用Docker镜像
  2. 通过Dockerfile构建
  3. 通过docker stack deploy(或者docker-compose)

1,2可以归为一种,即单个应用方式: Dockerfile -> 镜像 -> 容器(docker run) 。对于搭建集群环境的话,Docker Stack方式实施和管理更为方便。所以这里搭建一个zookeeper的集群环境就不再使用1,2种,想,具体方式可以参见Docker创建MySQL服务。

zookeeper.yml

通过docker stack deploy方式首先要编写yaml文件。样例可以参见dockerhub的zookeeper镜像的介绍。
如下:

version: '3.1'

services:
    zoo1:
        image: zookeeper
        restart: always
        hostname: zoo1
        ports:
            - 2181:2181
        environment:
            ZOO_MY_ID: 1
            ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888

    zoo2:
        image: zookeeper
        restart: always
        hostname: zoo2
        ports:
            - 2182:2181
        environment:
            ZOO_MY_ID: 2
            ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888

    zoo3:
        image: zookeeper
        restart: always
        hostname: zoo3
        ports:
            - 2183:2181
        environment:
            ZOO_MY_ID: 3
            ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888

上面的文件创建了三个zookeeper的集群服务,以复制模式(replicated mode)启动Zookeeper,并将容器内的2181端口分别映射到主机的2181,2182,2183。

当然,严格的说,这个也不能说是集群模式。毕竟所有容器都运行再同一主机,如果宕机,所有的zookeeper服务器都将处于脱机状态。

执行,生成服务

采用如下命令:

sudo docker stack deploy -c zookeeper.yml zk

自己学Docker:15.Docker使用实战--zookeeper集群部署_第1张图片

查看服务状态:

sudo docker stack services zk

这里写图片描述

连接zookeeper服务

zkCli.sh

zookeeper的bin目录下提供了一个客户端连接工具zkCli.sh。
到https://www.apache.org/dyn/closer.cgi/zookeeper/下载zookeeper即可获得。
进入到bin目录下,执行命令。

./zkCli.sh -server 127.0.0.1:2181

自己学Docker:15.Docker使用实战--zookeeper集群部署_第2张图片
可以成功连接到上面创建的zookeeper服务。

命令行的相关操作,可以参见
分布式服务框架ZooKeeper安装和配置
分布式服务框架ZooKeeper:四字命令

你可能感兴趣的:(Docker,zookeeper,自己学Docker)