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

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

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

Например:

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

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

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

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

1 ответ

Решение

Вы не найдете поддержки для этого изначально с помощью 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.

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