首页 > 解决方案 > Docker swarm:负载均衡是如何工作的

问题描述

我以集群模式运行服务。我有一个管理器和两个工作节点,服务在三个节点上划分了 6 个副本。我可以使用 , 来获得我的服务,manager:8080没有任何问题。worker1:8080worker2:8080

现在,当我排空或关闭 worker2 时,worker2:8080它仍然可以工作,这就是我所期望的。但是,当我耗尽经理时......manager:8080不再可以访问了。为什么会这样?

我想将 swarm 用作具有高可用性的负载均衡器。

我的经理有一个域,所以当我打开domain:8080并且经理上的容器由于任何原因而关闭时,它应该重定向到我理解的其中一名工人。这甚至可能吗?还是我必须将域分配给工作人员?

编辑:

我开始服务:

docker stack deploy -c docker-compose.yml --with-registry-auth <service_name>

my compose file:

version: "3.5"
services:
  portal:
    image: image-from-gitlab-registry:latest
    ports:
      - '80:80'
      - '443:443'
    deploy:
      replicas: 6
    networks:
      - network
    restart: always
  redis:
    image: redis:6.0.1
    deploy:
      replicas: 3
    networks:
      - network
    ports:
      - "6379:6379"
    restart: always
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
networks:
  network:

标签: dockerdocker-swarmdocker-swarm-mode

解决方案


推荐阅读