Docker下的zookeeper集群

本文介绍了在Docker环境下搭建Zookeeper集群的原因,对比了单节点与集群的优势,详细展示了使用docker-compose配置3个Zookeeper节点的过程,并演示了如何创建znode以验证集群连接。
摘要由CSDN通过智能技术生成

        在之前的文章中,我们已经完成了zookeeper镜像的拉取,并且成功创建了单结点的zookeeper的kafka,storm集群,那么在本篇文章中我将介绍通过Docker搭建zookeeper集群,那么为什么使用zookeeper集群呢,我们之前用单结点来部署不是也能够成功吗?

        单节点的ZooKeeper是指只有一个ZooKeeper服务器在运行的情况。它的优点是部署简单,占用较少的资源。对于小规模应用或测试环境,单节点的ZooKeeper可以满足需求。

        然而,单节点的ZooKeeper也存在一些缺点。首先,是单点故障的问题。如果单节点的ZooKeeper服务器宕机,整个系统将无法继续正常运行。其次,单节点无法提供高可用性和容错性。当负载增加或者需要更高的可用性时,单节点的ZooKeeper无法满足需求。此外,单节点的ZooKeeper无法进行水平扩展,无法处理大规模的并发请求。

        相比之下,ZooKeeper集群是由多个ZooKeeper服务器组成的。每个服务器之间相互协作,共同提供服务。集群的优点是可以提供更高的可用性和容错性。当集群中的某个节点宕机时,其他节点可以继续处理请求,系统依然可用。此外,集群可以分摊负载,提高并发性能。如果需要处理大规模的并发请求或者确保高可用性,可以选择ZooKeeper集群。

        然而,ZooKeeper集群也存在一些缺点。首先,部署和管理集群相对复杂,需要配置和维护多个服务器。其次,集群的资源消耗较大,需要更多的硬件资源。此外,需要通过一些额外的工具来管理和监控集群状态。

搭建zookeeper集群

        下面我来通过使用docker-compose文件来搭建一个由3个zookeeper结点组成的zookeeper集群:

version: '2'

services:
  zookeeper1: # 定义名为zookeeper1的服务
    image: 'bitnami/zookeeper:3.5.9' # 使用bitnami/zookeeper:3.5.9镜像
    container_name: zookeeper1
    ports: # 宿主机端口:容器端口 映射
      - '2181:2181' # 映射宿主机端口2181到容器端口2181
      - '2888:2888' # 映射宿主机端口2888到容器端口2888
      - '3888:3888'  # 映射宿主机端口3888到容器端口3888
    environment: # 设置环境变量
      - ZOO_SERVER_ID=1 # 指定Zookeeper服务器ID为1
      - ZOO_SERVERS=0.0.0.0:2888:3888,zookeeper2:2888:3888,zookeeper3:2888:3888 # 设置Zookeeper集群连接信息
      - ALLOW_ANONYMOUS_LOGIN=yes # 允许匿名登录
  zookeeper2: # 定义名为zookeeper2的服务
    image: 'bitnami/zookeeper:3.5.9' # 使用bitnami/zookeeper:3.5.9镜像
    container_name: zookeeper2
    ports: # 宿主机端口:容器端口 映射
      - '21812:2181' # 映射宿主机端口21812到容器端口2181
      - '28882:2888' # 映射宿主机端口28882到容器端口2888
      - '38882:3888' # 映射宿主机端口38882到容器端口3888
    environment: # 设置环境变量
      - ZOO_SERVER_ID=2 # 指定Zookeeper服务器ID为2
      - ZOO_SERVERS=zookeeper1:2888:3888,0.0.0.0:2888:3888,zookeeper3:2888:3888 # 设置Zookeeper集群连接信息
      - ALLOW_ANONYMOUS_LOGIN=yes # 允许匿名登录
  zookeeper3: # 定义名为zookeeper3的服务
    image: 'bitnami/zookeeper:3.5.9' # 使用bitnami/zookeeper:3.5.9镜像
    container_name: zookeeper3
    ports: # 宿主机端口:容器端口 映射
      - '21813:2181' # 映射宿主机端口21813到容器端口2181
      - '28883:2888' # 映射宿主机端口28883到容器端口2888
      - '38883:3888' # 映射宿主机端口38883到容器端口3888
    environment: # 设置环境变量
      - ZOO_SERVER_ID=3 # 指定Zookeeper服务器ID为3
      - ZOO_SERVERS=zookeeper1:2888:3888,zookeeper2:2888:3888,0.0.0.0:2888:3888 # 设置Zookeeper集群连接信息
      - ALLOW_ANONYMOUS_LOGIN=yes # 允许匿名登录

        如果没有拉取zookeeper镜像可以去我之前的文章Docker下拉取zookeeper镜像拉取。拉取了zookeeper镜像之后,在docker-compose文件目录位置启动集群:

docker-compose up

        当然也可以通过命令查看集群状态:

docker ps

        那么这样我们就将集群搭建完毕了。

创建znode

        下面我们通过创建znode来判断集群的zookeeper节点之间是否连接成功。首先通过docker连接到其中某个zookeeper节点的命令行中:

docker exec -it <zookeeper容器名> zkCli.sh

        可以看到成功连接到了zookeeper集群中的某个节点,之后在这个节点中添加一个znode:

create <znode的路径> <znode中的数据>

        之后连接一个新的zookeeper节点,并通过命令查看在前一个节点中创建的znode是否存在:

ls <要列出子节点的znode路径>

 

        可以找到,说明集群的zookeeper节点连接成功。

至此,我们完成了Docker下zookeeper集群的搭建。


上一篇:Docker下的Flink

下一篇:Docker下的HBase

点击获得全部Docker大数据专栏文章

  • 23
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值