• Zookeeper:Mac通过Docker安装Zookeeper集群


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

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



    一、Mac-Zookeeper 镜像下载

    1、Mac 下 Docker 的安装及配置

    2、配置镜像地址

    # 配置镜像地址

      "experimental": false,
      "debug": true,
      "registry-mirrors": [
            // 镜像地址
        ]
    
    • 1
    • 2
    • 3
    • 4
    • 5

    # 国内镜像地址

    网易:https://hub-mirror.c.163.com/
    阿里云:https://<你的ID>.mirror.aliyuncs.com
    七牛云加速器:https://reg-mirror.qiniu.com
    
    • 1
    • 2
    • 3
    3、镜像(Zookeeper)下载
    # 没有指定TAG既是安装latest版本
    docker pull zookeeper
    # 也可以列出docker所有镜像,选择版本下载
    docker images
    
    • 1
    • 2
    • 3
    • 4
    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    二、Mac-Zookeeper 单机模式部署

    1、启动zk镜像
    docker run --name zookeeper -d -p 2181:2181 zookeeper
    
    • 1

    其中:

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

    # 查看 Zookeeper 的启动日志

    docker logs -f zookeeper
    
    • 1

    # 查看 Docker 所有运行的容器

    docker ps
    
    • 1

    # 表示 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52

    三、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
    
    • 1
    • 2
    • 3

    # 查看启动成功

    image-20221121010015150

    2、获取三个zk地址

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

    lizhengi@bogon ~ % docker inspect zk1
    {
    	...
     				"IPAddress": "172.17.0.2",
     	...
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    # 根据"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
    
    • 1

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

    apt-get update
    apt-get install vim
    
    • 1
    • 2

    # 修改zk的配置文件

    vim /conf/zoo.cfg
    
    • 1

    #修改配置文件之后查看

    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

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

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

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

    4、重启三个zk容器
    # 将上面配置修改之后重启zk容器
    docker restart zk1
    docker restart zk2
    docker restart zk3
    
    • 1
    • 2
    • 3
    • 4
    5、验证集群状态

    # 进入zk1容器

    docker exec -it zk1 /bin/bash
    
    • 1

    # 查看集群状态

    cd bin
    ./zkServer.sh status
    
    • 1
    • 2
    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    可以看出 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

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

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

  • 相关阅读:
    开源图编辑库 NebulaGraph VEditor 的设计思路分享
    Mac 公证失败问题排查
    启动新线程处理数据-比较耗时的任务最好要异步的处理,并且要设置合适的线程结束点---SpringCloud工作笔记191
    【高频Java面试题】简单说说JVM堆的内存结构和GC回收流程
    微信小程序设置时间缓存限制,一段时间后自动清除缓存内容
    Thread的基本用法
    PyTorch - Dataset 迭代数据接口 __getitem__ 异常处理
    前端常用操作(一)
    【Vue】vue项目目录介绍 es6的导入导出语法 vue项目开发规范 Vue项目编写步骤
    FastDFS学习笔记
  • 原文地址:https://blog.csdn.net/weixin_45187434/article/details/127958888