【发布时间】:2018-07-09 23:01:27
【问题描述】:
最初,我认为每个 ALB 侦听器使用不同路径模式的多个服务来适当地分发 API 调用是显而易见的选择。不过,就健康检查而言(如果其中一项服务出现故障),我不知道有一种聪明的方法可以将该服务的流量转移到不同的区域。
如果我有一个带有加权路由 53 记录的活动设置,它将在运行状况检查时进行故障转移,我看不到任何其他解决方案,只能切断整个 ALB 流量并转移到另一个区域,或者忽略 1关闭服务并继续向部分失败的 ALB 发送流量。
将 ALB 与服务进行一对一映射修复了此解决方案,但在成本和复杂性方面增加了额外开销。
对于活跃的活跃微服务架构,推荐遵循的模式是什么?
【问题讨论】:
-
当我们决定将我们的服务迁移到基于 ALB 路径的路由时,我们为此苦苦挣扎了一段时间。对于主动-主动,我们在 ALB 后面运行多个 ECS 集群。 OAuth2.0 等支持服务驻留在一个集群中,多个任务分布在 ec2 实例中。另一个集群处理大多数轻量级服务,同样每个服务的多个任务一次分布在至少 2 个 ec2 上。对于故障转移到另一个区域,我们现在使用温站点。如果声明了一个事件,我们会在那个时候切断 DNS。如果发生故障,您对正常运行时间和 RTB 有什么要求?
-
当您说您切断了 DNS 时,您是说您将流量从该 ALB 完全切换到另一个区域的 ALB 吗?我的场景涉及大约 10 个服务大量流量的服务,并且将所有服务流量完全切断到另一个“温暖”区域确实是我想避免的事情。正常运行时间的要求应该尽可能接近 100%。
-
每个 AWS 支持:“从我的测试中我可以看到,对于与 ALB 侦听器关联的服务,R53 不可能在每个服务的基础上使流量失败。您只能实施故障转移对于整个 ALB,这将导致与 ALB 关联的所有服务发生故障转移。”
-
是的,确切地说,当事件发生时,我们会故障转移到温站点。这是我们行业监管机构的业务连续性要求。 100% 的正常运行时间始终是我们的目标,但您受制于您的云提供商。我们温暖的网站是为诸如去年 S3 和 lambda 宕机之类的事件而存在的。在主要区域内,我们利用在不同机器上运行的冗余任务,最好是在不同的 az 上。我们使用多个较小的集群,运行类似流量的服务。我们发现这是最具成本效益的。抱歉,我无法提供更多帮助。
标签: amazon-web-services microservices amazon-elb amazon-route53 amazon-alb