Балансировка нагрузки между различными приложениями Elastic Beanstalk

В моей среде AWS есть несколько приложений Elastic Beanstalk со сбалансированной нагрузкой / автоматическим масштабированием.

Я хотел бы иметь перед ними балансировщик нагрузки, поэтому любой запрос к http://loadbalancer.com/app1 направляется к первому приложению Elastic Beanstalk, http://loadbalancer.com/app2 ко второму и т. д. .

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

Я до сих пор не нашел способа привязать прослушиватель балансировщика нагрузки приложения к группе автоматического масштабирования.

Есть ли способ добиться того, чего я хочу?


person Michele Da Ros    schedule 23.01.2017    source источник
comment
AWS рассматривает возможность добавления этой функции. См .: github.com/aws/elastic-beanstalk-roadmap/issues/40 < / а>   -  person Benoit Blanchon    schedule 04.04.2020


Ответы (3)


Мне удалось это сделать, следуя инструкциям в этой статье https://aws.amazon.com/blogs/devops/introduction-application-load-balancer-unlocking-and-optimizing-architectures/

шаги:

1) создайте новую целевую группу

    aws elbv2 create-target-group --name <target_group_name> --protocol HTTP --port 80 --vpc-id <vpc_id> 

2) привяжите свою целевую группу к группе автомасштабирования, связанной с приложением

    aws autoscaling attach-load-balancer-target-groups --auto-scaling-group-name <id_of_the_autoscaling_group> --target-group-arns "<new_target_group_arns>"

3) создайте новое правило в главном балансировщике нагрузки приложения, которое направляет желаемый путь к нужному приложению (это можно сделать через пользовательский интерфейс).

person Michele Da Ros    schedule 24.01.2017
comment
Удивительный. Я почти отказался от этого, пока не нашел ваш ответ. Это намного проще сделать с помощью Google App Engine Flexible с помощью простого файла dispatch.yaml. - person benwixen; 06.05.2017
comment
Amazon Elastic Beanstalk теперь поддерживает общие балансировщики нагрузки aws.amazon.com/blogs/containers/ - person Mahesh_Loya; 11.09.2020

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

  1. Создать новую целевую группу (TG-App1)
  2. Присоедините TG-App1 к группе автоматического масштабирования среды beanstalk. Теперь у вас будет и целевая группа, созданная beanstalk, и TG-App1, и оба они теперь будут обновляться с экземплярами.
  3. Создать новый балансировщик нагрузки приложений (ALB-App)
  4. Создайте перенаправление правил ALB-App в TG-App1 (например: PATH: / app1 / * -> FORWARD: TG-App1)
  5. Обновите группу безопасности экземпляра среды beanstalk, чтобы разрешить трафик из группы безопасности ALB-App на порт 80 (теперь у вас будет 2 правила для порта 80, 1 для ALB-App и 1 для группы безопасности балансировщика нагрузки beanstalk по умолчанию)

Это позволяет вам настроить DNS в ALB-App («loadbalancer.com») и перенаправить трафик на основе правил в разные целевые группы, экземпляры которых управляются разными beanstalks. Просто следуйте инструкциям, чтобы создать целевую группу для каждой среды beanstalk и добавить ее в правила в ALB-App.

результат:

"loadbalancer.com/app1" -> ALB-App -> TG-App1 -> Экземпляры Beanstalk Environment 1

"loadbalancer.com/app2" -> ALB-App -> TG-App2 -> Экземпляры Beanstalk Environment 2

person C Rudolph    schedule 19.08.2019

Amazon Elastic Beanstalk теперь поддерживает общие балансировщики нагрузки

11 - сентябрь-2020

https://aws.amazon.com/blogs/containers/amazon-elastic-beanstalk-introduces-support-shared-load-balancers/.

person Mahesh_Loya    schedule 11.09.2020