Docker swarm 负载均衡 - 如何为服务指定通用名称?

Docker swarm load balancing - How to give common name to the service?

我读了swarm routing mesh

我创建了一个使用 tomcat 服务器并在 8080 监听的简单服务。

docker swarm init 我在 node1 创建了一个节点管理器。

docker swarm join /tokens我在节点2和节点3使用了manager提供的token来创建worker

docker node ls 显示我服务的 5 个实例,3 个 运行 在节点 1,1 个 运行 在节点 2,另一个在节点 3。

docker service create image 我创建了服务。

docker service scale imageid=5 缩放它。

我的应用程序使用在 JVM 级别维护的原子序数。

如果我点击 http://node1:8080/service 25 次,所有请求都会转到 node1。它如何平衡节点?

如果我点击 http://node2:8080/service,它会转到节点 2。

为什么不使用循环法?

疑问:

  1. 以上步骤有什么问题吗?
  2. 我是不是漏掉了什么?
  3. 我觉得我错过了什么。与普通服务名称 http://domain:8080/service 一样,swarm 将以循环方式工作。

我只想了解集群模式。我现在对外部负载均衡器不感兴趣。

如何查看 swarm 负载平衡的运行情况?

Docker 对端口的每个连接执行循环负载平衡。只要有一个连接,它就会继续去同一个实例。

Http 允许保持连接并重复使用。浏览器利用此行为通过保持连接打开来加速以后的请求。要测试循环负载平衡,您需要禁用保持活动设置或切换到命令行工具,如 curl 或 wget。