Назначение статического IP-адреса для балансировщика нагрузки AWS

Как назначить статический IP-адрес для ELB. Кажется, я не могу.

В некоторых статьях в Интернете предлагается создать запись Route 53, но для этого требуется изменение CNAME домена, который также перенаправляет трафик электронной почты. Я просто хочу изменить запись, а не CNAME.

В некоторых статьях также упоминается, что я могу использовать экземпляр EC2 в качестве обратного прокси. Но сможет ли один прокси справиться с большим количеством трафика?

Любое решение для этого?

Ответ 1

Уравновешивающая система балансировки нагрузки AWS фактически эластична на двух уровнях, как описано здесь: http://shlomoswidler.com/2009/07/elastic-in-elastic-load-balancing-elb.html

Первый уровень - это сам балансировщик нагрузки. Чтобы удостовериться, что ELB может масштабироваться до любого объема, который у вас есть, и разрывается на любой том, который вы вдруг сталкиваетесь, AWS назначает "статическое" имя DNS-сервера (например, MyDomainELB-918273645.us-east-1.elb.amazonaws.com). Это имя узла указывает на несколько IP-адресов. Вы можете видеть это (из командной строки), запустив

$ host MyDomainELB-918273645.us-east-1.elb.amazonaws.com
MyDomainELB-918273645.us-east-1.elb.amazonaws.com 172.31.7.2
MyDomainELB-918273645.us-east-1.elb.amazonaws.com 172.31.11.33

Вторая форма эластичности в ELB, очевидно, тогда ELB направляет запрос к одному из ваших экземпляров EC2 в пуле.

Итак, вы можете видеть, что попытка назначить статический IP-адрес для балансировщика нагрузки будет самонадеянным.

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

Рекомендуемое решение (которое вы указали) - создать CNAME, который указывает на имя хоста ELB (которое не изменится).

то есть. my-app.mycompany.com → MyDomainELB-918273645.us-east-1.elb.amazonaws.com

Это позволит вам интегрировать ваше масштабируемое приложение за пределами ELB в вашем домене.

Я не уверен, что полностью понимаю, почему вы не можете создать CNAME в своем DNS или что это связано с направлением почтового трафика, можете ли вы объяснить?

Ответ 2

Новая функция в AWS (я полагаю, она была анонсирована на Re: Invent 2017) позволяет использовать статические IP-адреса с помощью балансировщиков сетевой нагрузки (NLB). NLB может обрабатывать только уровень 4 (TCP), но не спецификацию HTTP (уровень 7).

Вы можете назначить один Elastic IP-адрес для каждой зоны доступности.

Подробности см. В блоге AWS или в документации NLB.

"Классический балансировщик нагрузки" и "Балансировщик нагрузки приложения" не поддерживают статические IP-адреса. Если вам нужна функция, предоставляемая только теми, кто вам нужен, вы должны обратиться к решению CNAME описанному выше.

Ответ 3

Служба поддержки AWS по этой теме недавно опубликовала блог, в котором используется NLB для предоставления статического IP-адреса классическому и балансировщику нагрузки приложений - https://aws.amazon.com/blogs/networking-and-content-delivery/using-static-ip- адреса-для-приложения нагрузки-балансиры/

Резюме решения, как описано в посте

В итоге мы получаем прослушиватель TCP на NLB, который принимает трафик и перенаправляет его на внутренний ALB. ALB завершает TLS, проверяет заголовки HTTP и направляет запросы на основе настроенных правил для целевых групп с вашими экземплярами, серверами или контейнерами. Функция AWS Lambda поддерживает синхронизацию всего, отслеживая изменения IP-адреса в ALB и обновляя целевую группу NLB. В конце концов, у нас есть несколько статических IP-адресов, которые легко занести в белый список, и мы не потеряем ни одного из преимуществ ALB. Обратите внимание, что мы будем отправлять весь трафик через два балансировщика нагрузки.

Ответ 4

В отличие от Network Load Balancer, Application Load Balancer (ALB) не поддерживает эластичные IP-адреса, но это не самая плохая часть. Если вы используете маршрут 53 вместе с ALB, DNS автоматически устанавливает TTL равным 60 секундам. По-видимому, это создает проблемы для наших институциональных - в основном государственных - клиентов, использующих старые DNS-серверы Windows. Они просто не успевают за тем, чтобы ALB Listener за столь короткий срок сменил свой публичный IP-адрес. Старая DNS-инфраструктура либо не уважает, либо не способна обрабатывать такие агрессивные TTL.

Хотя мне это не нравится, AWS рекомендует установить балансировщик сетевой нагрузки перед балансировщиком нагрузки приложений. https://aws.amazon.com/blogs/networking-and-content-delivery/using-static-ip-addresses-for-application-load-balancers/

Ответ 5

Я нашел настройку AWS Global Accelerator очень простым и понятным. Он создал 2 статических IP-адреса и статический DNS, указывающий на балансировщик нагрузки моего приложения.

Настройка глобального ускорителя

  1. Установите слушателей как порт TCP 80, 443

  2. Выберите конечную точку балансировщика нагрузки (Глобальная настройка акселератора AWS)

  3. Добавьте запись cname для вашего DNS, указывающую на созданный статический DNS (mywebsite.com → globalacceleratorDNS.com). Если любому клиенту нужен белый список, укажите ему 2 статических URL-адреса, которые он создал

Стоимость составляет 18 долларов в месяц + несколько копеек за ГБ передачи данных. Эта цена не намного больше, чем установка NLB, Nat Gateway, Elastic IP. Это, вероятно, дешевле на самом деле

https://docs.aws.amazon.com/global-accelerator/latest/dg/about-accelerators.html

Ответ 6

Вы должны добавить запись CNAME в свою зону NDS, чтобы она работала:

yourhostname IN CNAME some-lb-XXXXX.elb.amazon.com.

не забывайте точку в конце имени балансировки нагрузки.