Docker群集负载均衡 - 如何为服务提供通用名称?
我读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
为什么不使用循环?
疑惑:
- 有什么不对的在上面的步骤?
- 我错过了什么吗?
- 我觉得我错过了一些东西。像常见的服务名称
http://domain:8080/service
一样,群体将以循环方式工作。
我想了解只有群模式。截至目前,我对外部负载均衡器不感兴趣。
如何在行动中看到群体负载平衡?
Docker对每个连接端口执行循环负载均衡。只要连接完成,它将继续进入同一个实例。
Http允许连接保持活动状态并重新使用。浏览器利用此行为通过断开连接来加速以后的请求。要测试循环负载平衡,您需要禁用保持活动状态的设置或切换到像curl或wget这样的命令行工具。
太棒了。 CURL点按预期工作。如何指定循环或随机或传播模式。我无法获得正确的链接。 –
群集模式只是轮循负载均衡,ha是新的默认调度策略(即使一个节点利用率低得多,实例也会传播)。 – BMitch
谢谢。你说现在唯一的策略就是HA。如果HA是这种情况,在[this](https://stackoverflow.com/questions/44493603/docker-swarm-add-new-worker-re-scale-the-service)问题中,update应该将额外的实例分配给新的节点。是不是? –
主机是Windows还是Linux?你如何连接到服务,浏览器或卷曲? – BMitch
@BMitch所有的Linux主机。我通过Windows的浏览器进行连接。我使用'docker service update'来暴露端口' –