zookeeper搭建

本文详细介绍如何使用Docker部署ZooKeeper集群,包括单机和多机部署的步骤、配置参数解释及常见问题解决。提供了完整的docker-compose.yml示例,帮助读者快速搭建稳定可靠的ZooKeeper集群。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单机部署单个zookeeper :

Mode: standalone模式

hub.docker.com 上有不少 ZK 镜像, 不要用其他的镜像来套, 我们使用官方的 ZK 镜像吧.
首先执行如下命令:

docker pull zookeeper

每个人镜像都可能不一样,会导致各种各样的问题,不建议docker.io/wurstmeister/zookeeper,当时就是为了搭建kafka先搭zookeeper,好久都搭不起来集群,一直是Mode: standalone,曲折不多讲了

下面这篇文章写的很完整了

https://www.cnblogs.com/xiaohanlin/p/10405522.html

多机部署集群的

https://blog.csdn.net/qq_32488647/article/details/81905906

修正一个错误,myid是在dataDir=/data这个配置下的一个文件

在这个配置文件中,新出现的语句的含义:

      initLimit : 此配置表示允许follower连接并同步到leader的初始化时间,它以tickTime的倍数来表示。当超过设置倍数的tickTime时间,则连接失败。

      syncLimit : Leader服务器与follower服务器之间信息同步允许的最大时间间隔,如果超过次间隔,默认follower服务器与leader服务器之间断开链接。

      maxClientCnxns : 限制连接到zookeeper服务器客户端的数量

      server.id=host:port:port : 表示了不同的zookeeper服务器的自身标识,作为集群的一部分,每一台服务器应该知道其他服务器的信息。用户可以从“server.id=host:port:port” 中读取到相关信息。在服务器的data(dataDir参数所指定的目录)下创建一个文件名为myid的文件,这个文件的内容只有一行,指定的是自身的id值。比如,服务器“1”应该在myid文件中写入“1”。这个id必须在集群环境中服务器标识中是唯一的,且大小在1~255之间。这一样配置中,zoo1代表第一台服务器的IP地址。第一个端口号(port)是从follower连接到leader机器的端口,第二个端口是用来进行leader选举时所用的端口。所以,在集群配置过程中有三个非常重要的端口:clientPort:2181、port:2888、port:3888。

单机部署集群

https://blog.csdn.net/zzg_1990/article/details/78224431

主要就是涉及

ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888

clientPort=2181
dataDir=/data
dataLogDir=/datalog
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
server.1=zoo1:2888:3888
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888

检查zookeeper的两种方式

1.进入容器,或者在zookeeper下的bin目录下执行

zkServer.sh status

输出

ZooKeeper JMX enabled by default
Using config: /conf/zoo.cfg
Mode: leader

由此可见官网的配置文件在/conf下,顺道找到了dataDir  dataLogDir docker启动需要映射出去

2.在宿主机上执行

[root@centos_7_64_1 kafka-zk]# echo stat | nc 127.0.0.1 2181
Zookeeper version: 3.4.14-4c25d480e66aadd371de8bd2fd8da255ac140bcf, built on 03/06/2019 16:18 GMT
Clients:
 /172.20.0.1:41108[0](queued=0,recved=1,sent=0)

Latency min/avg/max: 0/16/146
Received: 12
Sent: 11
Connections: 1
Outstanding: 0
Zxid: 0x400000002
Mode: follower
Node count: 4

单机部署集群的docker-compose.yml,这里2888等不需要映射是因为zoo1,zoo2,zoo3启动后是不同的虚拟ip,多机部署时需要映射出去,那么实际使用的时候是否需要制定host模式是host模式呢?,另外可以加上volume映射- "/etc/localtime:/etc/localtime",时间一致

version: '2'
services:
    zoo1:
        image: zookeeper
        restart: always
        container_name: zoo1
        ports:
            - "3181:2181"
        environment:
            ZOO_MY_ID: 1
            ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
        volumes:
            - "/opt/logs/zoo1/:/datalog"
            - "/opt/data/zoo1/:/data"

    zoo2:
        image: zookeeper
        restart: always
        container_name: zoo2
        ports:
            - "3182:2181"
        environment:
            ZOO_MY_ID: 2
            ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
        volumes:
            - "/opt/logs/zoo2/:/datalog"
            - "/opt/data/zoo2/:/data"

    zoo3:
        image: zookeeper
        restart: always
        container_name: zoo3
        ports:
            - "3183:2181"
        environment:
            ZOO_MY_ID: 3
            ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
        volumes:
            - "/opt/logs/zoo3/:/datalog"
            - "/opt/data/zoo3/:/data"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值