Zookeeper:Mac通过Docker安装Zookeeper集群

news2024/12/22 20:41:09

此篇为 “Mac通过Docker安装Zookeeper集群”,笔者原本计划是接下来更新Zookeeper应用系列的相关内容,但相关内容依赖Zookeeper集群,虽然前面也更新了 Linux下Zookeeper在三种模式下的部署,但是大家很可能不会有相关的Linux集群准备着,所以才有了此篇:“Mac通过Docker安装Zookeeper集群”。

本篇内容包括:Mac-Zookeeper 镜像下载、Mac-Zookeeper 单机模式部署、Mac-Zookeeper 集群模式部署。


文章目录

    • 一、Mac-Zookeeper 镜像下载
        • 1、Mac 下 Docker 的安装及配置
        • 2、配置镜像地址
        • 3、镜像(Zookeeper)下载
        • 4、安装成功信息
    • 二、Mac-Zookeeper 单机模式部署
        • 1、启动zk镜像
        • 2、查看zk镜像
        • 3、使用zk命令行客户端连接zk
    • 三、Mac-Zookeeper 集群模式部署
        • 1、启动三个zk节点
        • 2、获取三个zk地址
        • 3、修改配置文件
        • 4、重启三个zk容器
        • 5、验证集群状态


一、Mac-Zookeeper 镜像下载

1、Mac 下 Docker 的安装及配置

2、配置镜像地址

# 配置镜像地址

  "experimental": false,
  "debug": true,
  "registry-mirrors": [
        // 镜像地址
    ]

# 国内镜像地址

网易:https://hub-mirror.c.163.com/
阿里云:https://<你的ID>.mirror.aliyuncs.com
七牛云加速器:https://reg-mirror.qiniu.com

3、镜像(Zookeeper)下载

# 没有指定TAG既是安装latest版本
docker pull zookeeper
# 也可以列出docker所有镜像,选择版本下载
docker images

4、安装成功信息

# 安装成功信息

lizhengi@bogon ~ % docker pull zookeeper
Using default tag: latest
latest: Pulling from library/zookeeper
a2abf6c4d29d: Pull complete 
2bbde5250315: Pull complete 
202a34e7968e: Pull complete 
4e4231e30efc: Pull complete 
707593b95343: Pull complete 
b070e6dedb4b: Pull complete 
46e5380f3905: Pull complete 
8b7e330117e6: Pull complete 
Digest: sha256:2c8c5c2db6db22184e197afde13e33dad849af90004c330f20b17282bcd5afd7
Status: Downloaded newer image for zookeeper:latest
docker.io/library/zookeeper:latest

二、Mac-Zookeeper 单机模式部署

1、启动zk镜像

docker run --name zookeeper -d -p 2181:2181 zookeeper

其中:

  • —name :创建一个名称为 zookeeper 的容器
  • -p :将容器的 2181 端口挂载到宿主机的 2181 端口
  • -d : 容器以后台的形式运行

2、查看zk镜像

# 查看 Zookeeper 的启动日志

docker logs -f zookeeper

# 查看 Docker 所有运行的容器

docker ps

# 表示 Zookeeper 容器正在运行中

image-20221121005048573

# Docker Desktop 上查看

image-20221121005213448

3、使用zk命令行客户端连接zk

# 进入zookeeper容器
docker exec -it zookeeper /bin/bash

# 进入容器内部bin目录下
cd bin

# 客户端请求连接服务器
./zkCli.sh

# 客户端连接服务器成功标志
Welcome to ZooKeeper!

# h - 客户端命令帮助
[zk: localhost:2181(CONNECTED) 0] h
ZooKeeper -server host:port cmd args
    addauth scheme auth
    close
    config [-c] [-w] [-s]
    connect host:port
    create [-s] [-e] [-c] [-t ttl] path [data] [acl]
    delete [-v version] path
    deleteall path
    delquota [-n|-b] path
    get [-s] [-w] path
    getAcl [-s] path
    history
    listquota path
    ls [-s] [-w] [-R] path
    ls2 path [watch]
    printwatches on|off
    quit
    redo cmdno
    removewatches path [-c|-d|-a] [-l]
    rmr path
    set [-s] [-v version] path data
    setAcl [-s] [-v version] [-R] path acl
    setquota -n|-b val path
    stat [-w] path
    sync path
    
# 展示制定目录下结构
[zk: localhost:2181(CONNECTED) 0] ls /
[zookeeper]
# 创建一个节点并对节点进行赋值
[zk: localhost:2181(CONNECTED) 1] create /test name
Created /test
# 再次查看目录
[zk: localhost:2181(CONNECTED) 2] ls /
[test, zookeeper]
# 获取节点的内容
[zk: localhost:2181(CONNECTED) 3] get /test
name

三、Mac-Zookeeper 集群模式部署

1、启动三个zk节点

# 启动三个zk节点,节点端口映射关系分别为:2181:2181、2182:2181、2183:2181

docker run -d --name zk1 -p 2181:2181 -d zookeeper
docker run -d --name zk2 -p 2182:2181 -d zookeeper
docker run -d --name zk3 -p 2183:2181 -d zookeeper

# 查看启动成功

image-20221121010015150

2、获取三个zk地址

# 通过命令 docker inspect {container_name}, 返回的是一个关于 docker 容器信息的一个 json 串:

lizhengi@bogon ~ % docker inspect zk1
{
	...
 				"IPAddress": "172.17.0.2",
 	...
}

# 根据"IPAddress": "172.17.0.2", 我们可以获取到所有 zookeeper 单节点的 ip 地址:

  • zk1:172.17.0.2
  • zk2:172.17.0.3
  • zk3:172.17.0.4

3、修改配置文件

# 进入容器

docker exec -it zk1 /bin/bash

# 安装vim(容器中默认是没有vi或vim的)

apt-get update
apt-get install vim

# 修改zk的配置文件

vim /conf/zoo.cfg

#修改配置文件之后查看

root@fbecc74eaf1a:/apache-zookeeper-3.7.0-bin# cat /conf/zoo.cfg
clientPort=2181
dataDir=/data
dataLogDir=/datalog
tickTime=2000
initLimit=5
syncLimit=2
# 2888是zk集群之间通信的端口
# 3888是zk集群之间投票选主的端口
server.1=172.17.0.2:2888:3888
server.2=172.17.0.3:2888:3888
server.3=172.17.0.4:2888:3888

# 将1输出到/data/myid文件中

# 从配置中看出,zk1的服务名为server.1, 这 1 是指定的服务名称  
echo 1 > /data/myid

将 zk2、zk3 也按照 zk1 的步骤配置一遍,唯一的不同在于 echo 输出的是不同 zk 节点的服务名称

4、重启三个zk容器

# 将上面配置修改之后重启zk容器
docker restart zk1
docker restart zk2
docker restart zk3

5、验证集群状态

# 进入zk1容器

docker exec -it zk1 /bin/bash

# 查看集群状态

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

可以看出 Mode 是 follower, 证明 zk1 是从节点

# 接下来进入zk2查看节点状态

lizhengi@bogon ~ % docker exec -it zk2 /bin/bash
root@24f30a4fca2b:/apache-zookeeper-3.7.0-bin# cd bin
root@24f30a4fca2b:/apache-zookeeper-3.7.0-bin/bin# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader

zk2 的 Model 是 leader, 证明是主节点, zk3 不用看也就知道是从节点。

至此,整个基于 docker 的 zk 集群就算是搭建完毕了

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

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

相关文章

java项目-第152期ssm远程诊断系统-java毕业设计_计算机毕业设计

java项目-第152期ssm远程诊断系统-java毕业设计_计算机毕业设计 【源码请到资源专栏下载】 今天分享的项目是《远程诊断系统》 该项目分为3个角色&#xff0c;管理员、用户和医生。 用户可以在前台浏览医生信息&#xff0c;并且可以进行在线预约&#xff0c; 在后台个人中心可以…

解决常见的电脑故障

1.电脑卡顿怎么办 电脑CPU使用率高的原因有很多&#xff1b;例如&#xff1a;软件方面——驱动故障、病毒影响&#xff1b;硬件方面——内存容量太小&#xff0c;风扇散热故障等。 有效的解决方法&#xff1a;关闭Windows通知 在【设置】-【系统】-【通知和操作】中&#xff0c…

并发编程之定时任务定时线程池

ScheduledThreadPoolExecutor 定时线程池类的类结构图 它用来处理延时任务或定时任务。 它接收SchduledFutureTask类型的任务&#xff0c;是线程池调度任务的最小单位&#xff0c;有三种提交任务的方式&#xff1a; schedulescheduledAtFixedRatescheduledWithFixedDelay它采用…

Numpy函数详解

目录 有关矩阵行列交换问题 法一 法二 行进行互换 列进行互换 insert函数 delete函数 append函数 where函数 默认第一个为行索引第二个为列索引。 行列索引都是以作为起始数值作为第一列或者第一行。(根据c数组的知识进行理解) 有关矩阵行列交换问题 法一 使用矩阵…

消灭空指针,Java 8 给我们更好的解决方案

前言 大家好&#xff0c;我是小郭。 在平时的业务开发中&#xff0c;空指针是我们经常遇到的问题&#xff0c; 他可能会导致我们的流程无法正常进行或者一些意外情况的发生。 这就是我们需要避免空指针的原因&#xff0c;那我们有哪些方式去解决这个问题呢&#xff1f; 空…

英语语法基础

英语语法知识点1   第一点&#xff1a;动词的变化   1、代词及be动词   主格 I we you you she/he/it they   宾格 me us you you her/him/it them   代词所有格 my our your your her/his/its their   名词性代词 mine ours yours yours hers/his/its theirs   …

FPGA数字信号、图像

1、基于FPGA的数字图像处理原理及应用 (牟新刚) 本书首先介绍FPGA程序设计和图像与视频处理的关键基础理论&#xff0c;然后通过实例代码详细讲解了如何利用FPGA实现直方图操作中的直方图统计/均衡化/线性拉伸/规定化、线性滤波器操作中的均值滤波器、Sobel算子(滤波、求模、求…

Redis从理论到实战:用Redis解决缓存穿透、缓存击穿问题(提供解决方案)

文章目录一、缓存穿透1、什么是缓存穿透2、解决方案二、缓存雪崩三、缓存击穿1、什么是缓存击穿2、解决方案3、互斥锁解决缓存击穿问题4、逻辑删除解决缓存击穿问题加油加油&#xff0c;不要过度焦虑(*^▽^*) 一、缓存穿透 1、什么是缓存穿透 缓存穿透是指客户端请求的数据在…

重组蛋白/细胞因子的实验操作

在我们进行抗体制备、ELISA、药物研究、免疫实验、细胞培养、晶体结构分析等实验时&#xff0c;免不了要和重组蛋白打交道。MCE 重组蛋白产品涵盖超过 2000 种不同功能的重组蛋白&#xff0c;具有批次间一致性&#xff0c;优异的活性以及极低的内毒素水平等特性&#xff0c;可用…

小学生python游戏编程arcade----坦克大战3

小学生python游戏编程arcade----坦克大战3前言整体解绍1、坦克大战3--未完&#xff0c;只是功能初具1.1 文件结构1.2 类1.3 角色类1.4 粒子类1.5 主程序框1.6 main函数1.7 效果图1.8 代码实现源码获取前言 接以上多篇文章解绍arcade游戏编程的基本知识&#xff0c;回归主题&am…

数商云B2B电商系统商品管理功能剖析,助力家用电器企业业务提效

如今&#xff0c;传统家用电器企业的发展空间不断受到电商渠道的积压&#xff0c;由于许多家电企业缺乏数字化的管理工具&#xff0c;导致管理低效&#xff0c;还很容易产生存货积压、供不应求等问题。随着家用电器市场需求疲软、竞争日趋白热化&#xff0c;家用电器企业亟须加…

密码学 数字签名

消息鉴别的缺陷 消息鉴别保证了数据完整性&#xff0c;消息不被第三方侵犯&#xff0c;但是不保证双方之间的欺骗。如果A发送认证消息给B&#xff0c;可能会存在多种争议&#xff1a; B伪造一个不同的消息&#xff0c;声称是A发的 A否认发过这个消息&#xff0c;B无法证明A确实…

爬虫软件是什么意思

爬虫软件的正宗名称是python计算机编程语言&#xff0c;广泛应用于系统管理任务的处理和Web编程。 python软件为什么叫爬虫软件&#xff1f;爬虫通常指的是网络爬虫&#xff0c;就是一种按照一定的规则&#xff0c;自动地抓取万维网信息的程序或者脚本。所以Python被很多人称为…

抗疫众志成城网页设计成品 抗击疫情感动人物网页制作模板 大学生抗疫静态HTML网页源码 dreamweaver网页作业致敬逆行者网页设计作品

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

缓存过期都有哪些策略?

常见以下四种缓存过期策略&#xff1a; 定时过期&#xff1a;每个设置过期时间的key都需要创建⼀个定时器&#xff0c;到过期时间就会立即清除。该策略可以⽴ 即清除过期的数据&#xff0c;对内存很友好&#xff1b;但是会占⽤⼤量的CPU资源去处理过期的数据&#xff0c;从⽽影…

C++11、17、20的内存管理-指针、智能指针和内存池从基础到实战(上)

C11、17、20的内存管理-指针、智能指针和内存池从基础到实战&#xff08;上&#xff09;第一章 指针原理和快速入门1、第一个指针程序-详解指针代码2、图示进程的内存空间划分分析代码区_堆栈_内核空间3、各种内存空间-堆_栈_全局地址代码演示4、图解堆栈空间分配对应的指针代码…

中学化学教学参考杂志社中学化学教学参考编辑部2022年第12期目录

教学论坛《中学化学教学参考》投稿&#xff1a;cn7kantougao163.com 探索有效问题的层次化设计和结构化布局 于滨; 1-5 “双减”政策下初中化学作业设计策略与方法探究 王洁; 5-7 中学化学课程思政教学案例设计 兰青;靳素娟;马玲;谢海泉; 8-9 化学教学情境创设…

5G无线技术基础自学系列 | 基础参数及帧结构

素材来源&#xff1a;《5G无线网络规划与优化》 一边学习一边整理内容&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 5G在空中接口的参数定义大多和LTE一致&…

Centos7 安装Seata1.5.1

一、环境说明 IP操作系统程序备注10.0.61.22centos7.9PostgreSQL-14.11已提前部署10.0.61.21centos7.9Nacos-2.1.0已提前部署10.0.61.22centos7.9seata-server-1.5.1本文将要部署 二、部署 1. 下载 wget https://github.com/seata/seata/releases/download/v1.5.1/seata-ser…

【Java八股文总结】之Spring MVC

文章目录Spring MVC1、Spring MVC介绍2、Spring MVC的核心组件3、Spring MVC工作流程4、Spring MVC Restful风格的接口的流程&#xff1f;5、Spring MVC请求参数的种类1. 请求参数&#xff08;传递json数据&#xff09;2. 日期类型参数传递6、Spring MVC开发中用到的工具7、Spr…