【问题标题】:Where to public zookeeper hosts?公共动物园管理员主机在哪里?
【发布时间】:2017-10-29 23:24:51
【问题描述】:

我有以下情况,如下所示:

如您所见,我安装了两个 docker 主机,Dockerhost1 和 Dockerhost2。在两台主机内,2 Zookeeper 容器正在运行。

我希望所有的 Zookeeper 容器能够互相认识,因为我要搭建一个集群环境。

以下网络可用:

Dockerizer@docker1:~$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
dbf91cc26912        bridge              bridge              local
57f38c4c93ad        host                host                local
5d54f5ce807e        none                null                local

我的问题是:

我必须在哪个网络中运行 Zookeeper 容器?我猜是host 网络?

要在主机上运行两个容器,我会创建一个 compose 文件,其中包含:

version: '3.1'

services:
    zoo1:
        image: zookeeper
        restart: always
        hostname: zoo1
        ports:
            - 2181:2181
        environment:
            ZOO_MY_ID: 1
            ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888

    zoo2:
        image: zookeeper
        restart: always
        hostname: zoo2
        ports:
            - 2182:2181
        environment:
            ZOO_MY_ID: 2
            ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888  

如何配置网络,让他们彼此都知道?

建议安装docker swarm,做成集群吗?

【问题讨论】:

    标签: docker docker-compose apache-zookeeper


    【解决方案1】:

    我可能会实现 swarm 模式,不是为了将容器作为扩展服务进行调度和管理,而是为了包含的覆盖网络。您可以设置自己的 k/v 存储并将其用于覆盖网络,但在主机 1 上运行要容易得多:

    docker swarm init
    

    然后在主机 2 上运行输出 join 命令。

    然后您可以创建一个可连接的覆盖网络并跨越两个主机:

    docker network create -d overlay --attachable zookeeper
    

    Attachable 让您还可以在 swarm 服务之外使用网络。您只需将其作为外部网络添加到您的撰写文件中:

    version: '3.1'
    
    networks:
      zookeeper:
        external: true
    
    services:
        zoo1:
            image: zookeeper
            restart: always
            hostname: zoo1
            networks:
                - zookeeper
            ports:
                - 2181:2181
            environment:
                ZOO_MY_ID: 1
                ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888
    
        zoo2:
            image: zookeeper
            restart: always
            hostname: zoo2
            networks:
                - zookeeper
            ports:
                - 2182:2181
            environment:
                ZOO_MY_ID: 2
                ZOO_SERVERS: server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 
    

    【讨论】:

    • docker swarm 和 kubernetes 有什么区别?
    • 当我安装 swarm 时,我需要 consul 来进行服务发现还是不再相关?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-14
    • 2015-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-01
    • 1970-01-01
    相关资源
    最近更新 更多