2017-06-12 101 views
0

我读swarm routing meshDocker群集负载均衡 - 如何为服务提供通用名称?

我创建一个使用Tomcat服务器,并监听在8080

docker swarm init我在节点1创建一个节点管理器简单的服务。

docker swarm join /tokens我使用管理员在节点2和节点3提供的令牌来创建工作人员。

docker node ls显示我的服务,3在节点1中,1运行在节点2上运行的5个实例,另一个是在节点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一样,群体将以循环方式工作。

我想了解只有群模式。截至目前,我对外部负载均衡器不感兴趣。

如何在行动中看到群体负载平衡?

+0

主机是Windows还是Linux?你如何连接到服务,浏览器或卷曲? – BMitch

+0

@BMitch所有的Linux主机。我通过Windows的浏览器进行连接。我使用'docker service update'来暴露端口' –

回答

0

Docker对每个连接端口执行循环负载均衡。只要连接完成,它将继续进入同一个实例。

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

+0

太棒了。 CURL点按预期工作。如何指定循环或随机或传播模式。我无法获得正确的链接。 –

+1

群集模式只是轮循负载均衡,ha是新的默认调度策略(即使一个节点利用率低得多,实例也会传播)。 – BMitch

+0

谢谢。你说现在唯一的策略就是HA。如果HA是这种情况,在[this](https://stackoverflow.com/questions/44493603/docker-swarm-add-new-worker-re-scale-the-service)问题中,update应该将额外的实例分配给新的节点。是不是? –