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.pswp.cn/pingmian/81942.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【学习笔记】Sophus (Python) 使用文档

以下是一份针对 Sophus 库的 Python 使用文档&#xff0c;涵盖基础概念、安装方法、核心功能及代码示例。内容围绕 SO3&#xff08;3D旋转群&#xff09;和 SE3&#xff08;3D刚体变换群&#xff09;展开&#xff0c;适合机器人学、SLAM、三维几何等领域。 Sophus (Python) 使用…

计算机图形学:(三)MVP变换扩展

Three.js WebGL允许把JavaScript和OpenGL 结合在一起运用&#xff0c;但使用WebGL原生的API来写3D程序非常的复杂&#xff0c;同时需要相对较多的数学知识&#xff0c;对于前端开发者来说学习成本非常高。 Three.js是基于webGL的封装的一个易于使用且轻量级的3D库&#xff0c;T…

MySQL数据库操作合集

一、SQL通用语法 ①SQL语句可以单行或多行书写&#xff0c;以分号结尾。 ②SQL语句可以使用空格/缩进来增强语句可读性。 ③MySQL数据库的SQL语句不区分大小写&#xff0c;关键字建议使用大写。 ④注释&#xff1a; 单行注释&#xff1a; -- 注释内容 或 # 注释内容&#…

传统工程项目管理与业财一体化管理的区别?

在工程项目管理领域&#xff0c;传统管理模式与新兴的业财一体化管理模式正在形成鲜明对比。随着数字化转型的加速&#xff0c;工程行业对高效、透明、协同的管理需求日益迫切。传统工程项目管理依赖人工操作、分散系统和分模块管理&#xff0c;难以应对复杂项目的全生命周期需…

敦煌网测评从环境搭建到风控应对,精细化运营打造安全测评体系

自养号测评&#xff0c;抢占流量为快速提升产品权重和销量&#xff0c;很多卖家常采用自己养号补单测评的方式&#xff0c;技术搭建需要很多要素 一、硬件参数的关联性 在我们使用设备进行注册或操作账号的过程中&#xff0c;系统会记录下大量的系统与网络参数&#xff0c;其中…

redis Pub/Sub 简介 -16 (PUBLISH、SUBSCRIBE、PSUBSCRIBE)

Redis Pub/Sub 简介&#xff1a;PUBLISH、SUBSCRIBE、PSUBSCRIBE Redis Pub/Sub 是一种强大的消息传递范例&#xff0c;可在应用程序的不同部分之间实现实时通信。它是构建可扩展和响应式系统的基石&#xff0c;允许组件在没有直接依赖的情况下进行交互。本章将全面介绍 Redis…

JavaSE核心知识点03高级特性03-01(集合框架)

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 JavaSE核心知识点03高级特性03-01&#xff0…

日志分析-IIS日志分析

环境准备 https://xj.edisec.net/challenges/115 题目要求 windows系统中才有的IIS服务 既然是windows平台&#xff0c;当然需要rdp登录&#xff0c;在ssh登录失败 解题过程 phpstudy--2018站点日志.(.log文件)所在路径&#xff0c;提供绝对路径 Windows服务的日志一般有固定…

一、web安全基础入门

1、Windows命令 文件和目录操作 dir&#xff1a;列出当前目录下的文件和子目录。cd&#xff1a;切换目录&#xff0c;例如 cd C:\Users 切换到C盘的Users目录。md 或 mkdir&#xff1a;创建新目录&#xff0c;如 md testdir。rd 或 rmdir&#xff1a;删除空目录&#xff0c;例…

动态规划应用场景 + 代表题目清单(模板加上套路加上题单)

1. 序列型DP&#xff08;Sequence DP&#xff09; ✅ 应用场景 单个或多个序列&#xff08;数组/字符串&#xff09;&#xff0c;求最优子结构。 常见问题&#xff1a;最长递增子序列、最长公共子序列、回文子序列。 &#x1f9e0; 套路总结 单序列&#xff1a;dp[i] max(…

Linux iSCSI存储共享实验指南

实验介绍 1、在Linux平台上通过iSCSI协议实现IP-SAN存储共享 2、掌握存储导出(export)和存储导入(import)的配置方法 3、学习iSCSI存储的发现、连接、断开和管理操作 1、实验环境 两台同网段的Linux虚拟机&#xff08;无需物理交换机&#xff09; 操作系统&#xff1a;Lin…

从 Docker 到 runC

从 Docker 到 runC:容器底层原理详解 目录 1. Docker 与 runC 的关系 2. Docker 的核心组件 3. runC 的核心功能 4. 实战示例:从 Docker 到 runC 4.1 示例场景:运行一个简单容器 4.2 Docker 底层调用 runC 的流程 4.3 查看 runC 的调用 4.4 直接调用 runC 创建容器 …

使用Python在PowerPoint中插入形状(Shape)

在进行演示文稿设计时&#xff0c;形状&#xff08;Shape&#xff09;不仅可以增强视觉效果&#xff0c;还可以用于展示流程图、标注、数据图示等。借助Python&#xff0c;我们可以通过代码快速批量地在PPT中添加各种形状&#xff0c;提升设计效率。本文将介绍如何使用Python向…

Windows系统下MySQL 8.4.5压缩包安装详细教程

一、MySQL 8.4.5新特性概览 相较于旧版本&#xff0c;MySQL 8.4.5在性能与功能上实现了显著提升&#xff1a; 性能优化&#xff1a;官方测试显示&#xff0c;在高并发场景下&#xff0c;其读写性能较5.7版本提升近2倍&#xff0c;尤其在处理热点数据竞争问题时表现更为出色。…

深度解析Vue项目Webpack打包分包策略 从基础配置到高级优化,全面掌握性能优化核心技巧

深度解析Vue项目Webpack打包分包策略 从基础配置到高级优化&#xff0c;全面掌握性能优化核心技巧 一、分包核心价值与基本原理 1.1 为什么需要分包 首屏加载优化&#xff1a;减少主包体积&#xff0c;提升TTI&#xff08;Time to Interactive&#xff09;缓存利用率提升&am…

【昇腾开发者训练营:Dify大模型部署实战】MindIE + Dify + DeepSeek + Embedding模型 + Rerank模型

文章目录 部署 Dify1. Dify 适配 ARM2. 安装 docker3. 启动 Dify MindIEDify 实操手册1. 基础环境搭建1.1 环境检查1.2 下载模型权重1.3 获取MindIE镜像 2. 启动容器3. 纯模型推理测试3.1 纯模型对话测试3.2 性能测试 4. 服务化部署4.1 MindIE 配置4.2 MindIE 服务化4.3 发起测…

塔能高温冰蓄冷技术:工厂能耗精准节能的创新之路

在工厂的能耗构成中&#xff0c;制冷系统是重要的耗能环节。传统的水蓄冷和冰蓄冷技术在实际应用中存在一些局限性&#xff0c;难以满足工厂对节能和成本控制的更高要求。塔能科技的高温冰蓄冷技术&#xff0c;凭借其独特的优势&#xff0c;为工厂能耗精准节能提供了创新的解决…

通过现代数学语言重构《道德经》核心概念体系,形成一个兼具形式化与启发性的理论框架

以下是对《道德经》的数学转述尝试&#xff0c;通过现代数学语言重构其核心概念&#xff0c;形成一个兼具形式化与启发性的理论框架&#xff1a; 0. 基础公理体系 定义&#xff1a; 《道德经》是一个动态宇宙模型 U(D,V,Φ)&#xff0c;其中&#xff1a; D 为“道”的无限维…

SQLMesh Typed Macros:让SQL宏更强大、更安全、更易维护

在SQL开发中&#xff0c;宏&#xff08;Macros&#xff09;是一种强大的工具&#xff0c;可以封装重复逻辑&#xff0c;提高代码复用性。然而&#xff0c;传统的SQL宏往往缺乏类型安全&#xff0c;容易导致运行时错误&#xff0c;且难以维护。SQLMesh 引入了 Typed Macros&…

5月23日day34打卡

GPU训练及类的call方法 知识点回归&#xff1a; CPU性能的查看&#xff1a;看架构代际、核心数、线程数GPU性能的查看&#xff1a;看显存、看级别、看架构代际GPU训练的方法&#xff1a;数据和模型移动到GPU device上类的call方法&#xff1a;为什么定义前向传播时可以直接写作…