首页 > 其他分享 >win环境基于docker搭建zookeeper伪集群

win环境基于docker搭建zookeeper伪集群

时间:2023-04-25 12:33:28浏览次数:33  
标签:zk win 2888 zookeeper 3888 zoo1 2181 docker

创建路径:D:\Docker\zk-cluster

在此路径下创建配置文件:docker-compose.yml

version: '2'
networks:
  zk-net:
    name: zk-net
services:
    zoo1:
        image: zookeeper
        restart: always
        container_name: zoo1
        ports:
            - "2181:2181"
        environment:
            ZOO_MY_ID: 1
            ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2182 server.3=zoo3:2888:3888;2183 
        networks:
          - zk-net
    zoo2:
        image: zookeeper
        restart: always
        container_name: zoo2
        ports:
            - "2182:2181"
        environment:
            ZOO_MY_ID: 2
            ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2182 server.3=zoo3:2888:3888;2183 
        networks:
          - zk-net
    zoo3:
        image: zookeeper
        restart: always
        container_name: zoo3
        ports:
            - "2183:2181"
        environment:
            ZOO_MY_ID: 3
            ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2182 server.3=zoo3:2888:3888;2183 
        networks:
          - zk-net

看一下各个参数的含义:

    zoo1: #配置1号zk
        image: zookeeper:latest #zk版本
        restart: always
        container_name: zoo1 #容器的名字
        ports:
            - "2181:2181" #将该容器的2181端口开放给物理机2181端口
        environment:
            ZOO_MY_ID: 1 #表示zk服务的id,它是1-255之间的整数,必须在集群中唯一
            ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2182 server.3=zoo3:2888:3888;2183  #zk集群的主机列表

其中 ZOO_SERVERS 一项配置较为复杂,所以我问了一下chatGPT:

这是 ZooKeeper 集群的配置信息,其中 server.1 表示该节点的 ID 号为 1。zoo1:2888:3888 表示该节点所在的服务器名称和端口号,其中 2888 是用于 follower 和 leader 连接的端口号,3888 是用于选举 leader 时的端口号。2181 是客户端连接的端口号,也就是 ZooKeeper 服务监听的端口号。因此,这个配置信息表示该节点的 ID 号为 1,它的地址为 zoo1:2888:3888,同时监听的端口号为 2181。

注意这里根据zookeeper版本不同,配置也有区别,3.4.x及以下版本并没有 ;2181 这个参数。

在该路径下打开终端

PS D:\Docker> cd .\zk-cluster\

使用该命令启动:

PS D:\Docker\zk-cluster> docker-compose -f .\docker-compose.yml up -d

然而报错了:

Top-level object must be a mapping

顺便看一下这个报错,错误原因是没保存···

保存这个文档,然后重新启动

PS D:\Docker\zk-cluster> docker-compose -f .\docker-compose.yml up -d

[+] Running 4/4

✔Network zk-cluster_default Created 0.8s

✔ Container zoo1        Started  3.3s

✔ Container zoo3        Started  3.3s

✔ Container zoo2        Started  3.3s

启动成功。

查看docker客户端的容器面板:

进入该容器:

PS D:\Docker\zk-cluster> docker exec -it zoo1 /bin/bash

root@9c3f8f26101c:/apache-zookeeper-3.8.1-bin# cd bin

root@9c3f8f26101c:/apache-zookeeper-3.8.1-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

root@9c3f8f26101c:/apache-zookeeper-3.8.1-bin/bin# exit

exit

PS D:\Docker\zk-cluster> docker exec -it zoo2 /bin/bash

root@204ef646b371:/apache-zookeeper-3.8.1-bin# cd bin

root@204ef646b371:/apache-zookeeper-3.8.1-bin/bin# ./zkServer.sh status

ZooKeeper JMX enabled by default

Using config: /conf/zoo.cfg

Client port found: 2182. Client address: localhost. Client SSL: false.

Mode: leader

可以看到zoo1是follower,zoo2是leader

简单的3节点zookeeper集群就搭建完毕。

 

在查找资料过程中,我发现不少的博客都另外配置了zoo.cfg这个文件,这当然不失为一种办法。但是就在本地部署伪集群来说,我无法认同在docker中使用这样的配置方法,这使得配置的过程复杂化了。当然在真正的zookeeper集群中,这并不是一个问题···

标签:zk,win,2888,zookeeper,3888,zoo1,2181,docker
From: https://www.cnblogs.com/muzphy/p/17352266.html

相关文章

  • windows环境下emacs的python简单配置
    首先参考了上一篇《emacs极简配置》,我的想法是打开兼容vim的viper到5级,然后一些基本的字体设定,然后如何执行python文件的一个全过程方法。1、先打开emacs,如果忘了怎么用了,看一下自带的教程,还是中文的,超级方便。2、学完后,键入C-xC-f并按~,这样就会打开默认的配置文件所在的目录......
  • rust交叉编译配置:windows上编译linux可执行程序
    rust交叉编译配置:windows上编译linux可执行程序简述交叉编译大概指在在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码.本次,我们配置的是在windows上编译出在linux上运行的rust可执行程序.我们在安装rust之后,默认会安装跟机器环境搭配的编译相关工具.......
  • zookeeper系列之通信模型
    本文的主题就是讲解Zookeeper通信模型,本节将通过一个概要图来说明Zookeeper的通信模型。Zookeeper的通信架构在Zookeeper整个系统中,有3中角色的服务,client、Follower、leader。其中client负责发起应用的请求,Follower接受client发起的请求,参与事务的确认过程,在leadercrash后的leade......
  • docker跨主机容器访问docker+weave
    这玩意是真的折磨,不难,但是网上的教程太杂了,坑太多了。需求现在有两台服务器,里面部署了两台docker,此时我想要用Adocker里面的容器去访问Bdocker里面的容器。1.A主机192.168.159.140#安装weave#先下载wget-O/usr/local/bin/weavehttps://raw.githubusercontent.com/zettio......
  • 虚拟机-windows 修改密码
    1、关机2、备份卷3、手动操作把系统卷挂载到别的vm上4、复制cmd.exe覆盖放大镜的exe文件5、手动卸载6、进入登录页面后点击放大镜的按钮,输入命令重置密码当前密码Tstack@1231.关机[root@openstack‐con01~(keystone_admin)]#novalist‐‐all|grep172.16.0.48|5d356c31‐......
  • 容器技术Docker知识精讲【形成知识体系篇】
    环境要求Linux操作系统(Centos),建议在虚拟机VMware或VirtualBox下安装CentosDocker容器MobaXterm客户端工具学习建议Docker的学习分为四个阶段:了解---->>入门--->>熟悉--->>拓展了解阶段:请参考官方指导文档入门学习基础知识。官方文档地址:https://docs.docker.com/入......
  • 全球首发:Tiny10 2023 x86最终版及类似win10精简版/Win K/N版 单独添加Windows Media P
    情况:1.Windows功能列表中没有媒体功能(MediaFeatures),或该项下没有Windowsmediaplayer选项2.普通在Windows-设置-功能-可选功能中单独可以添加WMP,但实际并无效果,该组件需要相关功能包打开情况下才可以安装成功,否则尽管显示已安装,但实际Program目录下并无WindowsMediaPlayer出......
  • window操作系统安装多个版本nodejs版本-控制工具nvm
    参考:https://blog.csdn.net/m0_38134431/article/details/118388297https://juejin.cn/post/7044890876631318564电脑上已经安装了10.x版本的nodejs,你不想直接更新到12.x,想同时保存10.x和12.x版本,在必要的时候还能随时切换nodejs版本,nvm工具可以实现一、首先要安装nvm下载地......
  • mac+docker+jenkins,运行python自动化
    一、实现思路在mac本地安装DockerDesktop创建jenkins容器根据自动化项目依赖包构建python镜像(构建自动化python环境)运行新的python容器,执行jenkins从仓库中拉下来的自动化项目执行完成之后删除容器二、环境准备1、一台mac2、在mac上安装DockerDesktop,打开......
  • windows找回wifi密码
    1.打开命令提示符,键入netshwlanshowprofiles就像下图2.上述列表中的名称是电脑中存储的所有wifi配置;找到待找回密码的wifi名称,继续输入netshwlanshowprofilename="wifi名称"key=clear安全设置中的关键内容就是wifi密码......