Load Balancer¶
Введение¶
Application Load Balancer (ALB) - сетевой сервис, который распределяет входящий публичный веб-трафик между виртуальными серверами для обеспечения отказоустойчивости веб-сайтов и приложений.
Балансировщик нагрузки (ALB) позволяет равномерно направлять веб-трафик или трафик TLS на виртуальные машины, относящиеся к одному Compute-сервису, на основе доменного имени в протоколе HTTP или расширения Server Name Indication (SNI) протокола TLS.
При резком изменении объема входящего трафика балансировщик равномерно распределяет весь объем запросов между ресурсами по алгоритму Round-robin. ALB обеспечивает возможность автоматического обновления сертификатов LetsEncrypt и возможность загрузки собственных сертификатов. Перенаправление через ALB не требует открытия портов назначения виртуальных машин в Network Security Group во вкладке Firewall. ALB предоставляет доступ на основном публичном адресе аккаунта только по портам 80 и 443. Данные порты могут быть переназначены в приложении Port-Forwarding.     
Функция Проверка работоспособности(HealthCheck) позволяет исключить неработоспособные серверы из ротации балансировки нагрузки.
ALB отслеживает состояние виртуальных машин, отвечающих за маршрутизацию веб-трафика, и считает их работоспособными, если они возвращают коды состояния в диапазоне 2XX–3XX на запросы проверки (выполняемые через заданные интервалы). Если виртуальная машина оказывается недоступной (выключена или неисправна), HealthCheck гарантирует, что веб-трафик не будет направляться на эту машину.
Администратор
Управление ALB доступно только для пользователей с ролью Администратора аккаунта.
Вкладка Веб-маршруты содержит список маршрутов веб-трафика ALB.
Пользователь может создавать, редактировать и удалять маршруты.
Создание и настройка маршрута¶
Подготовка¶
Перед созданием нового маршрута пользователь должен настроить запись DNS CNAME, указывающую на общедоступное имя хоста ALB, чтобы разрешить доступ интернет-трафику через ALB к виртуальной машине, а затем подготовить виртуальную машину.
Примечание
Подразумеваем подготовленную виртуальную машину с веб-сервером на порту 80.
Создание маршрута¶
- На вкладке 
Веб-маршрутынажмитеСоздать маршрут. - 
В появившемся окне введите:
Названиемаршрута в рамках проекта;Имя сервера– публичное имя хоста для маршрута;Путьпозволяет сопоставлять запросы на основе значения URL-пути (опционально);Целевой порт- порт назначения трафика (опционально);Балансировщик- экземпляр Load Balancer, который обслуживает этот маршрут.
 - 
В
Целевых сервисахвыберитеСервис(ы)для балансировки нагрузки (каждый сервис имеет вес, определяющий объем получаемого трафика). - Выберите 
тип IP-интерфейса: IPv4/IPv6. - 
Можно включить
Проверку работоспособности(HealthCheck) маршрута.
Система автоматически проверяет состояние виртуальных машин, связанных с маршрутом. Если хотя бы одна из них работает, трафик направляется на доступные машины.
Для проверки работоспособности маршрута введите:Путь- URL-адрес сервера для конечной точки проверки работоспособности (опционально);СхемаURL-адреса (http/https) сервера для конечной точки проверки работоспособности (опционально);Имя сервера- имя хоста в заголовке запроса (Host) на проверку работоспособности (опционально);ПортURL-адреса сервера для конечной точки проверки работоспособности (опционально);Интервал- частота вызовов проверки работоспособности;Тайм-аут- продолжительность, в течении которой ALB будет ждать запроса на проверку работоспособности, прежде чем считать сервер неработоспособным;- Пользовательские 
заголовки, которые будут отправляться на конечную точку проверки работоспособности (опционально); - Параметр 
Перенаправлениеопределяет, должны ли выполняться перенаправления во время проверок работоспособности. 
 - 
Выберите настройки
Безопасностидля маршрутов или оставьте флажокБезопасный маршрутпустым.При выборе
Безопасного маршрутаукажитетип терминации TLS:- Edge
При edge-терминации, терминация зашифрованногоTLS-трафикапроисходит на ALB, далее уже расшифрованный трафик проксируется на внутренние IP-адреса виртуальных машин на портHTTP (80/tcp). Для терминации TLS-трафика используется загруженный сертификат, если он соответствует полюИмя серверавеб-маршрута, иначе происходит попытка выпуска сертификата LetsEncrypt. Если выпуск LetsEncrypt сертификата не удался по какой-либо причине (например,DNS-записьне настроена на публичный хостнейм ALB, закончился лимит на запросы), то будет использован самоподписанный сертификат по умолчанию. - Passthrough
При passthrough-терминации зашифрованный трафик отправляется прямо в пункт назначения без расшифровки трафика. В этом случае балансировщик обеспечивает только распределение трафика между сервисами в соответствии с весами. В настоящее время это единственный метод, поддерживающий авторизацию по клиентским сертификатам (также известный как двусторонняя аутентификация). - Re-encrypt
Это вариант edge-терминации, когда TLS-протокол завершается ALB сертификатом, а затем повторно шифрует свое соединение с конечной точкой на портуHTTPS (443/tcp), которая может иметь другой сертификат. Поэтому полный путь соединения шифруется даже во внутренней сети. ALB использует проверки работоспособности для определения доступности хоста. 
Примечание
В режиме re-encrypt ALB на данный момент не проверяет достоверность сертификата хоста назначения, таким образом можно использовать самоподписанные сертификаты.
 - Edge
 - 
Выберите политику для трафика по небезопасным схемам:
- Allow - позволяет проходить HTTP-трафику;
 - Redirect - автоматически перенаправляет клиента с HTTP на HTTPS (используется код HTTP 301).
 - None (пустое значение) – HTTP-трафик полностью блокируется. Доступ к маршруту возможен только по HTTPS, а любые запросы по незащищённому протоколу отклоняются.
 
 - 
Выберите один из
TLS Сертификатов, ассоциированных с данным маршрутом. - 
Нажмите
Создать. 
Новый маршрут появится в общем списке, где можно будет отредактировать его настройки или удалить при помощи бокового меню или нажав соответствующие кнопки в Детали.
Для просмотра деталей созданного маршрута просто нажмите на него.  
Новый маршрут появится в общем списке, где можно будет отредактировать его настройки или удалить при помощи бокового меню.
Настройки безопасности и типы маршрутизации¶
| Безопасный маршрут | Терминация TLS | Небезопасный трафик | Маршрут | 
|---|---|---|---|
| ✖ | N/A | N/A | HTTP | 
| ✔ | Edge | None | HTTPS | 
| ✔ | Edge | Allow | HTTPS / HTTP | 
| ✔ | Edge | Redirect | HTTPS / HTTP | 
| ✔ | Re-encrypt | None | HTTPS | 
| ✔ | Re-encrypt | Allow | HTTPS / HTTP | 
| ✔ | Re-encrypt | Redirect | HTTPS / HTTP | 
| ✔ | Passthrough | None | HTTPS | 
Сертификаты¶
Во вкладке Сертификаты можно добавить сертификаты TLS для edge и повторного шифрования терминации. Сертификаты должны быть в формате PEM. Пользователь имеет возможность добавлять, редактировать и удалять сертификаты.  
Добавление сертификатов¶
Пользователь может загружать сертификаты, перетаскивая их, выбирая их или вставляя из буфера обмена.
- На вкладке 
СертификатынажмитеДобавить; - Введите 
Названиедля сертификатов; - Нажмите 
Выбратьи добавьте необходимые сертификаты (или перетащите и вставьте из буфера обмена); - Нажмите 
Добавить. 
Нажмите на добавленный сертификат для просмотра сведений.
Редактировать и удалять сертификаты можно двумя способами. Сделать это можно с помощью бокового меню или нажав соответствующие кнопки в Деталях.  
Примечание
При использовании собственных сертификатов, для корректной работы в систему должен быть загружен только один сертификат, относящийся к доменному имени. Например, если у загруженного сертификата истёк срок действия - его нужно удалить и загрузить актуальный.
Заголовки запросов¶
Балансировщик нагрузки добавляет и изменяет некоторые заголовки, которые отправляются на целевой сервер.
| Заголовок | Пример | Назначение | 
|---|---|---|
X-Real-IP | 
109.243.1.221 | 
Реальный IP-адрес клиента. | 
X-Forwarded-For | 
109.243.1.221 | 
IP-адрес клиента или список прокси, установленных перед балансировщиком. | 
X-Forwarded-Host | 
test.acc1.at.loc.icdc.io | 
Имя сервера, используемое в веб-маршруте. | 
X-Forwarded-Port | 
443 | 
Порт веб-маршрута. | 
X-Forwarded-Proto | 
https | 
Протокол веб-маршрута. | 
X-Forwarded-Server | 
e60d898781f3 | 
Внутреннее имя балансировщика. | 
Роли и права¶
| Действие | Member | Admin | Owner | Operator | 
|---|---|---|---|---|
| Веб-маршруты | ||||
| Просмотр веб-маршрутов | ✔ only own | ✔ | ✔ | ✔ | 
| Создание веб-маршрута | ✔ | ✔ | ✔ | ✔ | 
| Редактирование веб-маршрута | ✔ only own | ✔ | ✔ | ✔ | 
| Удаление веб-маршрута | ✔ only own | ✔ | ✔ | ✔ | 
| Сертификаты | ||||
| Просмотр сертификатов | ✔ only own | ✔ | ✔ | ✔ | 
| Создание сертификата | ✔ | ✔ | ✔ | ✔ | 
| Редактирование сертификата | ✔ only own | ✔ | ✔ | ✔ | 
| Удаление сертификата | ✔ only own | ✔ | ✔ | ✔ | 







