Назад | Перейти на главную страницу

Подключение общедоступного балансировщика нагрузки приложений к частному балансировщику нагрузки

Я использую AWS и пытаюсь переназначить огромное приложение на небольшие части - в итоге: я преобразовываю монолитное приложение в приложение на основе микросервисов.

Итак, я хочу использовать общедоступный балансировщик нагрузки, где я могу направить некоторые пути в другие среды.

Например:

domain.com/service1 в другое приложение с балансировкой нагрузки в Elastic Beanstalk и

domain.com/service2 в другое приложение с балансировкой нагрузки в Elastic Beanstalk.

Мне удалось подключить Application Load Balancer к другому экземпляру EC2. Но я безуспешно пытался подключить его к другому Load Balancer, созданному Elastic Beanstalk.

Есть ли у кого-нибудь идеи, как это сделать?

Вы не найдете поддержки этого изначально с набором функций ELB и Elastic Beanstalk.

Я бы предложил пересылку на основе пути с использованием HAProxy для отправки трафика в ваши приложения Elastic Beanstalk. Вы захотите запустить это на паре экземпляров EC2, находящихся за простым классическим ELB, выполняющим проверку работоспособности самого HAProxy, ради обеспечения высокой доступности.

Вот общий пример с HAProxy:

# match incoming request based on path in url
acl service1 path_beg /service1
acl service2 path_beg /service2

# send matched request to a specific backend
use_backend service1 if service1
use_backend service2 if service2

# define the target backends (Elastic Beanstalk LB DNS, likely)
backend service1 :80
  option httpchk /haproxy_health_check
  server service-1 service1.aws.mybeanstalklb.com:80 

backend service2 :80
  option httpchk /haproxy_health_check
  server service-2 service2.aws.mybeanstalklb.com:80 

Если вам не интересно запускать это самостоятельно на EC2, вы можете изучить внедрение этой конфигурации в образ докера HAProxy и запуск контейнера на EC2 Контейнерный сервис.