Есть ли способ включить привязку между клиентом и целевыми модулями при использовании AWS Global Accelerator и NLB?

В кластере AWS EKS я развернул приложение с отслеживанием состояния. Чтобы сбалансировать нагрузку моего приложения между разными модулями и зонами доступности, я добавил HAProxy Ingress Controller, который использует внешний AWS NLB.

У меня есть один NLB в этом кластере, который указывает на службу HAProxy. Поверх NLB я создал глобальный ускоритель и установил NLB в качестве его целевой конечной точки.

Мое требование состоит в том, чтобы после подключения пользователя к DNS Global Accelerator он всегда был направлен на один и тот же сервер конечной точки, то есть на один и тот же HAProxy Pod.

Рабочий процесс подключения выглядит следующим образом: Пользователь клиента -> Глобальный ускоритель -> NLB -> Модуль HAProxy.

В поисках способов заставить это работать, вот что я сделал:

  • Чтобы обеспечить прилипание между NLB и его целью (модулями HAProxy), я включил прилипание к целям NLB.
  • Теперь, когда дело доходит до прилипания между Global Accelerator и NLB, похоже, что правильно будет установить для атрибута Client Affinity Global Accelerator значение «IP-адрес источника». Согласно документации, с этим параметром Global Accelerator соблюдает привязку клиентов, направляя все соединения с одним и тем же исходным IP-адресом в одну и ту же группу конечных точек .

Я ожидал, что с включенными этими атрибутами пользователь всегда будет подключаться к одному и тому же NLB, который затем подключается к одному и тому же модулю HAProxy.

После тестирования, когда я подключился к своему приложению через NLB DNS, цель была достигнута, и я получил липкое соединение. Однако, когда я подключаюсь через Global Accelerator, мой сеанс продолжает падать.

Любые идеи, почему это может быть? Или есть какие-либо предложения по другому способу работы с этим?

1 ответ

Это не то, что поддерживает AWS (по состоянию на июнь 2022 г.).

См. этот документ https://aws.amazon.com/blogs/networking-and-content-delivery/updating-aws-global-accelerator-ec2-endpoints-based-on-autoscaling-group-events/

Они конкретно заявляют

Например, когда вы хотите отправить UDP-трафик с сохранением IP-адреса клиента на несколько экземпляров с гарантией того, что одни и те же серверные экземпляры будут обрабатывать запросы от одних и тех же клиентов (привязка клиентов). Это невозможно с балансировщиками нагрузки приложений, поскольку они не поддерживают трафик UDP, а балансировщики сетевой нагрузки не поддерживают фиксированные сеансы или сохранение IP-адресов клиентов с помощью AWS Global Accelerator.

Другие вопросы по тегам