当前位置: 首页 > news >正文

Docker部署Zookeeper集群

简介

ZooKeeper 是一个开源的分布式协调服务,由 Apache 软件基金会开发和维护。它主要用于管理和协调分布式系统中的多个节点,以解决分布式环境下的常见问题,如配置管理、服务发现、分布式锁等。ZooKeeper 提供了一种可靠的机制,使得分布式系统中的节点可以高效地协作,确保数据的一致性和服务的高可用性。

核心功能

  • 命名服务

    • 为分布式系统中的节点提供唯一的名称,方便节点之间的识别和访问。这类似于 DNS 在互联网中的作用,但更专注于分布式系统内部的节点命名。

  • 分布式锁

    • 实现分布式环境下的锁机制,确保在多节点访问共享资源时,资源的一致性和完整性。ZooKeeper 通过其内部的顺序节点创建和监听机制,可以有效地实现分布式锁。

  • 配置管理

    • 集中管理分布式系统中的配置信息。当配置信息发生变化时,ZooKeeper 可以及时通知各节点,确保所有节点使用最新的配置。

  • 服务发现

    • 动态发现系统中的可用服务实例。服务启动后可在 ZooKeeper 中注册,其他服务可通过 ZooKeeper 查询可用的服务实例列表。

  • 队列管理

    • 实现分布式队列,包括普通队列(FIFO)和优先队列,用于任务调度和消息传递等场景。

搭建步骤

部署Docker

部署docker-compose

单实例部署(简单)

docker run --name some-zookeeper --restart always -d zookeeper

单实例部署(使用自定义配置文件)

1、创建zookeeper管理用户和工作目录

useradd zookeeper
su - zookeeper
mkdir -p zookeeper/{data,conf,logs}

2、自定义配置文件zoo.cfg(举例)

cat > zookeeper/conf/zoo.cfg <<EOF
dataDir=/data
clientPort=2181
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
EOF

3、启动zookeeper单实例

docker run --name some-zookeeper --restart always \-e ZOO_LOG4J_PROP="INFO,ROLLINGFILE" \--user $(id -u):$(id -g) \-v $(pwd)/zookeeper/data:/data  \-v $(pwd)/zookeeper/conf:/conf \-v $(pwd)/zookeeper/logs:/datalog  \-d zookeeper

验证Zookeeper状态

docker exec -it some-zookeeper /bin/bash zkServer.sh status

ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: standalone

进入控制台

docker run -it --rm --link some-zookeeper:zookeeper zookeeper zkCli.sh -server zookeeper

创建结点

使用以下命令创建持久结点:
create /test '测试'

查看结点

查看结点存储的值及其状态:
get /test

查看结点状态:
stat /test

修改结点

修改结点数据:
set /test '新数据'

删除结点

删除结点:
delete /test

递归删除结点及其所有子结点:
deleteall /test

使用docker-compose部署集群

启动集群前

1、最好创建zookeeper用户。

2、需要提前准备的配置提前准备好,通过挂载卷的方式挂载给容器。

3、也可以通过环境变量的方式修改zookeeper启动项

(注:如上操作均需要定义到docker-compose.yaml中,下面仅仅是举例,只能在测试开发环境下使用。)

1、定义docker-compose.yaml(举例)

注:如果docker-compose启动集群时,无法自动创建network,或者就要使用已有的network,注意下面的红色部分。

services:
  zoo1:
    image: zookeeper
    restart: always
    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
    networks:
      - zookeeper-net

  zoo2:
    image: zookeeper
    restart: always
    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
    networks:
      - zookeeper-net

  zoo3:
    image: zookeeper
    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=zoo3:2888:3888;2181
    networks:
      - zookeeper-net

networks:
  zookeeper-net:
    external: true

2、启动zookeeper集群

docker-compose up -d

3、查看zookeeper集群状态

http://www.xdnf.cn/news/611713.html

相关文章:

  • C++学习之打车软件—JNI终端编程业务④https协议session开发
  • Open CASCADE学习|非线性方程组求解技术详解
  • 公司内网本地的SVN没有公网IP地址,在家外网也能远程访问SVN服务!
  • postgresql 的优劣势比较
  • 多模态理解大模型高性能优化丨前沿多模态模型开发与应用实战第七期
  • WPF性能优化之延迟加载(解决页面卡顿问题)
  • Python面向对象编程:封装、继承与多态
  • 七彩喜适老化改造:让每个空间成为长者尊严的守护者
  • Jouier 普及组十连测 R4
  • leetcode-快慢指针系列
  • 利用chat搜索需求相关视频链接
  • 45道工程模块化高频题整理(附答案背诵版)
  • `ol/proj`简介
  • 在日本,书法也是美术
  • WebSphere Application Server(WAS)8.5.5教程第十二讲:EJB
  • Zephyr OS 使能和失能蓝牙协议栈的操作
  • [linux] git强行拉取并覆盖
  • VR全景制作方法都有哪些?需要注意什么?
  • IT | 词汇科普手册Ⅱ
  • Leetcode 3313. 查找树中最后标记的节点
  • FreeGPT+内网穿透外网远程连接使用,搞定ChatGPT访问难题!
  • LPRNet实现车牌识别并完成ONNX和TensorRT推理
  • 怎么判断一个Android APP使用了Electron 这个跨端框架
  • 【动态规划】5 从一次函数出发推导斜率优化dp
  • VS Code-i18n Ally国际化插件 配置百度翻译
  • 【北京盈达科技】GEO优化中的多模态了解
  • 基于 Spring Boot + Vue 的墙绘产品展示交易平台设计与实现【含源码+文档】
  • MySQL备份工具:XtraBackup
  • Vue3 + Element Plus 中修改表格当前选中行的颜色
  • Linux——网络基础概念