Я думаю, что это может быть идеально достигнуто, но вам нужно небольшое изменение в подходе.
У вас не будет 2 балансировщиков нагрузки внутри EB, но вместо этого ваш beanstalk будет описывать инфраструктуру, начиная со второго балансировщика нагрузки, установленную как внутреннюю, и затем вы добавите еще один общедоступный балансировщик нагрузки, который указывает наБалансировщик нагрузки BE.
Мы можем достичь этого гораздо проще, чем тот, который предлагается в блоге AWS.
Для этого ваши настройки BE будут примерно такими же, как у вас, но:
- установите балансировщик нагрузки в качестве типа сети.Это единственный тип, который позволит вам иметь статические IP-адреса в балансировщике нагрузки.
- установить балансировщик нагрузки как внутренний (внутри конфигурации сети beanstalk, установить видимость как внутренний и снять флажок "назначить общедоступный IP-адрес)обратиться к экземплярам EC2 ... "
- назначить эластичные IP-адреса вашему балансировщику нагрузки, по крайней мере, 2, в разных зонах доступности.
- остальная часть вашего Beanstalk остается такой же, как у вас.
Теперь создайте общедоступный балансировщик нагрузки:
- Это может быть любой тип, который вам нужен. Может быть, ALB, если вы хотите выполнить SSL-завершение или любую другую магию уровня 7. Также,он должен быть общедоступным
- создать новую целевую группу. Тип цели для этой группы должен быть IP.
- Зарегистрируйте 2 Elastic IP-адреса вашего балансировщика сетевой нагрузки выше.
- Добавьте слушателя к вашему ALB, указывающему на эту целевую группу
, и это сделает волшебство. Вам нужно будет проверить, как это сделать в terraform, но подход довольно простЯ уверен, что Terraform позволит вам сделать это.
Преимущество этого по сравнению с блогом AWS (который предназначен для совершенно других целей) состоит в том, что здесь внутренний балансировщик нагрузки является сетевым, а внешний не должен быть.Поскольку NLB является внутренним, вы избегаете больших накладных расходов в инфраструктуре, а также избегаете динамической логики, такой как лямбда, которую они предлагают регистрировать IP-адреса.Благодаря такому подходу вы получаете гораздо более декларативную архитектуру, которую легче описать в виде terraform, и которую легче поддерживать в процессе эксплуатации.