如何在Docker-Swarm模式下完成负载平衡

我正在使用docker-swarmbuild立一个云架构的项目。 我知道,我可以部署一个服务的副本,这意味着该图像的多个容器将运行服务请求。

我还看到docker有一个内部的负载均衡器来pipe理这个请求分配。

不过,我需要帮助理解以下内容:

假设我有一个容器将一个服务公开为REST API或者说它是一个web应用程序。 如果我在群中部署了多个容器(副本),并且有其他容器(运行某些应用程序)与此HTTP / REST服务交谈。

那么,当我写这些应用程序使用哪个IP:PORT组合? 是否有任何工作节点IP运行这些服务? 这样做是否会妥善分配负载,即使是在运行相同服务的其他工人/经理之间也是如此?

或者我应该调用pipe理器,而pipe理器反过来适当地维护路由(即使pipe理器节点没有运行此特定服务的容器)?

谢谢。

当我写这些应用程序使用哪个IP:PORT组合? 是否有任何工作节点IP运行这些服务?

即使在该节点上不存在有关服务的副本,也可以使用参与群体的任何节点。 所以你将使用Node:HostPort组合。 入口路由网格将请求路由到活动容器。

一万字的价值

在这里输入图像说明

这样做是否会妥善分配负载,即使是在运行相同服务的其他工人/经理之间也是如此?

入口控制器将默认循环。

现在客户端应该使用dns循环来访问docker swarm节点上的服务。 传统的DNScaching问题将会发生。 为了避免这种情况,我们可以使用像HAproxy这样的外部负载均衡器。

在这里输入图像说明