【问题标题】:Automating microservices load balancing / scaling自动化微服务负载平衡/扩展
【发布时间】:2015-07-20 16:42:11
【问题描述】:

这几天阅读了微服务,我想知道人们是如何实现负载平衡自动化和扩展这些东西的?

我有一个特定的场景,我想实现什么,但不确定它是否可能,或者我想错了。就这样吧……


假设我有一个由 3 台 CoreOS 机器组成的集群,名为 A、B 和 C。

我想要的第一件事是透明部署,我可能会使用舰队。

然后我想检测,当其中一个服务处于巨大负载下并部署它的另一个实例并部署该实例和第一个实例时,以不会中断正在使用的其他服务的方式自动进行负载平衡它(从现在开始,流量将通过负载均衡器)。

另一种方法是我手动部署另一个版本的服务,然后自动进行负载平衡并将流量路由器传输到负载平衡器。

那么最后一个问题,这与 Akka 集群之类的东西有什么不同,它们的开发与微服务有什么不同?

【问题讨论】:

    标签: docker load-balancing coreos microservices akka-cluster


    【解决方案1】:

    在我看来,在您提出的问题中,您的回答有一个提示“(流量通过负载均衡器从现在开始)”。

    我想说 - 流量应该始终通过负载平衡器

    在最简单的情况下,当您拥有每个服务的 1 个实例时,它仍然必须通过负载平衡器(顺便说一句,我认为至少拥有 2 个实例是个好主意)。

    在这种情况下,当您获得 3 倍以上的流量并希望启动同一服务的另一个容器时,一旦容器启动并运行,它必须在服务发现工具中注册自身并自动更新负载均衡器配置以添加新的 '上游的入口。

    然后使用这种方法,您将能够更轻松地扩展/缩减您的服务。

    【讨论】:

    • 我们成功地使用了类似的方法。主要要求是“当节点关闭时客户端应该看不到错误”
    • 嗯。现在我觉得我自己没有想到这一点很愚蠢。 :/ 你在这方面有什么特别的经验吗?您会推荐哪种负载均衡器? AWS 上的 vulcand 与弹性负载均衡器之类的任何缺点/优点?另外,你会说在同一台机器上拥有相同的服务实例是没有意义的吗?
    • @MatjazMuhic 我使用 nginx 作为 lb 处理它背后的多个服务,很好地满足了我的需求(有 10 到 15 个服务)。此外,如果您使用 nginx/haproxy 或其他一些 LB,您必须弄清楚服务发现工具和更新负载平衡器配置之间的集成(取决于服务发现工具)。看起来这正是 vulcand 所做的。
    • @MatjazMuhic 关于最后一个问题 - 我不会说在同一台机器上运行相同的容器是没有意义的。当然,节省运营成本是有道理的。另一方面,它对提供高可用性服务毫无帮助(想象一下机器死机)。
    • @thaold 是的,我明白了。仅当您需要从该服务中完成更多工作时才有帮助,对吗?那么您不会为了部署一项服务而启动另一台机器,还是会?
    猜你喜欢
    • 2018-04-29
    • 2018-03-19
    • 1970-01-01
    • 2021-01-10
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-18
    相关资源
    最近更新 更多