【Docker】搭建Zookeeper集群

这篇具有很好参考价值的文章主要介绍了【Docker】搭建Zookeeper集群。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Docker】搭建Zookeeper集群

下载镜像

docker pull zookeeper:3.5.8
wy:study wy$ docker pull zookeeper:3.5.8
3.5.8: Pulling from library/zookeeper

Digest: sha256:12af523731cbe390f5332d6c1e254f1d56c734a786910d5582653445a5cee299
Status: Downloaded newer image for zookeeper:3.5.8
docker.io/library/zookeeper:3.5.8
docker images

docker搭建zookeeper集群,开发实践,docker,java-zookeeper,zookeeper

Standalone模式

启动容器

通过如下命令启动容器:

docker run -p 8080:8080 --name zookeeper-standalone --restart always -d zookeeper:3.5.8

上述命令在后台运行一个名为 zookeeper-standalone 的容器。由于 Zookeeper 是’快速失败’,因此最好通过 --retart参数设置容器在意外停止时自动重启。默认是 no,表示不重启。-p 参数将宿主机端口 8080 与容器端口 8080 映射。

通过如下命令查看运行中的 Zookeeper 容器:

[root@codingce0 docker]# docker ps


CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                  NAMES
2268f5dd10f2        zookeeper:3.5.8     "/docker-entrypoint.…"   8 minutes ago       Up 8 minutes        2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, 8080/tcp   zookeeper-standalone

可以看到容器对外暴露了4个端口:2181 2888 3888 8080(分别是 Zookeeper 客户端端口,主从节点交互信息的端口,选举端口以及 AdminServer 端口)。暴露端口主要是镜像包含了 EXPOSE 2181 2888 3888 8080 命令,具体可以参阅镜像Dockerfile。

Zookeeper 3.5 版本开始提供 AdminServer 功能。AdminServer 是嵌入式 Jetty 服务器,为四字母命令提供 HTTP 接口。默认端口是8080。由于在启动容器时做了端口映射,可以直接通过 http://localhost:8080/commands/stats 进行访问。

在Docker中容器默认是无法与外部通信,需要将容器内的端口映射到本地宿主机的端口,这样用户通过访问宿主机指定端口时相当于访问容器内的端口。

进入容器

通过如下命令进入容器内:

docker exec -it zookeeper-standalone /bin/bash
root@2268f5dd10f2:/apache-zookeeper-3.5.8-bin#

容器的默认工作目录为 /apache-zookeeper-3.5.8-bin,是因为 Zookeeper 镜像做如下设置:

ARG DISTRO_NAME=apache-zookeeper-3.5.8-bin
WORKDIR $DISTRO_NAME

配置文件默认在 /conf 目录下,具体看一下默认配置:

root@2268f5dd10f2:/apache-zookeeper-3.5.8-bin# cat /conf/zoo.cfg
dataDir=/data
dataLogDir=/datalog
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
standaloneEnabled=true
admin.enableServer=true
server.1=localhost:2888:3888;2181

可以使用 zkServer.sh status 命令来查看 Zookeeper 启动状态:

root@2268f5dd10f2:/apache-zookeeper-3.5.8-bin# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: standalone

连接Zookeeper服务

可以使用如下命令连接Zookeeper服务:

zkCli.sh -server 127.0.0.1:2181

可以不用先进入容器再连接Zookeeper服务,使用如下命令一步到位:

docker exec -it zookeeper-standalone zkCli.sh -server 127.0.0.1:2181

集群模式

搭建3个 Zookeeper 节点的集群。

启动容器

Docker Compose

Linux 上可以从 Github 上下载它的二进制包来使用,最新发行的版本地址:
https://github.com/docker/compose/releases
运行以下命令以下载 Docker Compose 的当前稳定版本:

sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

将可执行权限应用于二进制文件:

sudo chmod +x /usr/local/bin/docker-compose

创建软链

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

测试是否安装成功

docker-compose --version
启动容器操作

为了避免一个一个的启动,使用 docker-compose 的方式来启动 Zookeeper 集群。首先创建一个名为 docker-compose.yml 的文件, 其内容如下:
docker搭建zookeeper集群,开发实践,docker,java-zookeeper,zookeeper

version: '3.1'

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

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

  zoo3:
    image: zookeeper:3.5.8
    restart: always
    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=0.0.0.0:2888:3888;2181

上述配置将以副本模式启动 Zookeeper 3.5.8,同时会告诉 Docker 运行三个 Zookeeper 容器:zoo1、zoo2、zoo3,并分别将本地的 2181, 2182, 2183 端口绑定到对应的容器的 2181 端口上。

ZOO_MY_ID 和 ZOO_SERVERS 是搭建 Zookeeper 集群需要设置的两个环境变量, 其中 ZOO_MY_ID 表示 Zookeeper 服务的 id, 它是1-255 之间的整数, 必须在集群中唯一。ZOO_SERVERS 是Zookeeper 集群的主机列表。

接着在 docker-compose.yml 当前目录下运行如下命令:
docker搭建zookeeper集群,开发实践,docker,java-zookeeper,zookeeper

COMPOSE_PROJECT_NAME=zookeeper_cluster docker-compose up -d

或者指定配置文件名称 COMPOSE_PROJECT_NAME=zookeeper_cluster docker-compose -f docker-compose.yml up -d。
在 docker-compose up 前添加 COMPOSE_PROJECT_NAME=zookeeper_cluster 环境变量是为 compose 工程起一个名字。

COMPOSE_PROJECT_NAME=zookeeper_cluster docker-compose up -d
Creating network "zookeeper_cluster_default" with the default driver
Creating zookeeper_cluster_zoo1_1 ... done
Creating zookeeper_cluster_zoo3_1 ... done
Creating zookeeper_cluster_zoo2_1 ... done

通过docker p命令查看运行中的 Zookeeper 集群容器

[root@codingce0 docker]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                  NAMES
2268f5dd10f2        zookeeper:3.5.8     "/docker-entrypoint.…"   About an hour ago   Up About an hour    2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, 8080/tcp   zookeeper_cluster-zoo1-1
1e08efd91c98        zookeeper:3.5.8     "/docker-entrypoint.…"   About an hour ago   Up About an hour    2888/tcp, 3888/tcp, 8080/tcp, 0.0.0.0:2182->2181/tcp   zookeeper_cluster-zoo2-1
0006137a82f2        zookeeper:3.5.8     "/docker-entrypoint.…"   About an hour ago   Up About an hour    2888/tcp, 3888/tcp, 8080/tcp, 0.0.0.0:2183->2181/tcp   zookeeper_cluster-zoo3-1
[root@codingce0 docker]#

进入容器

通过docker exec -it zookeeper_clusteroo1-1 /bin/bash命令进入 zookeeper_cluster-zoo1-1 容器内:

[root@codingce0 docker]# docker exec -it zookeeper_cluster-zoo1-1 /bin/bash
root@zoo1:/apache-zookeeper-3.5.8-bin#

zkServer.sh status 查看 Zookeeper 的启动状态

root@zoo1:/apache-zookeeper-3.5.8-bin# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower
root@zoo1:/apache-zookeeper-3.5.8-bin#

可以看到该节点是 Follower 节点,以此类推,查看 zookeeper_cluster-zoo2-1、zookeeper_cluster-zoo3-1 容器的启动状态:

[root@codingce0 docker]# docker exec -it zookeeper_cluster-zoo2-1 /bin/bash
root@zoo2:/apache-zookeeper-3.5.8-bin# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower
root@zoo2:/apache-zookeeper-3.5.8-bin#

[root@codingce0 docker]# docker exec -it zookeeper_cluster-zoo3-1 /bin/bash
root@zoo3:/apache-zookeeper-3.5.8-bin# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader

创建了一个主节点Leader,2个从节点Follower。

连接Zookeeper服务

zkCli.sh -server localhost:2181

docker搭建zookeeper集群,开发实践,docker,java-zookeeper,zookeeper
zoo1, zoo2, zoo3 的 2181 端口分别映射到了本地主机的 2181, 2182, 2183 端口上, 因此使用如下命令连接 Zookeeper 集群:

zkCli.sh -server localhost:2181,localhost:2182,localhost:2183 

docker搭建zookeeper集群,开发实践,docker,java-zookeeper,zookeeper文章来源地址https://www.toymoban.com/news/detail-766386.html

到了这里,关于【Docker】搭建Zookeeper集群的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Zookeeper搭建Kafka高可用集群(实践可用)

    目录 一、Zookeeper集群搭建 1.1 下载  解压 1.2 修改配置 1.3 标识节点 1.4 启动集群 1.5 集群验证 二、Kafka集群搭建 2.1 下载解压 2.2 拷贝配置文件 2.3 修改配置 2.4 启动集群 2.5 创建测试主题 2.6 写入数据测试 为保证集群高可用,Zookeeper 集群的节点数最好是奇数,最少有

    2024年02月09日
    浏览(42)
  • docker容器单机部署zookeeper+kafka集群

    KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 其中zookeeper会转化成zookeeper的ip kafka1: 10.21.214.66 其中10.21.214.66 填写宿主机ip

    2024年02月19日
    浏览(43)
  • Docker搭建zookeeper

    本文参考自:docker-compose快速搭建Zookeeper集群,熬到凌晨三点多验证部署成功,网上有很多文章已经无法正确部署了,因为有些东西版本升级了,版本跟不上就会报错 还有一种更加详细更加全面的部署方式:Docker之docker-compose一键部署Zookeeper集群,但笔者还未验证,先记录下

    2024年02月13日
    浏览(35)
  • Windows使用docker desktop 安装kafka、zookeeper集群

    参考文章:http://t.csdn.cn/TtTYI https://blog.csdn.net/u010416101/article/details/122803105?spm=1001.2014.3001.5501 准备工作: ​ 在开始新建集群之前,新建好文件夹,用来挂载kafka、zookeeper数据,如下: zookeeper文件夹 D:softdockerzookeeperzoo1data D:softdockerzookeeperzoo1datalog D:softdockerzookeeperzoo

    2024年02月14日
    浏览(47)
  • Zookeeper篇——搭建Zookeeper服务器,docker搭建并启动Zookeeper服务,一篇文章手把手教学!

    ZooKeeper是一个分布式服务框架,基于Paxos算法实现,提供高可用的数据管理和应用程序协调服务。它的目标是提供一种可靠的、可扩展的、分布式的、可配置的协调机制来统一系统的状态。 ZooKeeper曾是Hadoop的正式子项目,后发展成为Apache顶级项目,与Hadoop密切相关但却没有任

    2024年04月28日
    浏览(52)
  • 如何使用Docker搭建ZooKeepe集群

    1、拉取镜像 2、创建网络 Docker创建容器时默认采用bridge网络,自行分配ip,不允许自己指定。在实际部署中,需要指定容器ip,不允许其自行分配ip,尤其在搭建集群时。可以通过docker network create指令创建自己的bridge网络 ,在创建容器时指定网络和ip即可。 3、配置文件 a、创

    2024年02月11日
    浏览(42)
  • Zookeeper集群搭建记录 | 云计算[CentOS7] | Zookeeper集群搭建

    本系列文章索引以及一些默认好的条件在 传送门 在配置Zookeeper之前,建议先配置Hadoop集群,具体的操作流程博主已更新完成,链接 Zookeeper的安装包版本不太相同,大致分为有编译过的和没有编译过的(如有错请留言指正 一般情况下对于我们在解压配置就能使用的情况下,我

    2024年02月01日
    浏览(67)
  • Zookeeper 和 Kafka 工作原理及如何搭建 Zookeeper集群 + Kafka集群

    目录 1 Zookeeper 1.1 Zookeeper 定义 1.2 Zookeeper 工作机制 1.3 Zookeeper 特点 1.4 Zookeeper 数据结构 1.5 Zookeeper 应用场景 1.6 Zookeeper 选举机制 2 部署 Zookeeper 集群 2.1 安装前准备 2.2 安装 Zookeeper 3 Kafka 3.1 为什么需要消息队列(MQ) 3.2 使用消息队列的好处 3.3 消息队列的两种模式 3.4 Kafka 定义

    2024年02月08日
    浏览(44)
  • zookeeper集群搭建

    准备三台机器,在三台机器的hosts上加入三台机器的host地址别名,让三台机器能互相ping通。 192.168.150.146、192.168.150.147和192.168.150.148是三台机器的ip地址 修改三台机器的hostname,根据上面的配置 192.168.150.146上运行hostname node1 192.168.150.147上运行hostname node2 192.168.150.148上运行host

    2023年04月23日
    浏览(39)
  • Zookeeper 集群搭建

    Zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目 Zookeeper 工作机制 Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架 一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应

    2024年02月06日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包