Окружающая среда AWS Elastic Beanstalk с несколькими балансирами нагрузки

У меня следующая ситуация: У меня есть 1 приложение Rails, которое имеет 2 домена, каждый из которых имеет несколько/динамических поддоменов. Это приложение используется в AWS с использованием эластичного бобового стебля с балансировкой нагрузки.

Что мне нужно, так это то, что эти 2 домена, которые указывают на мое единственное приложение Rails, будут работать по SSL в порту 443.

Но поскольку Elastic Beanstalk имеет только один балансировщик нагрузки, я могу использовать только один единственный SSL-сертификат на порту 433 :( Использование сертификата UCC SSL не будет решением, потому что мне нужно, чтобы каждый сертификат домена был подстановочным знаком, поэтому динамические поддомены также будут работать.

Есть какие-нибудь мысли о том, как заставить несколько балансировщиков нагрузки хорошо играть в среде Elastic Beanstalk?

Лучший.

Ответ 1

Это сложный вопрос с Elastic Beanstalk, поскольку у них есть способ резания файлов cookie для развертывания вашего приложения, и если он не в их вариантах, тогда вы либо "взломаете его", либо просто идете с совершенно другим решением с использованием серверов EC2 или простых облаков,

Одна вещь, которую вы можете попробовать, это создать еще один ELB с сертификатом второго домена (и поддоменов) и указать его на ваш экземпляр Elastic Beanstalk. Если вы перейдете на консоль ELB, вы сможете увидеть ELB для первого домена. Затем вы можете создать свой второй домен на основе первого домена.

Надеюсь, что это поможет.

Ответ 2

Чтобы добавить несколько эластичных балансиров нагрузки (ELB) в приложение эластичного бобового стежка (EB), вам необходимо добавить дополнительный ELB в группу автоматического масштабирования приложения EB.

В командной строке

Самый простой способ добиться этого - через AWS CLI (https://aws.amazon.com/cli/):

aws autoscaling attach-load-balancers --auto-scaling-group-name <SG_NAME> --load-balancer-names <ELB_NAME>

В консоли AWS

Конечно, это можно сделать и в консоли AWS:

  • Перейдите в EC2 > Автоматическое масштабирование > Группы автоматического масштабирования
  • выберите группу, в которую хотите добавить локти, чтобы
  • Выберите вкладку Сведения
  • Кнопка редактирования в правом верхнем углу
  • Используйте Autocompletion в поле Load Balancers, чтобы добавить балансировку нагрузки
  • Сохранить

Для вашего удобства вы можете увидеть, где вам нужно щелкнуть все 5 шагов (не забудьте сохранить!) clickpath_image

Для меня это также работает с eb-генерируемыми автомасштабирующими группами (Region: eu-central-1).

Это может быть недоступно во время вопроса, но сейчас.

Ответ 3

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

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

Вам не нужны дополнительные балансировки нагрузки.

Ответ 4

Это сработало для меня,

Сначала создайте балансировку нагрузки

aws elb create-load-balancer --load-balancer-name my-load-balancer --listeners "Protocol=HTTP,LoadBalancerPort=80,InstanceProtocol=HTTP,InstancePort=80" "Protocol=HTTPS,LoadBalancerPort=443,InstanceProtocol=HTTP,InstancePort=80,SSLCertificateId=arn-of-certificate" --subnets eb-subnet-of-primary-elb --security-groups sg-of-primary-elb

Затем подключите балансировщик нагрузки к первичной группе автоматического масштабирования EB env

aws autoscaling attach-load-balancers --auto-scaling-group-name asg-name-of-primary-asg-in-eb --load-balancer-names my-load-balancer

Ответ 5

Еще одна вещь, о которой нужно помнить, заключается в том, что созданные EBS экземпляры должны позволять вашему пользовательскому ELB разговаривать с ними.

Вам необходимо создать правило INBOUND в вашей автоматически созданной группе безопасности EBS (с описанием SecurityGroup for ElasticBeanstalk environment), чтобы разрешить доступ через TCP: 80. У меня были пользовательские ELB в другой группе безопасности, поэтому я указал, что идентификатор sg - **** в качестве источника.