docker-compose Zookeeper 集群搭建

文章目录

  • 前言
    • docker-compose Zookeeper 集群搭建
      • 1. Zookeeper下载
      • 2. 制作Dockerfile文件
      • 3. 构建镜像
      • 4. docker-compose 管理
      • 5. docker-compose构建/启动
      • 6. 验证
        • 6.1 docker ps
        • 6.2 使用 zkCli.sh 连接并验证集群

前言

  如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
  而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!


docker-compose Zookeeper 集群搭建

1. Zookeeper下载

归档:
https://archive.apache.org/dist/zookeeper
官网:
https://downloads.apache.org/zookeeper/
我使用的:
3.6.2版本,下面是下载地址:
https://archive.apache.org/dist/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz

2. 制作Dockerfile文件

# 使用包含JDK 8 的基础镜像
FROM yzy:v2.3
LABEL maintainer="yangzhenyu"# 复制 ZooKeeper tar 文件到容器中
COPY apache-zookeeper-3.6.2-bin.tar.gz /app/appuser/# 解压 tar 文件并配置环境
RUN cd /app/appuser \&& mkdir -p data logs \&& tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz  \&& cd /app/appuser/apache-zookeeper-3.6.2-bin/conf \&& cp -rf zoo_sample.cfg zoo.cfg# 设置 ZooKeeper 环境变量
RUN set -x \&& echo 'export ZOOKEEPER_HOME=/app/appuser/apache-zookeeper-3.6.2-bin' >> /etc/bashrc \&& echo 'export PATH=$PATH:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/sbin' >> /etc/bashrc# 暴露 ZooKeeper 的默认端口
EXPOSE 2181# 设置工作目录
WORKDIR /app/appuser/apache-zookeeper-3.6.2-bin# 启动 ZooKeeper 服务
# CMD ["bin/zkServer.sh", "start-foreground"]

大概意思是将安装包apache-zookeeper-3.6.2-bin.tar.gz放到/app/appuser目录下,解压压缩包,同时创建data文件夹,
将zoo.cfg文件放入到/app/appuser/apache-zookeeper-3.6.2-bin/conf/目录下。

3. 构建镜像

docker build -t zk:v1.0 .

在这里插入图片描述

4. docker-compose 管理

version: '3.8'
services:zk1:build:context: .dockerfile: Dockerfile-zk  image: zk:v1.0container_name: zk1user: rootprivileged: trueshm_size: '256m'   networks:kafka_network:ipv4_address: 192.168.160.5volumes:- /f/kafka-docker/zookeeper/node1/data:/app/appuser/data- /f/kafka-docker/zookeeper/zoo.cfg:/app/appuser/apache-zookeeper-3.6.2-bin/conf/zoo.cfg- /f/kafka-docker/zookeeper/node1/logs:/app/appuser/apache-zookeeper-3.6.2-bin/logsrestart: unless-stoppedcommand: bash -c " echo -n '1' > /app/appuser/data/myid  && chmod 777 /app/appuser/data && chmod 777 /app/appuser/data/myid && cd /app/appuser/apache-zookeeper-3.6.2-bin/bin && ./zkServer.sh start-foreground"zk2:build:context: .dockerfile: Dockerfile-zk    image: zk:v1.0container_name: zk2user: rootprivileged: trueshm_size: '256m'  networks:kafka_network:ipv4_address: 192.168.160.6volumes:- /f/kafka-docker/zookeeper/node1/data:/app/appuser/data- /f/kafka-docker/zookeeper/zoo.cfg:/app/appuser/apache-zookeeper-3.6.2-bin/conf/zoo.cfg- /f/kafka-docker/zookeeper/node2/logs:/app/appuser/apache-zookeeper-3.6.2-bin/logsrestart: unless-stoppedcommand: bash -c " echo -n '2' > /app/appuser/data/myid  && chmod 777 /app/appuser/data && chmod 777 /app/appuser/data/myid && cd /app/appuser/apache-zookeeper-3.6.2-bin/bin && ./zkServer.sh start-foreground"zk3:build:context: .dockerfile: Dockerfile-zk    image: zk:v1.0container_name: zk3user: rootprivileged: trueshm_size: '256m'  networks:kafka_network:ipv4_address: 192.168.160.7volumes:- /f/kafka-docker/zookeeper/node1/data:/app/appuser/data- /f/kafka-docker/zookeeper/zoo.cfg:/app/appuser/apache-zookeeper-3.6.2-bin/conf/zoo.cfg- /f/kafka-docker/zookeeper/node3/logs:/app/appuser/apache-zookeeper-3.6.2-bin/logsrestart: unless-stoppedcommand: bash -c " echo -n '3' > /app/appuser/data/myid  && chmod 777 /app/appuser/data && chmod 777 /app/appuser/data/myid && cd /app/appuser/apache-zookeeper-3.6.2-bin/bin && ./zkServer.sh start-foreground"
networks:kafka_network:driver: bridgeipam:config:- subnet: 192.168.160.0/24gateway: 192.168.160.1

zoo.cfg:

# Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,
# 也就是每个 tickTime 时间就会发送一个心跳。
tickTime=2000admin.serverPort=8887
# 是否启动后台管理
admin.enableServer=true
# 进入后台的命令 只能是  http://localhost:8887/commands 访问
admin.commandUrl=/commands
# 指定了需要保留的文件数目。默认是保留3个
autopurge.snapRetainCount=4
# ZK提供了自动清理事务日志和快照文件的功能,这个参数指定了清理频率,单位是小时,
# 需要配置一个1或更大的整数,默认是0,表示不开启自动清理功能。
autopurge.purgeInterval=1
# 用于集群,允许从节点连接并同步到 master 节点的初始化连接时间,以 tickTime 的倍数来表示;
initLimit=10
# 用于集群, master 主节点与从节点之间发送消息,请求和应答时间长度(心跳机制);
syncLimit=5
# Zookeeper 存储快照文件snapshot的目录
dataDir=/app/appuser/data
# Zookeeper 保存事务日志文件的目录
dataLogDir=/app/appuser/logs
# 客户端连接Zookeeper 服务器的端口
# Zookeeper 会监听这个端口,接受客户端的访问请求
clientPort=2181
# localhost: server·1的 ip地址  2220:集群间的通信端口 6660当进行选举时候的通信端口
server.1=192.168.160.5:2220:6660
server.2=192.168.160.6:2220:6660
server.3=192.168.160.7:2220:6660

5. docker-compose构建/启动

docker-compose build

在这里插入图片描述
启动:

docker-compose -f docker-compose.yml up -d
在这里插入图片描述

6. 验证

6.1 docker ps

在这里插入图片描述

6.2 使用 zkCli.sh 连接并验证集群

docker exec -it zk1 bash
然后使用 zkCli.sh 连接到 Zookeeper:
cd /app/appuser/apache-zookeeper-3.6.2-bin/bin
./zkCli.sh -server 192.168.160.5:2181

在这里插入图片描述
如果连接成功,你将看到类似的提示:

Connecting to 192.168.160.5:2181
然后查看节点Zk目录: ls -R /
在这里插入图片描述
创建节点zk目录

create /yzy01

在这里插入图片描述

退出zk1,进入zk2,查看节点Zk目录:
在这里插入图片描述

在160.5创建的,在160.6中也可以看到,验证完毕。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/68393.shtml

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

相关文章

Vue.js 使用 Vuex 管理组件间的共享状态

Vue.js 使用 Vuex 管理组件间的共享状态 今天咱们来聊聊如何用 Vuex 来管理 Vue.js 应用中各个组件之间的共享状态。如果你曾经在项目中为了让组件共享数据而头疼,那么这篇文章就是为你准备的。 什么是 Vuex? 简单来说,Vuex 就是 Vue.js 的…

WIN11 UEFI漏洞被发现, 可以绕过安全启动机制

近日,一个新的UEFI漏洞被发现,可通过多个系统恢复工具传播,微软已经正式将该漏洞标记为追踪编号“CVE-2024-7344”。根据报告的说明,该漏洞能让攻击者绕过安全启动机制,并部署对操作系统隐形的引导工具包。 据TomsH…

R语言学习笔记之高效数据操作

一、概要 数据操作是R语言的一大优势,用户可以利用基本包或者拓展包在R语言中进行复杂的数据操作,包括排序、更新、分组汇总等。R数据操作包:data.table和tidyfst两个扩展包。 data.table是当前R中处理数据最快的工具,可以实现快…

本地大模型编程实战(04)给文本自动打标签

文章目录 准备实例化本地大模型情感分析更精细的控制总结代码 使用本地大模型可以根据需要给文本打标签,本文介绍了如何基于 langchain 和本地部署的大模型给文本打标签。 本文使用 llama3.1 作为本地大模型,它的性能比非开源大模型要查一下,…

视频外绘技术总结:Be-Your-Outpainter、Follow-Your-Canvas、M3DDM

Diffusion Models专栏文章汇总:入门与实战 前言:视频Inpaint的技术很火,但是OutPaint却热度不高,这篇博客总结比较经典的几篇视频Outpaint技术。其实Outpaint在runway等工具上很火,可是学术界对此关注比较少,博主从这三年的顶会中找到了最具代表性的三篇论文解读。 目录 …

Java对象注入的常见方式

在 Java 中,对象注入(依赖注入,Dependency Injection)是实现松耦合设计的重要方式,常见的有以下几种实现形式: 1. 构造器注入(Constructor Injection) 通过类的构造函数注入依赖对象…

【数据结构】 并查集 + 路径压缩与按秩合并 python

目录 前言模板朴素实现路径压缩按秩合并按树高为秩按节点数为秩 总结 前言 并查集的基本实现通常使用森林来表示不同的集合,每个集合用一棵树表示,树的每个节点有一个指向其父节点的指针。 如果一个节点是它自己的父节点,那么它就是该集合的代…

低代码系统-产品架构案例介绍、得帆云(八)

产品名称 得帆云DeCode低代码平台-私有化 得帆云DeMDM主数据管理平台 得帆云DeCode低代码平台-公有云 得帆云DePortal企业门户 得帆云DeFusion融合集成平台 得帆云DeHoop数据中台 名词 概念 云原生 指自己搭建的运维平台,区别于阿里云、腾讯云 Dehoop 指…

.NET 8 项目 Docker 方式部署到 Linux 系统详细操作步骤

本文将详细介绍如何将一个 .NET 8 项目通过 Docker 部署到 Linux 系统中。以下步骤包括从项目的创建、Dockerfile 的编写、镜像构建、到最后在 Linux 上的容器运行。 1. 环境准备 在开始之前,请确保你已经具备以下环境: Linux 系统(如 Ubu…

【PyTorch】5.张量索引操作

目录 1. 简单行、列索引 2. 列表索引 3. 范围索引 4. 布尔索引 5. 多维索引 个人主页:Icomi 在深度学习蓬勃发展的当下,PyTorch 是不可或缺的工具。它作为强大的深度学习框架,为构建和训练神经网络提供了高效且灵活的平台。神经网络作为…

springboot 动态线程池

在Spring Boot中,可以使用ThreadPoolTaskExecutor类来创建动态线程池。以下是一个示例: 首先,需要在配置文件中配置线程池的属性,例如最小线程数、最大线程数、线程存活时间等。可以在application.properties或application.yml中…

强化学习 - 基于策略搜索和策略优化: 高斯策略

最近在做毕设需要用强化学习来做控制,对强化学习的知识点做一下总结。 高斯策略 高斯策略属于强化学习中的基于策略优化的分支(Policy Optimization),尤其是策略梯度方法(Policy Gradient Methods) 的一部…

基于微信小程序高校课堂教学管理系统 课堂管理系统微信小程序(源码+文档)

目录 一.研究目的 二.需求分析 三.数据库设计 四.系统页面展示 五.免费源码获取 一.研究目的 困扰管理层的许多问题当中,高校课堂教学管理也是不敢忽视的一块。但是管理好高校课堂教学又面临很多麻烦需要解决,如何在工作琐碎,记录繁多的情况下将高校课堂教学的当前情况反…

论文阅读笔记:VMamba: Visual State Space Model

论文阅读笔记:VMamba: Visual State Space Model 1 背景2 创新点3 方法4 模块4.1 2D选择性扫描模块(SS2D)4.2 加速VMamba 5 效果5.1 和SOTA方法对比5.2 SS2D和自注意力5.3 有效感受野5.4 扫描模式 论文:https://arxiv.org/pdf/240…

【文星索引】搜索引擎项目测试报告

目录 一、项目背景二、 项目功能2.1 数据收集与索引2.2 API搜索功能2.3 用户体验与界面设计2.4 性能优化与维护 三、测试报告3.1 功能测试3.2 界面测试3.3 性能测试3.4 兼容性测试3.5 自动化测试 四、测试总结4.1 功能测试方面4.2 性能测试方面4.3 用户界面测试方面 一、项目背…

DBO-高斯回归预测matlab

蜣螂优化算法(Dung Beetle Optimizer, DBO)是一种新型的群智能优化算法,在2022年底提出,主要是受蜣螂的的滚球、跳舞、觅食、偷窃和繁殖行为的启发。 本次研究使用的是 Excel 格式的股票预测数据。数据集按照 8:1:1 的比例&#x…

MySQL篇之对MySQL进行参数优化,提高MySQL性能

1. MySQL参数优化说明 MySQL 参数调优是提高数据库性能的重要手段之一。通过调整 MySQL 的配置参数,可以优化查询速度、提升并发处理能力、减少资源消耗等。 MySQL 的性能优化涉及到多个方面,包括内存管理、磁盘 I/O、查询优化、连接管理、复制配置等。…

8621 二分查找

SCAU数据结构OJ第五章 文章目录 8621 二分查找 8621 二分查找 Description 编写Search_Bin函数,实现在一个递增有序数组ST中采用折半查找法确定元素位置的算法. 输入格式 第一行: 元素个数n 第二行:依次输入n个元素的值(有序) 第…

差分等长的原理

差分等长是指在设计差分信号传输线路时,保证两条差分线的长度尽量一致,长度之差在一个合理的范围内。这是为了确保两个差分信号时刻保持相反极性,减少共模分量,从而提高信号传输的质量。 在差分信号传输中,两条差分线…

Autogen_core: Reflection

目录 代码代码逻辑解释:数据类定义:CoderAgent 类:ReviewerAgent 类:主程序: 完成的功能: 代码 from dataclasses import dataclassdataclass class CodeWritingTask:task: strdataclass class CodeWritin…