我正在使用docker-swarm建立一个云架构的项目。我知道,使用swarm,我可以部署服务的副本,这意味着该映像的多个容器将运行以服务请求。如何在Docker-Swarm模式下完成负载均衡
我还看到,docker有一个内部负载均衡器来管理这个请求分配。
不过,我需要了解以下帮助:
说我有一个公开服务的REST API或者说,它的一个web应用程序的容器。如果我在群中部署了多个容器(副本),并且我有其他容器(运行某些应用程序)与此HTTP/REST服务交谈。
然后,当我写这些应用程序IP:端口组合使用?是否有任何工作节点IP正在运行这些服务?这样做是否会妥善分配负载,即使是在运行相同服务的其他工人/经理之间也是如此?
或者我应该调用管理器来反过来适当地维护路由(即使管理器节点没有运行此特定服务的容器)?
谢谢。
你确定它总是循环?你能链接到这个事实吗?它让我感到奇怪的设计选择。可能产生大量不必要的网络流量,例如如果一个容器需要另一个容器的服务,并且在同一主机上有一个副本 - 应该给予副本优先级,以避免不必要的网络流量。 –
@farhad:谢谢。我看到群集中的节点之间的负载平衡混乱。但是,假设我已经将容器隔离到跨节点设置的不同覆盖网络。负载平衡是否仍然发生?(1) 节点++ - >容器(A)_1,容器(A) Container(A)类型的两种服务都连接到三个不同的覆盖网络,每个覆盖网络只有C **,D&E在Node **上运行。 因此,当C,D或E试图通过自己的覆盖网络访问类型A的容器时,它会被处理吗? – Shabirmean
@AssafLavie容器流量使用dns。 Swarm内部DNS将以循环顺序返回与服务名称匹配的所有活动容器记录。 Kubernetes通过pod概念处理这个问题。 –