首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Docker里使用docker-compose安装 Zookeeper集群,心里有点忐忑,很怕踩坑

Zookeeper 最初是由雅虎(Yahoo!)开发的分布式协调服务项目,2008 年开源后成为 Apache软件基金会维护的顶级项目。它的设计目标是解决分布式系统中的协调问题,如配置管理、服务发现、分布式锁等。

单个Zookeeper 如果出现故障会导致服务不可用,需要手动重启。Zookeeper 集群支持多节点部署,部分节点宕机就不影响服务,另外所有写操作通过 Leader 同步到多数节点,保证数据的一致性。总之Zookeeper集群好处多多。

这几天用Docker来安装了个 Zookeeper 最小集群,3 个节点(1 Leader + 2 Follower),允许 1 个节点宕机。在这里记录一下安装步骤。

第一步,创建文件夹

由于我使用的是 Windows 环境,在 D盘建立了一个专门存放 docker 数据卷的目录。

如图所示,创建了三个zookeeper文件夹,分别用来存放 Zookeeper 的三个节点。

每个文件夹下myid分别对应不同的id。zookeeper1的myid文件内容为1,zookeeper2的myid文件内容为2,zookeeper3的myid文件内容为3。

第二步,创建docker-compose.yml

services:   

zoo1:

  image:zookeeper:3.8# 建议指定版本

  hostname:zoo1

  ports:

    -"2181:2181"

  environment:

    ZOO_MY_ID:1

    ZOO_SERVERS:"server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181"

  volumes:

    - type:bind

      source:D:/docker-data/zookeeper-cluster/zookeeper1/data

      target:/data

    - type:bind

      source:D:/docker-data/zookeeper-cluster/zookeeper1/datalog

      target:/datalog

  networks:

    -zk_net

zoo2:

  image:zookeeper:3.8

  hostname:zoo2

  ports:

    -"2182:2181"

  environment:

    ZOO_MY_ID:2

    ZOO_SERVERS:"server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181"

  volumes:

    - type:bind

      source:D:/docker-data/zookeeper-cluster/zookeeper2/data

      target:/data

    - type:bind

      source:D:/docker-data/zookeeper-cluster/zookeeper2/datalog

      target:/datalog

  networks:

    -zk_net

zoo3:

  image:zookeeper:3.8

  hostname:zoo3

  ports:

    -"2183:2181"

  environment:

    ZOO_MY_ID:3

    ZOO_SERVERS:"server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181"

  volumes:

    - type:bind

      source:D:/docker-data/zookeeper-cluster/zookeeper3/data

      target:/data

    - type:bind

      source:D:/docker-data/zookeeper-cluster/zookeeper3/datalog

      target:/datalog

  networks:

    -zk_net

networks:

zk_net:

  driver:bridge

在这个配置文件做了以下几件事:

1、定义了三个 Zookeeper 节点:zookeeper1、zookeeper2和zookeeper3

2、每个节点都指定了唯一的ZOO_MY_ID(Zookeeper 的 ID)

3、所有节点都在同一个虚拟网络zoo-net中

4、每个节点都映射了不同的端口:2181,2182,2183

第三步,启动集群

在docker-compose.yml文件所在目录执行:

docker-compose up -d

-d 参数表示“后台运行”。

等几秒钟,集群就搭好了!

查看容器是否运行成功:

docker ps

第四步,测试集群

使用客户端连接集群:

docker exec -it zookeeper1 zkCli.sh

其中 zookeeper1 替换为容器名称。

最后看到命令提示符,就代表创建集群成功了。

[zk: localhost:2181(CONNECTED) 0]

查看集群信息:

config

操作一下:

# 创建一个节点

create /test-node "Hello Zoo"

# 查看这个节点:

get /test-node

# 查看所有节点:

ls /

# 递归查看所有节点

ls -R /

还有其他命令:

# 查看节点创建时间

stat /your/node | grep ctime

# 查看ACL权限

getAcl /your/node

第五步,关闭和清理集群

当我们不需要用的时候,可以一键关闭并删除容器:

docker-compose down

如果还想把所有数据也清掉,加上-v参数:

docker-compose down -v

现在已经成功用 Docker Compose 搭建了一个 3 节点的 Zookeeper 集群,zookeeper集群到此结束,接下来就可以使用 Springboot 整合并使用zookeeper集群了。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OT6rTgIiN00t3ozYUirTs7Dg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券