首页 > 其他分享 >使用 docker-compose 部署 zookeeper(单机和集群)

使用 docker-compose 部署 zookeeper(单机和集群)

时间:2024-06-02 21:21:57浏览次数:34  
标签:compose zookeeper 2181 集群 docker data

我之前编写了一些 zookeeper 的博客,当时是在 windows 系统上部署的单机版,在实际应用中绝大多数情况下都是部署在 Linux 系统上,因此很有必要介绍一下如何在 CentOS7 上快速部署 zookeeper 的单机版和集群版。

这里就不详细介绍 zookeeper 了,网上资料很多,也可以查看官网或者我之前的博客,我之前编写的相关博客地址如下:

zookeeper 部署和常用操作命令:https://www.cnblogs.com/studyjobs/p/16413055.html

对 zookeeper 进行增删改查:https://www.cnblogs.com/studyjobs/p/16460619.html

使用 zookeeper 实现分布式协调机制:https://www.cnblogs.com/studyjobs/p/16468221.html

使用 zookeeper 实现分布式锁:https://www.cnblogs.com/studyjobs/p/16488794.html

另外 zookeeper 的官网地址是:https://zookeeper.apache.org


一、单机版部署

我的 CentOS7 虚拟机 ip 地址是 192.168.136.128,已经安装好了 docker 和 docker-compose

在虚拟机上创建目录 mkdir -p /data/zookeeper 在其下面再创建两个目录 data 和 datalog,整体结构如下图:

image

编写 docker-compose.yml 文件,具体内容如下:

version: '3.2'
services:
  zoo1:
    image: zookeeper:latest
    restart: always
    container_name: zookeeper
    ports:
      - "2181:2181"
      - "8080:8080"
    volumes:
      - ./data:/data
      - ./datalog:/datalog
      - /etc/localtime:/etc/localtime

其中 2181 是 zookeeper 的连接端口,8080 是 zookeeper 提供的 web 界面操作端口

在 docker-compose.yml 所在目录运行命令 docker-compose up -d 启动服务,使用 docker-compose logs -f 查看启动日志

服务启动成功后,打开浏览器访问 http://192.168.136.128:8080/commands 查看服务提供的 web 操作界面,界面很简陋。

image

有兴趣的话,可以把上面的链接都点一下,熟悉了解一下。这里我们点击 server_stats 链接,可以查看 zookeeper 服务的状态:

image

要想操作 zookeeper ,还是得使用可视化工具比较方便,我介绍使用 prettyZoo 这个开源免费的可视化工具

prettyZoo 的 github 地址为:https://github.com/vran-dev/PrettyZoo

prettyZoo 的工具下载地址为:https://github.com/vran-dev/PrettyZoo/releases

我当前看到的最新版本是 v2.1.1,如下图所示:

image

我下载的是 zip 包,解压缩之后双击里面的 exe 程序即可启动可视化界面,可以设置为中文界面:

image

然后使用该工具连接到刚刚部署的 zookeeper,然后就可以很方便的查看 zookeeper 中的树节点,也可以进行增删改查操作

image

prettyZoo 可视化工具,使用起来很简单,也非常方便,这里就不详细介绍了


二、集群部署

有了上面单机部署的经验后,集群部署就简单很多了,创建 /data/zookeeper-cluster 目录,然后在其下面创建 3 个子目录 zk1、zk2、zk3

每个 zk 目录的结构跟上面的单机部署目录结构一样,都包含 2 个目录 data、datalog,如下图所示:

image

编写 docker-compose.yml 文件内容如下所示:

version: '3.2'

services:
  zk1:
    image: zookeeper:latest
    hostname: zk1
    container_name: zk1
    ports:
      - "2181:2181"
      - "8081:8080"
    environment:
      ZOO_MY_ID: 1
      ZOO_SERVERS: server.1=0.0.0.0:2888:3888;2181 server.2=zk2:2888:3888;2181 server.3=zk3:2888:3888;2181
    volumes:
      - ./zk1/data:/data
      - ./zk1/datalog:/datalog
      - /etc/localtime:/etc/localtime
    networks:
      - zk-net

  zk2:
    image: zookeeper:latest
    hostname: zk2
    container_name: zk2
    ports:
      - "2182:2181"
      - "8082:8080"
    environment:
      ZOO_MY_ID: 2
      ZOO_SERVERS: server.1=zk1:2888:3888;2181 server.2=0.0.0.0:2888:3888;2181 server.3=zk3:2888:3888;2181
    volumes:
      - ./zk2/data:/data
      - ./zk2/datalog:/datalog
      - /etc/localtime:/etc/localtime
    networks:
      - zk-net

  zk3:
    image: zookeeper:latest
    hostname: zk3
    container_name: zk3
    ports:
      - "2183:2181"
      - "8083:8080"
    environment:
      ZOO_MY_ID: 3
      ZOO_SERVERS: server.1=zk1:2888:3888;2181 server.2=zk2:2888:3888;2181 server.3=0.0.0.0:2888:3888;2181
    volumes:
      - ./zk3/data:/data
      - ./zk3/datalog:/datalog
      - /etc/localtime:/etc/localtime
    networks:
      - zk-net

# 给集群创建一个网络,名称自己随便定义,这里取名为 zk-net
networks:
  zk-net:
    driver: bridge

最后在 docker-compose.yml 所在目录运行命令 docker-compose up -d 启动服务

使用 docker-compose logs -f 命令可以实时查看 3 个 zookeeper 服务启动的日志。

zookeeper 的集群部署,最主要是配置 environment 环境变量,上面配置的 2 个环境变量含义如下:

  • ZOO_MY_ID 表示当前 zookeeper 实例在集群中的编号,范围为1-255,所以一个 zookeeper 集群最多有 255 个节点
  • ZOO_SERVERS 表示当前 zookeeper 实例所在集群中的所有节点的编号、主机名(或IP地址)、端口

zookeeper一共需要用到三个端口:

  • 2181:对客户端程序(如我们开发的 SpringBoot 程序)提供服务的连接端口
  • 3888:zookeeper 集群中的节点,选举 leader 使用的通信端口
  • 2888:集群内各节点之间的通讯端口(Leader监听此端口)

最后我们分别访问已经部署好的 zookeeper 的 3 个节点的 web 操作界面,访问其 server_stats 界面,查看其在集群中的角色

image

image

image


OK,到此为止,有关 zookeeper 的单机部署和集群部署,已经介绍完毕。

标签:compose,zookeeper,2181,集群,docker,data
From: https://www.cnblogs.com/studyjobs/p/18227639

相关文章

  • Ubuntu18.04利用docker成功安装Autoware的一次记录
    整整安装了两周的autoware终于安装好了,中途遇上了太多问题,踩了太多坑。所以我决定记录这次成功的过程,让像我一样的小白能少走弯路。技术小白的成长之路--嘎嘎嘎先放几个介绍非常清楚的其他博主的教程:【Ubuntu18.04】Autoware安装_ubuntu18.04安装autoware-CSDN博客ubuntu18.......
  • Docker环境下部署Tomcat、Nginx
    docker部署常见应用-Tomcat&Nginx为了简便先禁用防火墙systemctlstopfirewalld部署基本流程搜索镜像——拉取镜像——创建专用目录——运行容器——测试部署Tomcat1.搜索镜像dockersearchtomcat2.拉取镜像dockerpulltomcat3.创建tomcat专用目录#我......
  • Docker 部署 Python 服务
    app.pyfromflaskimportFlaskfromredisimportRedis,RedisErrorimportosimportsocket#ConnecttoRedisredis=Redis(host="redis",db=0,socket_connect_timeout=2,socket_timeout=2)app=Flask(__name__)@app.route("/")defhe......
  • Docker 部署 mysql 服务
    linux用法Container(容器)集合成Services(服务)交互集合成Stack(堆栈)卸载可能存在的旧版本sudoapt-getupdate使apt可以通过HTTPS使用存储库(repository)sudoapt-getinstall-yapt-transport-httpsca-certificatescurlsoftware-properties-common添加Docker官方的......
  • Docker —— 从入门到实践 (yeasy)高清电子版pdf百度云
    书:pan.baidu.com/s/1-uwg0rd__HXJJvc9Gj7C8w?pwd=xrgo提取码:xrgoDocker概述:介绍Docker是什么,它的历史、特点以及为什么需要Docker。Docker安装与配置:指导读者如何在不同的操作系统上安装和配置Docker。Docker基础:讲解Docker的基本概念,如镜像、容器、Docker引擎等。Dockerfile......
  • Ubuntu 22.04 安装Docker
    Ubuntu22.04安装Docker测试环境Linux系统版本:Ubuntu22.04Serverx64Docker版本:Community20.10.15安装方法方法1:脚本自动安装curl-fsSLhttps://get.docker.com|bash-sdocker--mirrorAliyun方法2:命令行安装首先更新源,安装必要的依赖软件sudoaptupdatesudo......
  • Docker部署ceph
    一、实验目的Docker部署ceph二、实验内容Docker部署ceph三、实验过程(步骤、命令或源程序代码)及结果(截图)监控,存储1.部署环境三台网络互通的CentOS虚拟机。右键要克隆的虚拟机、选择管理——>克隆,进入克隆虚拟机向导,然后根据向导即可轻松创建。克隆完成主机名......
  • [转]Debian 12 系统内安装 Docker 详细步骤
    转载来源:https://www.wonote.com/post/debian-12-xi-tong-nei-an-zhuang-docker-xiang-xi-bu-zou/Docker是一个开源的应用容器引擎,它让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,实现虚拟化,使应用程序的部署和运维更加简单、高效......
  • docker 通过dockerfile制作镜像
    1.安装一个docker2.启动docker3.创建dockerfilemdkir-p/data/`date+%F`cd/data/2024-05-31生成密钥ssh-keygen ls-l/root/.ssh/id_rsa.pubcp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys将authorized_keys和Centos-vault-8.5.2111.repo上传到此目录......
  • 【代码片段】使用docker部署nginx 并通过nginx设置密码访问控制
    使用docker部署nginx服务docker-compose.ymlversion:'3'services:web:image:nginxvolumes:-./nginx.conf:/etc/nginx/nginx.confrestart:alwaysports:-"80:80"-"443:443"environment:......