【问题标题】:Docker swarm high availability on nodesDocker swarm 节点上的高可用性
【发布时间】:2018-01-11 15:59:36
【问题描述】:

我正在试验 docker swarm。使用 VirtualBox,我在我的主机系统(Windows 7)上设置了三台 ubuntu 机器(每台机器运行 Docker 17.12.0 CE)。

我在其中一个 ubuntu 实例(管理器)上使用 docker swarm init 命令创建了一个 docker swarm,并使用 docker swarm join 命令将另外两个作为工作人员连接起来。在管理器节点上,我使用docker service create --name test -p 80:80 --replicas 3 myuser/webapp 创建了一个服务。

我的 webapp 在集群中所有节点上的容器中运行良好,我可以通过分配给虚拟 ubuntu 机器的不同 IP 地址从我的主机在浏览器中访问它 - 例如我的worker2上的192.168.56.103/webapp。

但是,如果我关闭 worker2,我显然无法再访问它了。在这里确保高可用性的最佳方法是什么,以便如果任何节点关闭,我的 webapp 仍然可以访问?

在实时环境中,问题是,当用户通过浏览器访问我的应用程序(在群中运行)时,如何避免“单一入口点”?

【问题讨论】:

    标签: docker docker-swarm


    【解决方案1】:

    您需要实现一个负载均衡器,在此服务的所有实例之间分配流量,例如支持 docker swarm 的 nginxtraefik

    Nginx

    http {
      upstream webapp {
        server 192.168.56.101;
        server 192.168.56.102;
        server 192.168.56.103;
      }
    
      server {
        listen 80;
    
        location /webapp {
          proxy_pass http://webapp;
        }
      }
    }
    

    Traefik

    version: '3.3'
    
    services:
      lb:
        image: traefik:latest
        ports:
          - 80:80
          - 8080:8080
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
        command: >
          --web --docker --docker.swarmmode
          --docker.domain=example.com --docker.watch
          --logLevel=DEBUG
        deploy:
          restart_policy:
            condition: on-failure
          placement:
            constraints:
              - node.role == manager
      webapp:
        image: 'myuser/webapp'
        deploy:
          replicas: 3
          labels:
            - "traefik.frontend.rule=PathPrefix:/webapp"
            - "traefik.backend=webapp"
            - "traefik.port=80"
    

    【讨论】:

    • 非常感谢您的回复。但这不只是意味着负载均衡器将成为单点故障,还是我错过了这一点?
    • 这取决于您使用的基础架构,您可以在集群 Docker Swarm 中使用 AzureAmazon 负载均衡器
    • 感谢您的回答,我会调查的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-13
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    相关资源
    最近更新 更多