外部负载均衡器应该路由到 swarm managers、worker 还是两者?

External load balancer should route to swarm managers, workers or both?

我有一个微服务架构 运行 到 docker 群堆栈中。 我的群堆栈由 :

组成

我有一个外部负载平衡器,可以使用单个 public IP 在我的堆栈节点上分派请求。

我想知道我的外部负载均衡器是否应该只将流量路由到管理器、只路由到工作人员或所有节点。

我没有在 swarm 文档中找到这个问题的任何直接答案,但我认为最好只将流量路由到 wokers 以节省管理人员的资源。这是正确的做法吗?

是的。不。也许。

如果您只有一个 vip,您可能希望它指向管理器,因为您希望 HA 访问管理器以管理 swarm。

即对于我的内部群,“swarm.example.com”是指向管理器的 vip。我的 CI/CD 管道在执行 docker 堆栈部署操作时将其用作目标,这意味着我可以在不中断管道部署的情况下执行节点维护。 “*.swarm.example.com”也是为了方便 swarm.example.com 的 CNAME,所以我所有的 http(和其他)入口都到达管理器,这是我部署 traefik 的地方(需要访问管理器api 通过 /var/lib/docker.sock) 用于到服务的入口路由。

现在,更复杂的设置是使用单独的 vip 池来管理控制平面和入口路由,并且在管理器节点上安装 traefik 是一个安全问题,但这意味着更大的设置和更高的安全性对于开发人员来说,比本地集群 运行 ci/cd 更令人担忧。