0

在 AWS EKS 集群上,我部署了一个有状态的应用程序。为了在不同的 pod 和可用区之间对我的应用程序进行负载平衡,我添加了一个使用外部 AWS NLB 的 HAProxy 入口控制器。

我在这个集群中有一个 NLB,它指向 HAProxy 服务。在 NLB 之上,我创建了一个全局加速器,并将 NLB 设置为其目标端点。

我的要求是确保一旦用户连接到 Global Accelerator 的 DNS,他们将始终被定向到同一个端点服务器,即同一个 HAProxy Pod。

连接工作流程如下:客户端用户 -> 全局加速器 -> NLB -> HAProxy pod。

在寻找使这项工作的方法时,这是我所做的:

  • 为了确保 NLB 与其目标(HAProxy pod)之间的粘性,我在 NLB 目标上启用了粘性。
  • 现在,当谈到 Global Accelerator 和 NLB 之间的粘性时,看起来正确的做法是将 Global Accelerator 的 Client Affinity 属性设置为“Source IP”。根据文档,使用此设置,Global Accelerator 通过将具有相同源 IP 地址的所有连接路由到相同端点组来尊重客户端亲和性。

我的期望是启用这些属性后,用户将始终连接到同一个 NLB,然后连接到同一个 HAProxy pod。

经过测试,当我通过 NLB DNS 连接到我的应用程序时,目标实现了,我得到了一个粘性连接。但是,当我通过 Global Accelerator 连接时,我的会话不断崩溃。

关于为什么会这样的任何想法?或者有什么不同的方法来解决这个问题吗?

4

0 回答 0