docker部署zookeeper集群方式(单主机、多主机)

 更新时间:2023年04月12日 16:54:28   作者:轩辕龙儿  
这篇文章主要介绍了docker部署zookeeper集群方式(单主机、多主机),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

1、一台主机上部署zookeeper集群

下面这个是官方给出的docker-compose的部署方案(这个是都在一台主机上部署的):

version: '3'
services:
    zoo1:
        image: zookeeper
        restart: always
        ports:
            - 2182: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
        ports:
            - 2183: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
        ports:
            - 2184: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

2、一台主机部署zookeeper集群分析

我们从上面的分析,最主要的就是ZOO_MY_ID和ZOO_SERVERS(更多环境变量配置参考:https://hub.docker.com/_/zookeeper

  • ZOO_MY_ID:节点ID
  • ZOO_SERVERS:集群节点地址,多个节点之间使用空格隔开

由此可以看出如果不在一个主机上,那么这几个容器之间就得是想通的,为了使其想通,我们运用了Macvlan网络

3、Macvlan网络

macvlan本身是linxu kernel的模块,本质上是一种网卡虚拟化技术。

其功能是允许在同一个物理网卡上虚拟出多个网卡,通过不同的MAC地址在数据链路层进行网络数据的转发,一块网卡上配置多个 MAC 地址(即多个 interface),每个interface可以配置自己的IP,Docker的macvlan网络实际上就是使用了Linux提供的macvlan驱动.在物理网络看来,每张虚拟网卡都是一个单独的接口。

4、跨主机环境准备

编号主机IP容器IP
主机1192.168.1.18710.0.3.71
主机2192.168.1.18810.0.3.72
主机3192.168.1.18910.0.3.73

5、创建macvlan网络

主机1(主机2和主机3也做如下类似操作):

docker network create -d macvlan --subnet=10.0.3.0/24 --gateway=10.0.3.1 -o parent=em2 zookeeper-kafka-net
  • subnet这里结尾最好是/24,代表255.255.255.0,如果是/16代表255.255.0.0,16这种据说在设置了iptable的情况下会出问题
  • parent后是网卡名称192.168.1.187的网卡名称,可通过ipconfig查找

最后的zookeeper-kafka-net是你创建的macvlan网络名称,可随意写

6、docker-compose.yml文件

主机1:

version: "3"
services:
  zookeeper1:
    container_name: zookeeper1
    image: zookeeper:3.6.2
    networks:
      zookeeper-kafka-net:
        ipv4_address: 10.0.3.71
    ports:
      - "22181:2181"
      - "22888:2888"
      - "23888:3888"
    environment:
      ZOO_MY_ID: 1
      ZOO_SERVERS: server.1=10.0.3.71:2888:3888;2181 server.2=10.0.3.72:2888:3888;2181 server.3=10.0.3.73:2888:3888;2181
    restart: always
networks:
  zookeeper-kafka-net:
    external:
      name: zookeeper-kafka-net

主机2:

version: "3"
services:
  zookeeper2:
    container_name: zookeeper2
    image: zookeeper:3.6.2
    networks:
      zookeeper-kafka-net:
        ipv4_address: 10.0.3.72
    ports:
      - "22181:2181"
      - "22888:2888"
      - "23888:3888"
    environment:
      ZOO_MY_ID: 2
      ZOO_SERVERS: server.1=10.0.3.71:2888:3888;2181 server.2=10.0.3.72:2888:3888;2181 server.3=10.0.3.73:2888:3888;2181
    restart: always
networks:
  zookeeper-kafka-net:
    external:
      name: zookeeper-kafka-net

主机3:

version: "3"
services:
  zookeeper3:
    container_name: zookeeper3
    image: zookeeper:3.6.2
    networks:
      zookeeper-kafka-net:
        ipv4_address: 10.0.3.73
    ports:
      - "22181:2181"
      - "22888:2888"
      - "23888:3888"
    environment:
      ZOO_MY_ID: 3
      ZOO_SERVERS: server.1=10.0.3.71:2888:3888;2181 server.2=10.0.3.72:2888:3888;2181 server.3=10.0.3.73:2888:3888;2181
    restart: always
networks:
  zookeeper-kafka-net:
    external:
      name: zookeeper-kafka-net

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。 

相关文章

  • docker在win10家庭版下构建laravel开发环境的教程详解

    docker在win10家庭版下构建laravel开发环境的教程详解

    这篇文章主要介绍了docker在win10家庭版下构建laravel开发环境,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • Docker学习笔记之docker入门

    Docker学习笔记之docker入门

    docker可以类比成window下的VMware。docker有两个基本的概念:容器(container)和镜像(image),分别对应为VMware中的系统镜像和系统镜像中运行的软件。docker的强大之处在于VMware只能运行几个虚拟机的设备上docker可以同时运行几十甚至上百个虚拟机。
    2016-11-11
  • Docker镜像分析工具dive原理解析

    Docker镜像分析工具dive原理解析

    这篇文章主要介绍了Docker镜像分析工具dive原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
    2020-11-11
  • Docker如何同时启动多个服务

    Docker如何同时启动多个服务

    这篇文章主要为大家详细介绍了Docker如何同时启动多个服务,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • docker安装drone的实现示例

    docker安装drone的实现示例

    Drone是一款基于Docker的持续集成和持续部署平台,可以帮助开发者自动化构建、测试和部署应用程序,本文主要介绍了docker安装drone的实现示例,感兴趣的可以了解一下
    2023-12-12
  • 使用Nexus创建Docker仓库的方法步骤

    使用Nexus创建Docker仓库的方法步骤

    这篇文章主要介绍了使用Nexus创建Docker仓库的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • docker部署Macvlan实现跨主机网络通信的实现

    docker部署Macvlan实现跨主机网络通信的实现

    这篇文章主要介绍了docker部署Macvlan实现跨主机网络通信的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • docker安装elastic search的详细过程

    docker安装elastic search的详细过程

    这篇文章主要介绍了docker安装elastic search的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • Docker创建MySQL容器的方法

    Docker创建MySQL容器的方法

    本篇文章主要介绍了Docker创建MySQL容器的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • docker环境搭建JMeter+Grafana+influxdb可视化性能监控平台的教程

    docker环境搭建JMeter+Grafana+influxdb可视化性能监控平台的教程

    这篇文章主要介绍了docker下搭建JMeter+Grafana+influxdb可视化性能监控平台,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-07-07

最新评论