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

17 篇文章 16 订阅
3 篇文章 0 订阅

之前有介绍过使用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

这里写图片描述

查看服务状态:

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

这里写图片描述
可以成功连接到上面创建的zookeeper服务。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的docker-compose.yml文件,用于在Docker部署Zookeeper和Kafka: ```yaml version: '3' services: zookeeper: image: zookeeper:3.5 container_name: zookeeper ports: - "2181:2181" environment: ZOO_MY_ID: 1 ZOO_SERVERS: server.1=zookeeper:2888:3888 volumes: - "./data/zookeeper:/data" - "./logs/zookeeper:/datalog" kafka: image: wurstmeister/kafka:2.13-2.7.0 container_name: kafka ports: - "9092:9092" environment: KAFKA_ADVERTISED_HOST_NAME: localhost KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_CREATE_TOPICS: "test-topic:1:1" volumes: - "./data/kafka:/var/lib/kafka/data" depends_on: - zookeeper ``` 这个docker-compose.yml文件包含了两个服务:Zookeeper和Kafka。 Zookeeper服务使用Zookeeper官方镜像,并暴露2181端口。它还定义了一个环境变量ZOO_MY_ID,用于指定Zookeeper实例的ID。我们还将Zookeeper的数据和日志目录映射到宿主机上的./data/zookeeper和./logs/zookeeper目录中。 Kafka服务使用了wurstmeister/kafka镜像,并暴露了9092端口。我们设置了两个环境变量,一个是KAFKA_ADVERTISED_HOST_NAME,用于指定Kafka监听的主机名,另一个是KAFKA_ZOOKEEPER_CONNECT,用于指定Zookeeper的地址。我们还将Kafka的数据目录映射到宿主机上的./data/kafka目录中。 最后,我们使用depends_on关键字来定义Kafka服务依赖于Zookeeper服务。这样,当我们启动docker-compose时,Docker会先启动Zookeeper服务,然后再启动Kafka服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值