端口映射上的 Docker 群扩展行为

标签 docker swarm horizontal-scaling

我有一个由三个节点组成的群:

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

然后我在该 swarm 上运行 1 个 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

接下来,我将 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

从那里,我仍然能够通过 http://node01:8080 访问 nginx .

但是,如果 docker swarm 将多个节点公开为唯一主机,那么在这样的扩展操作期间,由于我的所有 nginx 服务都映射到同一个 8080 端口,他如何管理端口? swarm 内部完成的所有服务实例之间是否存在循环负载平衡并在 8080 上返回答案?

最佳答案

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

找到了这篇关于它的方便文章 http://blog.scottlogic.com/2016/08/30/docker-1-12-swarm-mode-round-robin.html 。查看标题为“INGRESS AND ROUND ROBIN LOAD BALANCING”的部分。

关于端口映射上的 Docker 群扩展行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46407531/

相关文章:

docker - swarm 中的副本数不在工作节点中启动 (1/4)

docker - 将 Docker Machine 与 Swarm 一起使用和通过 Docker 守护进程使用 Swarm 有什么区别?

node.js - 使用redis水平扩展express/node.js和socket.io

python - 轻松启动多个rq工作进程——水平扩展

node.js - 使用 Yarn 创建目录的权限

docker - 确定 Docker 镜像是已签名还是未签名

python - 在 Pyswarm PSO 函数中实现约束

c# - 如何在容器内使用Coverlet运行单元测试覆盖率报告?

docker - 创建 docker 镜像的开销是多少?

cassandra - NoSQL 仲裁与虚拟分片的比较