gpt4 book ai didi

amazon-web-services - 每个 ECS 服务的 AWS ALB 与微服务架构的每个 ALB 的多个服务

转载 作者:行者123 更新时间:2023-12-04 08:10:57 28 4
gpt4 key购买 nike

最初,我认为每个 ALB 监听器具有不同路径模式的多个服务以适本地分发 API 调用是显而易见的选择。不过,就健康检查而言(如果其中一项服务出现故障),我不知道有一种聪明的方法可以将该服务的流量转移到不同的区域。

如果我有一个带有加权路由 53 记录的事件设置,它将在运行状况检查时进行故障转移,我看不到任何其他解决方案,只能切断整个 ALB 流量并转移到另一个区域,或者忽略 1 down 服务和继续向部分失败的 ALB 发送流量。

将 ALB 与服务进行一对一的映射可以修复此解决方案,但会在成本和复杂性方面增加额外的开销。

主动主动微服务架构的推荐模式是什么?

最佳答案

如果所有服务都在一个主机名下访问,那么 DNS 当然必须指向一个位置,因此重新路由从根本上来说是一个全有或全无的前景。

但是,有一个有效的解决方法。

为每个服务配置一个“ secret ”主机名。 (“ secret ”是指客户端不需要知道它。)我们将这些称为“服务端点”。这些主机名的目的是将请求路由到每个服务... svc1.api.example.com、svc2.api.example.com 等。

将这些 DNS 记录中的每一个配置为指向主负载均衡器或故障转移负载均衡器,并使用 Route 53 条目和 Route 53 运行状况检查,专门检查每个平衡器上的一项服务的运行状况。

此时您所拥有的是每个服务的主机名,该主机名将具有正确指向首选、健康端点的 DNS 答案。

您还没有一种方法来确保客户请求到达正确的位置。

为此,请创建一个 CloudFront 分配,并将您的公共(public) API 主机名作为备用域名。为这些服务端点中的每一个定义一个 CloudFront 源(将“源路径”留空),然后使用适当的路径模式为每个服务创建一个缓存行为,例如/api/svc1*并选择匹配的原点。将您的 API 需要查看的所有 HTTP header 列入白名单。

最后,将主主机名的 DNS 指向 CloudFront。

客户端将自动连接到其最近的 CloudFront 边缘站点,CloudFront 在匹配路径模式以发现将请求发送到何处之后,将检查该服务特定端点的 DNS 并将请求转发到适当的平衡器。

CloudFront,在这个应用程序中本身不是一个“CDN”,而是一个全局分布的反向代理——从逻辑上讲,是所有流量的单一目的地,因此 API 的主主机名不需要故障转移配置......所以没有更多的全有或全无路由。在 CloudFront 的背面,这些服务终端节点主机名可确保根据 Route 53 运行状况检查将请求路由到运行状况良好的目的地。 CloudFront 尊重这些 DNS 记录的 TTL,并且不会缓存不应缓存的 DNS 响应。

关于amazon-web-services - 每个 ECS 服务的 AWS ALB 与微服务架构的每个 ALB 的多个服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48531937/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com