赞
踩
在之前的文章中,我们已经完成了zookeeper镜像的拉取,并且成功创建了单结点的zookeeper的kafka,storm集群,那么在本篇文章中我将介绍通过Docker搭建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来判断集群的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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。