【问题标题】:HAProxy with Cloudmap with FargateHAProxy 与 Cloudmap 与 Fargate
【发布时间】:2020-08-12 00:31:37
【问题描述】:

希望迁移到使用 AWS Fargate 来托管许多容器以通过 HAProxy 进行负载平衡,然后使用 AWS Cloudmap 的组合进行服务发现和 HAProxy DNS(服务器模板)语法似乎是一种优雅的方法自动填充后端服务器。

但是值得注意的是,Cloudmap 的底层系统路由 53 最多仅返回 8 个 A 或 SRV 记录,这从 HAProxy 文档中听起来像是它将不断标记在最新 DNS 调用中未返回的节点以标记为不健康,这会导致后端不断被删除并重新添加到 HAProxy 池中,即使它们都是健康的。

我只能假设这是其他人以前遇到过的事情,如果有什么技巧可以让 HAProxy 容纳 8 个后端服务器的最大值?

【问题讨论】:

    标签: haproxy aws-fargate aws-cloudmap


    【解决方案1】:

    HAProxy 通过 server-template 指令支持 DNS 服务发现。确保您配置了 resolvers 部分并将其与服务器行上的 resolvers 指令一起使用。有一篇博文here。如果您发现需要容纳更多记录,您可以调整accepted_payload_size 的大小。

    【讨论】:

    • 是的,除了作为解析器的路由 53 的情况外,它最多只返回 8 条记录,因此即使有更多,HA 也只会填充 8 个容器。
    • AWS Route53 文档说 > 如果解析器支持 EDNS0(如 RFC 2671 中所定义),并向 Amazon Route 53 通告 EDNS0 选项,则 Route 53 允许通过 UDP 响应最多 4096 个字节,而不会截断。 HAProxy 确实支持 EDNS0 - 你需要配置接受的负载大小。
    • 感谢@dcorbett 的帮助,我们最终使用 NLB 来解决 Fargate 的这一限制,我们考虑的其他选项是创建多个工作池等。NLB 似乎是最简单的。跨度>
    猜你喜欢
    • 2014-02-06
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    • 2021-10-09
    • 2017-11-15
    • 2013-01-18
    • 1970-01-01
    • 2018-06-28
    相关资源
    最近更新 更多