代码之家  ›  专栏  ›  技术社区  ›  Lucas.de

端口映射中的Docker swarm缩放行为

  •  1
  • Lucas.de  · 技术社区  · 7 年前

    $ sudo docker node ls
    ID                            HOSTNAME         STATUS              AVAILABILITY        MANAGER STATUS
    i12s3zxsn4vu1c98bv3i5idr8     node03           Ready               Active
    i2ckxvsju4tmommxim3dbfq7l     node02           Ready               Active
    wak4isl46dn7pbo39drrhphju *   node01           Ready               Active              Leader
    

    然后,我在该swarm上运行一个nginx副本,并将其端口映射到8080:

    $ sudo docker service create --replicas 1 --publish 8080:80 --name nginx nginx
    $ sudo docker service ls
    ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
    neahnb9mvi1i        nginx               replicated          1/1                 nginx:latest        *:8080->80/tcp
    

    http://node01:8080

    接下来,我将nginx实例扩展到6个:

    $ sudo docker service scale nginx=6
    $ sudo docker service ls
    ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
    neahnb9mvi1i        nginx               replicated          6/6                 nginx:latest        *:8080->80/tcp
    

    从那里,我仍然可以在 .

    2 回复  |  直到 7 年前
        1
  •  2
  •   David J Eddy    7 年前

    我认为对主机的请求是在循环类型的分配中分配的。

    找到这篇关于它的便利文章 http://blog.scottlogic.com/2016/08/30/docker-1-12-swarm-mode-round-robin.html . 签出标题为' 入口和循环负载平衡

        2
  •  1
  •   herm    7 年前

    您可以使用swarm中任何机器的IP和该端口访问任何暴露其端口的服务(使用堆栈部署)。Docker swarm然后将该请求转发给其中一个副本。 哪个副本由healthstate(不健康的服务被忽略)和配置的负载平衡选项决定,默认情况下是循环。