Docker-Swarm模式下负载均衡是如何完成的
How is load balancing done in Docker-Swarm mode
我正在从事一个使用 docker-swarm 建立云架构的项目。我知道使用 swarm 我可以部署服务的副本,这意味着该图像的多个容器将 运行 服务请求。
我还读到 docker 有一个内部负载平衡器来管理此请求分配。
但是,我需要帮助来理解以下内容:
假设我有一个将服务公开为 REST API 的容器,或者说它是一个 Web 应用程序。如果我在 swarm 中部署了多个容器(副本)并且我有其他容器(运行 一些应用程序)与此 HTTP/REST 服务通信。
那么,当我编写那些应用程序时,我使用哪些 IP:PORT 组合?是工作节点 IP 的 运行 这些服务中的任何一个吗?这样做是否会在其他 workers/manager 运行 相同服务之间适当地分配负载?
或者我应该调用管理器来适当地处理路由(即使管理器节点没有容器 运行 此特定服务)?
谢谢。
when I write those apps which IP:PORT combination do I use? Is it any
of the worker node IP's running these services?
您可以使用任何参与 swarm 的节点,即使该节点上不存在相关服务的副本。
因此,您将使用 Node:HostPort
组合。入口路由网格会将请求路由到活动容器。
一图万字
Will doing so take care of distributing the load appropriately even
amongst other workers/manager running the same service?
入口控制器将默认进行循环。
现在客户端应该使用 dns 轮询来访问 docker swarm 节点上的服务。会出现经典的 DNS 缓存问题。为了避免这种情况,我们可以使用像 HAproxy 这样的外部负载均衡器。
现有答案的重要附加信息
在 docker swarm 前面使用代理 (HAProxy) 的优点是,swarm 节点可以驻留在专用网络上 代理服务器可以访问,但 public 不能访问。这将使您的集群安全。
如果您正在使用 AWS VPC
,您可以创建一个私有子网并将您的集群节点放置在私有子网中,并将代理服务器放置在可以将流量转发到集群的 public 子网中节点。
当您访问 HAProxy 负载平衡器时,它会将请求转发到 swarm 中的节点。 swarm routing mesh
将请求路由到活动任务。如果由于任何原因 swarm 调度程序将任务分派到不同的节点,则不需要重新配置负载均衡器。
我正在从事一个使用 docker-swarm 建立云架构的项目。我知道使用 swarm 我可以部署服务的副本,这意味着该图像的多个容器将 运行 服务请求。
我还读到 docker 有一个内部负载平衡器来管理此请求分配。
但是,我需要帮助来理解以下内容:
假设我有一个将服务公开为 REST API 的容器,或者说它是一个 Web 应用程序。如果我在 swarm 中部署了多个容器(副本)并且我有其他容器(运行 一些应用程序)与此 HTTP/REST 服务通信。
那么,当我编写那些应用程序时,我使用哪些 IP:PORT 组合?是工作节点 IP 的 运行 这些服务中的任何一个吗?这样做是否会在其他 workers/manager 运行 相同服务之间适当地分配负载?
或者我应该调用管理器来适当地处理路由(即使管理器节点没有容器 运行 此特定服务)?
谢谢。
when I write those apps which IP:PORT combination do I use? Is it any of the worker node IP's running these services?
您可以使用任何参与 swarm 的节点,即使该节点上不存在相关服务的副本。
因此,您将使用 Node:HostPort
组合。入口路由网格会将请求路由到活动容器。
一图万字
Will doing so take care of distributing the load appropriately even amongst other workers/manager running the same service?
入口控制器将默认进行循环。
现在客户端应该使用 dns 轮询来访问 docker swarm 节点上的服务。会出现经典的 DNS 缓存问题。为了避免这种情况,我们可以使用像 HAproxy 这样的外部负载均衡器。
现有答案的重要附加信息
在 docker swarm 前面使用代理 (HAProxy) 的优点是,swarm 节点可以驻留在专用网络上 代理服务器可以访问,但 public 不能访问。这将使您的集群安全。
如果您正在使用 AWS VPC
,您可以创建一个私有子网并将您的集群节点放置在私有子网中,并将代理服务器放置在可以将流量转发到集群的 public 子网中节点。
当您访问 HAProxy 负载平衡器时,它会将请求转发到 swarm 中的节点。 swarm routing mesh
将请求路由到活动任务。如果由于任何原因 swarm 调度程序将任务分派到不同的节点,则不需要重新配置负载均衡器。