Подключение общедоступного балансировщика нагрузки приложения к частному балансировщику нагрузки
Я использую 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.