• Docker Desktop创建ZK集群和Kafka集群 详解


    大家好 我是积极向上的湘锅锅💪💪💪

    首先得要有一个能正常运行的Docker Desktop
    网上教程很多
    这里就不再阐述

    我的版本是Docker Desktop 4.11.1


    创建ZK集群

    1. 配置docker-compose.yml

    如果一个一个的配置docker来做zk集群太麻烦,docker有一个解决方案,通过一个配置文件,就能搭建一个集群。
    创建一个名为:docker-compose.yml的配置文件
    (创建一个txt,把内容复制进去,改下名字和后缀)

    比如我们要创建集群数是三台

    version: '3.1'
    
    services:
      zoo1:
        image: zookeeper
        restart: always
        hostname: zoo1
        container_name: zoo1
        ports:
          - 2181:2181
        environment:
          ZOO_MY_ID: 1
          ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
    
      zoo2:
        image: zookeeper
        restart: always
        hostname: zoo2
        container_name: zoo2
        ports:
          - 2182:2181
        environment:
          ZOO_MY_ID: 2
          ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
    
      zoo3:
        image: zookeeper
        restart: always
        hostname: zoo3
        container_name: zoo3
        ports:
          - 2183:2181
        environment:
          ZOO_MY_ID: 3
          ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
    
    • 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

    注意要看自己的ZK版本,zk的版本不同,ZOO_SERVERS也不同, zookeeper3.5之前不需要加;2181,zookeeper3.5之后需要加

    具体写法参照zookeeper在docker hub的主页: https://hub.docker.com/_/zookeeper


    2. 启动docker-compose.yml

    在 docker-compose.yml 的文件目录下,执行指令

    docker-compose up -d -d 
    
    • 1

    执行后的结果

    PS C:\xxxxxxxx> docker-compose up -d
    Creating network "desktop_default" with the default driver
    Creating zoo1 ... done
    Creating zoo3 ... done
    Creating zoo2 ... done
    
    • 1
    • 2
    • 3
    • 4
    • 5

    执行 docker ps 查看一下是否添加成功了,如果是如下内容代表成功了
    在这里插入图片描述
    当然在Docker Desktop也可以看到
    在这里插入图片描述


    3. 测试

    查看zookeeper状态
    连接到zoo1,查看一下服务的状态

    docker exec -it zoo1 bash ./bin/zkServer.sh status
    
    • 1

    返回结果

    C:\Users\23172>docker exec -it zoo1 bash ./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

    Mode: follower 追随者节点
    Mode: leader 领导者节点

    也可以看看zoo2和zoo3

    连接到zoo1上试一下

    docker exec -it zoo1 /bin/bash
    
    • 1

    返回的内容是
    root@zoo1:/apache-zookeeper-3.8.0-bin#
    接下来连接查看

    ./bin/zkCli.sh -server 127.0.0.1:2181
    
    • 1

    返回如下内容
    在这里插入图片描述
    再随便输入一个指令

    ls /
    
    • 1

    有内容就表示ZK集群OK了


    Kafka集群

    1. 拉取kafka镜像

    docker pull bitnami/kafka
    
    • 1

    输入

    docker images
    
    • 1

    看到有bitnami/kafka就成功了


    2. 创建kafka实例

    先创建kakfa1实例

    docker run -d --name kafka1 -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=本机ip地址:2181 -e ALLOW_PLAINTEXT_LISTENER=yes -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://本机ip地址:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t bitnami/kafka
    
    • 1

    注意千万不要就开始复制然后运行
    有几个地方要注意
    在这里插入图片描述
    第一处是kafka实例的名字,不能重复
    第二处是端口号,如果换成9093,就全部改成9093
    第三处是broker的id
    第四处记得是填本机ip地址,不清楚的直接ipconfig查看

    然后再创建一个kakfa2实例
    只需要改如下地方

    • kafka名字
    • 端口号
    • broker的id

    这里小伙伴可以自己去尝试

    在Docker Desktop看到如下就表示成功了

    在这里插入图片描述


    3. 下载、安装可视化工具CMAK(Cluster Manager for Apache Kafka)

    1. 拉取镜像

    docker search kafka-manager
    
    • 1

    在这里插入图片描述
    运行KafKa-manage:

    docker run -dit -p 9000:9000 -e ZK_HOSTS="主机IP:2181" sheepkiller/kafka-manager
    
    • 1

    使用http://localhost:9000/登录即可

    在这里插入图片描述
    点击Add Cluster
    在这里插入图片描述
    有以下内容就可以了

    在这里插入图片描述

  • 相关阅读:
    Swin-Transformer详解
    GCN笔记:Graph Convolution Neural Network,ChebNet
    shiro与springMVC整合
    socks5代理解析:解决在线问题的利器
    虹科Pico汽车示波器学院 | 第二课直播精彩回顾
    JavaScript设计模式中策略模式的使用方法
    python中的模块与包
    机器人xacro设计+gazebo/rviz启动
    HBase原理深入
    5.Nacos
  • 原文地址:https://blog.csdn.net/qq_56263094/article/details/126329347