Балансировщики нагрузки приложений
In this article:
Балансировщики нагрузки приложений#
Важно
Сервис находится на стадии технологических испытаний и пока доступен только ограниченному кругу пользователей. Если вы готовы использовать сервис в экспериментальном режиме, то обратитесь к своему менеджеру или оставьте заявку на портале поддержки.
Балансировщики нагрузки приложений распределяют поступающий трафик HTTP и HTTPS между виртуальными машинами для равномерного разделения нагрузки между приложениями. Распределение трафика осуществляется циклически в соответствии с алгоритмом round-robin.
Чтобы определить, какие действия следует выполнить и куда направить трафик, балансировщики нагрузки приложений используют правила. После поступления запроса на балансировщик обработчик проверяет правила в порядке приоритета, чтобы установить, какое из них следует применить. Правила позволяют настроить маршрутизацию на различные целевые группы, переадресацию на другой URL, либо фиксированный HTTP-ответ в зависимости от заданных в них условий.
Для терминирования соединений HTTPS балансировщик нагрузки использует SSL-сертификаты серверов в формате X.509. При установлении защищённого соединения поддерживаются протоколы SSL 3.0 и TLS 1.0-1.3.
Доменное имя, указанное в сертификате, должно совпадать с заданным в DNS-записи. Это может быть полное (FQDN) или сокращённое (например, example.com) доменное имя, либо имя с символом подстановки (*.example.com) для защиты нескольких поддоменов в одном домене.
Балансировщик дешифрует входящий трафик прежде, чем передать его целевому ресурсу. Если целевому ресурсу требуется передавать нерасшифрованный трафик, используйте сетевой балансировщик нагрузки с обработчиком, прослушивающим порт 443.
Внимание
Сертификаты имеют ограниченный срок действия, поэтому их необходимо своевременно обновлять.
Операции с балансировщиками нагрузки#
Для работы балансировщика нагрузки помимо самого балансировщика необходимо создать по крайней мере один обработчик и связанную с ним целевую группу минимум с одним ресурсом. Обработчики и целевые группы можно создать вместе с балансировщиком нагрузки. Однако целевые группы удобнее создавать отдельно. Обработчики можно добавить после создания балансировщика нагрузки. Для создания обработчика трафика HTTPS необходимо предварительно импортировать хотя бы один сертификат.
Создать балансировщик нагрузки приложений#
Примечание
Вы можете также создать балансировщик и связать его с существующей целевой группой в подразделе Целевые группы.
Чтобы создать балансировщик нагрузки приложений:
Перейдите в раздел Балансировка нагрузки Балансировщики нагрузки и нажмите Создать.
Задайте основные параметры балансировщика:
Тип — Тип балансировщика нагрузки. Выберите ALB.
Тег Name — Опциональное описание балансировщика нагрузки.
Имя балансировщика нагрузки — Имя не должно быть длиннее 32 символов, может содержать только латинские буквы, цифры и дефисы, не должно начинаться и заканчиваться дефисом.
Схема — Данный параметр определяет, с какими клиентами может работать балансировщик нагрузки. В случае схемы
с внутренней нагрузкой
балансировщик нагрузки обрабатывает запросы на внутренние адреса только от клиентов из того же VPC. В случае схемыс внешней нагрузкой
он может распределять запросы, поступающие на внешние адреса от любых клиентов из интернета.
Для перехода на следующий шаг нажмите Далее.
Укажите параметры привязки к сети:
VPC — VPC, в котором будет размещён балансировщик нагрузки. Все остальные компоненты балансировщика, такие как целевые группы и целевые ресурсы, должны находиться в том же VPC.
Подсеть — Подсеть, в которой будет создан сетевой интерфейс балансировщика нагрузки.
Elastic IP или Private IP — IP-адрес, который будет назначен сетевому интерфейсу, в зависимости от выбранной схемы. При выборе схемы
с внешней нагрузкой
следует назначить внешний Elastic IP-адрес. Вы также можете оставить это поле пустым, тогда адрес будет присвоен автоматически. При выборе схемыс внутренней нагрузкой
внутренний IP-адрес назначается автоматически.
Чтобы привязать балансировщик к подсетям в других зонах доступности, нажмите Добавить подсеть.
Для перехода на следующий шаг нажмите Далее.
Добавьте обработчики и привяжите к ним целевые группы. Вы можете пропустить этот шаг и добавить обработчики позднее.
Тег Name — Имя или описание обработчика.
Протокол — Протокол, трафик которого принимает обработчик (HTTP или HTTPS). При выборе протокола HTTPS необходимо также добавить сертификат, который будет использоваться по умолчанию (см. подробнее про сертификаты).
Порт — Порт, на котором обработчик принимает трафик.
Пересылка на — Данная опция позволяет привязать к обработчику целевую группу. Вы можете выбрать уже
существующую целевую группу
из списка или добавитьновую целевую группу
. Во втором случае необходимо задать:имя целевой группы;
порт, на который направляется трафик;
целевые ресурсы, которые входят в группу.
Примечание
Целевые ресурсы должны находиться в тех же зонах доступности, что и подсети, выбранные на предыдущем шаге.
Для добавления обработчика нажмите Добавить.
При необходимости вы можете сразу добавить дополнительные обработчики, повторив описанные выше действия, или удалить лишние, нажав Убрать.
Для перехода на следующий шаг нажмите Далее.
Если требуется, назначьте теги для балансировщика нагрузки.
Если тег Name не был задан на шаге 2 и вы хотите его добавить, нажмите Добавить тег Name и задайте значение тега.
Чтобы добавить произвольный тег, нажмите Добавить тег и задайте ключ и значение тега.
Вы можете пропустить этот шаг и добавить теги позднее. Для перехода на следующий шаг нажмите Просмотр и создание.
Проверьте настройки балансировщика. Если необходимо изменить какие-то из них, вернитесь на соответствующий шаг. Если всё правильно, нажмите Создать для создания балансировщика.
Балансировщику может потребоваться некоторое время на проверку состояния целевых ресурсов (если они заданы). Её длительность зависит от настроек проверки работоспособности для целевых групп.
Примечание
Для запуска балансировщика не требуется указывать ни обработчик, ни целевые ресурсы. Однако балансировщик не будет обрабатывать трафик, если они не заданы, даже если он находится в состоянии Активен.
Привязать подсеть#
При привязке подсети к балансировщику создаётся сетевой интерфейс в этой подсети. Привязанную подсеть и соответствующий интерфейс нельзя ни изменить, ни удалить. Однако вы можете привязать к балансировщику нагрузки подсети из зон доступности, где у балансировщика ещё нет сетевого интерфейса.
Чтобы добавить подсеть:
Перейдите в раздел Балансировка нагрузки Балансировщики нагрузки.
Выберите балансировщик нагрузки в таблице и нажмите Привязать подсети.
Укажите параметры привязки к сети:
Подсеть — Подсеть, в которой будет создан дополнительный сетевой интерфейс балансировщика нагрузки. Она должна находиться в том же VPC, что и уже привязанные подсети.
Elastic IP или Private IP — IP-адрес, который будет назначен сетевому интерфейсу, в зависимости от выбранной схемы. При выборе схемы
с внешней нагрузкой
следует назначить внешний Elastic IP-адрес. Вы также можете оставить это поле пустым, тогда адрес будет назначен автоматически. При выборе схемыс внутренней нагрузкой
внутренний IP-адрес назначается автоматически.
Чтобы привязать к балансировщику другие подсети, нажмите Добавить подсеть.
Для привязки подсетей нажмите Привязать.
Вы также можете привязать подсети на странице балансировщика нагрузки на вкладке Информация.
Удалить балансировщик нагрузки#
Вместе с балансировщиком удаляются все принадлежащие ему обработчики. В то же время удаление балансировщика не затрагивает связанные целевые группы и их целевые ресурсы.
Чтобы удалить балансировщик нагрузки:
Перейдите в раздел Балансировка нагрузки Балансировщики нагрузки.
Выберите балансировщик нагрузки в таблице и нажмите Удалить.
Подтвердите действие.
Балансировщик нагрузки можно также удалить на его странице на вкладке Информация.
Операции с обработчиками#
Добавить обработчик#
Примечание
Вы можете также добавить обработчик для целевой группы в подразделе Целевые группы.
Чтобы добавить обработчик:
Перейдите в раздел Балансировка нагрузки Балансировщики нагрузки.
Выберите балансировщик нагрузки в таблице и нажмите Добавить обработчик.
Добавьте обработчики и привяжите к ним целевые группы. Для этого задайте следующие параметры:
Тег Name — Имя обработчика (опционально).
Протокол — Протокол, трафик которого принимает обработчик (HTTP или HTTPS).
Сертификат — Сертификат, используемый по умолчанию (только для протокола HTTPS).
Порт — Порт, на котором обработчик принимает трафик.
Пересылка на — Данная опция позволяет привязать к обработчику целевую группу.
Вы можете выбрать уже
существующую целевую группу
из списка или добавитьновую целевую группу
. Во втором случае необходимо будет задать имя целевой группы, порт, на который направляется трафик, и целевые ресурсы, которые входят в группу.
Если требуется назначить теги обработчику, нажмите Добавить теги для перехода на следующий шаг.
Если тег Name не был задан на шаге 3 и вы хотите его добавить, нажмите Добавить тег Name и задайте значение тега.
Чтобы добавить произвольный тег, нажмите Добавить тег и задайте ключ и значение тега.
Для добавления обработчика нажмите Добавить.
Если необходимо добавить больше одного обработчика, повторите описанные шаги.
Вы можете также добавить обработчик на странице балансировщика нагрузки на вкладке Обработчики.
Примечание
По умолчанию созданный обработчик пересылает трафик на указанную целевую группу. Вы можете добавить другие правила для маршрутизации поступающего трафика.
Изменить настройки обработчика#
В отличие от мастера создания балансировщика и диалога добавления обработчика при изменении его настроек нельзя создать целевую группу. Если вы хотите пересылать трафик обработчика на новую целевую группу, то предварительно создайте её.
Чтобы изменить настройки обработчика:
Перейдите в раздел Балансировка нагрузки Балансировщики нагрузки.
Найдите в таблице ресурсов балансировщик нагрузки, к которому относится обработчик, и нажмите на имя балансировщика нагрузки для перехода на его страницу
Выберите обработчик в таблице и нажмите Изменить.
Измените необходимые настройки обработчика:
Протокол — Протокол, трафик которого принимает обработчик.
Сертификат — Сертификат, используемый по умолчанию (только для протокола HTTPS).
Порт — Порт, на котором обработчик принимает трафик.
Пересылка на — Целевая группа, на которую обработчик пересылает трафик.
Для применения настроек нажмите Изменить.
Добавить сертификат#
Примечание
Данная возможность доступна только для обработчиков трафика HTTPS.
Важно
Пользователь должен иметь необходимые привилегии для работы с сертификатами. Если пользователь не является администратором IAM, то назначьте ему политику IAMServerCertificateAccess.
После создания обработчика вы можете добавить дополнительные сертификаты помимо заданного по умолчанию. Их использование позволяет поддерживать множество доменов на одном порту и предоставлять свой сертификат для каждого домена.
Сертификат по умолчанию используется, если доменное имя не соответствует ни одному из дополнительных сертификатов или клиент подключается без использования протокола SNI (Server Name Indication). Вы можете добавить сертификат по умолчанию в качестве дополнительного, чтобы он продолжал использоваться для идентификации домена, даже если будет заменён на другой сертификат по умолчанию. Сменить сертификат по умолчанию можно путём изменения настроек обработчика.
Одновременно можно добавить несколько сертификатов. Прежде чем добавлять сертификаты, их необходимо импортировать.
Перейдите в раздел Балансировка нагрузки Балансировщики нагрузки.
Найдите в таблице ресурсов балансировщик нагрузки приложений, к которому относится обработчик трафика HTTPS, и нажмите на имя балансировщика нагрузки для перехода на его страницу.
Откройте вкладку Обработчики, найдите обработчик в таблице ресурсов и нажмите на поле Протокол:порт для перехода на страницу обработчика.
Откройте вкладку Сертификаты и нажмите Добавить.
В открывшемся окне выберите необходимые сертификаты из раскрывающегося списка.
Для завершения действия нажмите Добавить.
Удалить сертификат#
Примечание
Сертификат по умолчанию удалить нельзя.
При удалении сертификата из обработчика он остаётся по-прежнему доступен для добавления (посмотреть все доступные сертификаты можно в разделе IAM Сертификаты)
Перейдите в раздел Балансировка нагрузки Балансировщики нагрузки.
Найдите в таблице ресурсов балансировщик нагрузки приложений, к которому относится обработчик трафика HTTPS, и нажмите на имя балансировщика нагрузки для перехода на его страницу.
Откройте вкладку Обработчики, найдите обработчик в таблице ресурсов и нажмите на поле Протокол:порт для перехода на страницу обработчика.
Откройте вкладку Сертификаты, выберите ненужные сертификаты и нажмите Удалить.
Подтвердите действие в открывшемся окне.
Удалить обработчик#
Удаление обработчика не затрагивает связанную целевую группу и входящие в неё целевые ресурсы. После удаления обработчика вы можете связать освободившуюся целевую группу с другим обработчиком, в том числе принадлежащим другому балансировщику нагрузки.
Перейдите в раздел Балансировка нагрузки Балансировщики нагрузки.
Нажмите на имя балансировщика нагрузки для перехода на его страницу и откройте вкладку Обработчики.
Выберите обработчик в таблице и нажмите Удалить.
Подтвердите действие.
Вы можете также удалить обработчик на его странице на вкладке Информация.
Правила обработчика#
Вы можете задать собственные правила для обработчика. Правила определяют дальнейшую маршрутизацию запросов, которые получает балансировщик нагрузки. Они описывают, какие действия будут осуществляться при выполнении указанных в них условий. В первую очередь проверяются условия правила с наивысшим приоритетом (чем меньше значение приоритета, тем он выше). Если они не выполняются, то проверяются условия следующего по очереди правила и т.д.
Вместе с обработчиком создаётся правило по умолчанию, которое предусматривает пересылку запросов на привязанную целевую группу. Данное правило имеет наименьший приоритет и при наличии других правил выполняется, только если не были выполнены условия ни для какого другого правила. Правило по умолчанию нельзя изменить и удалить.
Для правил действуют следующие ограничения:
до 100 правил на один балансировщик нагрузки приложения;
до 5 условий в одном правиле;
до 5 целевых групп в одном правиле с действием Пересылка;
до 49999 максимальный приоритет.
Доступные действия#
Правила обработчика поддерживают следующие действия:
Пересылка — Запросы направляются указанным целевым группам.
Переадресация — Запросы перенаправляются на другой URL.
Фиксированный ответ — Клиенту возвращается предопределённый HTTP-ответ.
Пересылка#
Поступающие запросы распределяются между одной или несколькими целевыми группами в соответствии с заданным весом. Например, если две группы имеют одинаковый вес, то каждая группа будет получать ровно половину запросов. Если одна группа имеет вес 10, а вторая вес 5, то первая группа будет получать в два раза больше запросов. Максимальный возможный вес группы равен 256.
Переадресация#
Поступающие запросы перенаправляются на другой URL.
Переадресацию можно настроить как временную (HTTP 302 — Found
) или постоянную (HTTP 301 — Permanently moved
).
URL состоит из следующих компонентов:
<протокол>://<имя хоста>:<порт>/<путь>?<запрос>
протокол — При переадресации можно использовать протоколы HTTP и HTTPS.
имя хоста — Имя хоста не чувствительно к регистру. Имя может состоять содержать латинские буквы, цифры, дефисы, точки, нижние подчёркивания и символ подстановки
*
. Общее число символов — не менее 3, но не более 256.порт — Допустимые значения от 1 до 65535.
путь — Необходимо указывать абсолютный путь с учётом регистра. Путь должен начинаться с косой черты
/
и может содержать латинские буквы, цифры, дефисы, символы подстановки (*
и?
) и специальные символы_-.$/~"'@:+
. Общее число символов — не более 128.запрос — Общее число символов в тексте запроса — не более 128.
Во избежание зацикливания необходимо изменить хотя бы один из первых четырёх компонентов: протокол, имя хоста, порт или путь. Чтобы переиспользовать компоненты исходного URL, вместо них необходимо указать следующие ключевые слова:
#{protocol} для использования протокола исходного URL;
#{host} для использования имени хоста из исходного URL;
#{port} для использования порта исходного URL;
#{path} для использования пути из исходного URL;
#{query} для использования текста запроса из исходного URL.
Фиксированный ответ#
Поступающие запросы отбрасываются и клиенту возвращается предопределённый ответ.
При настройке данного действия вы можете указать код ответа (2xx, 4xx или 5xx), выбрать тип контента (application/javascript
, application/json
, text/css
, text/html
, text/plain
) и добавить произвольное сообщение.
Виды условий#
В правилах можно задавать следующие виды условий:
Заголовок хоста — Запрос маршрутизируется в зависимости от указанного имени хоста.
Шаблоны пути — Запрос маршрутизируется в зависимости от указанного пути.
В каждом правиле для обоих типов условий можно задать суммарно 5 условий (значений условия). Условия одного типа объединяются при помощи логического оператора ИЛИ, а условия разного типа — с помощью логического И. Например, если для заголовка хоста задано 3 домена, то для шаблонов пути можно указать только 2 пути, при этом логическое выражение из условий будет иметь следующий вид:
(host1.com OR host2.com OR host3.com) AND (/api/v1 OR /api/v2)
Заголовок хоста#
Правило выбирается при совпадении имени хоста в URL с именем хоста в условии. Это позволяет одному балансировщику нагрузки поддерживать множество поддоменов и различных доменов верхнего уровня.
Значение условия (имя домена, указанное в условии) может содержать латинские буквы, цифры, дефисы, точки, нижние подчёркивания и символ подстановки *
.
Имя домена должно состоять минимум из двух компонентов (содержать хотя бы одну точку), а доменный компонент после последней точки может содержать только буквы.
Общее число символов — не менее 3, но не более 256.
Шаблоны пути#
Данное условие определяет правила маршрутизации при совпадении пути, указанного в URL, с шаблоном пути, заданным в условии. Сравнение производится только с путём, указанным в URL; параметры запроса не включаются в сравнение.
Значение условия (шаблон пути, указанный в условии) чувствительно к регистру.
Оно может содержать латинские буквы, цифры, символы подстановки (*
и ?
) и специальные символы _-.$/~"'@:+
.
Общее число символов — не более 128.
Задать правило#
Перейдите в раздел Балансировка нагрузки Балансировщики нагрузки.
Нажмите на имя балансировщика нагрузки для перехода на его страницу и откройте вкладку Обработчики.
Нажмите на Протокол:Порт нужного обработчика для перехода на его страницу.
Откройте вкладку Правила и нажмите Добавить.
В открывшемся окне выберите Тип условия и задайте сами условия в поле Значения условия. Нажмите Добавить для добавления условий. Если необходимо, задайте условия другого типа. После задания всех условий нажмите Далее для перехода на следующий шаг.
Выберите действие, которое будет выполняться при выполнении условий правила (см. подробнее о поддерживаемых действиях).
Пересылка. Выберите одну или несколько целевых групп и укажите их вес.
Переадресация. Укажите URL, на который будут пересылаться запросы, и выберите код ответа. Если в URL требуется изменить хост, путь и/или запрос, то нажмите Другой хост, путь, запрос.
Фиксированный ответ. Задайте код ответа, выберите формат сообщения (Тип контента) и введите сообщение (Тело ответа).
Нажмите Далее для перехода на следующий шаг.
Задайте приоритет правила.
Нажмите Создать для сохранения правила.
Изменить правило#
Вы можете изменить условия и действия, но не приоритет правила.
Перейдите в раздел Балансировка нагрузки Балансировщики нагрузки.
Нажмите на имя балансировщика нагрузки для перехода на его страницу и откройте вкладку Обработчики.
Нажмите на Протокол:Порт нужного обработчика для перехода на его страницу.
Откройте вкладку Правила и выберите правило в таблице ресурсов.
Нажмите Добавить.
Вы можете оставить условия без изменения и сразу перейти на следующий шаг для изменения действия.
Примечание
Для изменения условия определённого типа необходимо его сначала удалить.
Для удаления условия:
Выберите условия в блоке Условия
Нажмите Убрать.
Для добавления условия:
Выберите Тип условия и задайте сами условия в поле Значения условия.
Нажмите Добавить для добавления условий.
Нажмите Далее для перехода на следующий шаг.
Если необходимо, измените действие, которое будет выполняться при выполнении условий правила (см. подробнее о поддерживаемых действиях).
Нажмите Сохранить для изменения правила.
Удалить правило#
Перейдите в раздел Балансировка нагрузки Балансировщики нагрузки.
Нажмите на имя балансировщика нагрузки для перехода на его страницу и откройте вкладку Обработчики.
Нажмите на Протокол:Порт нужного обработчика для перехода на его страницу.
Откройте вкладку Правила и выберите правило в таблице ресурсов.
Нажмите Удалить.
Информация о балансировщике нагрузки#
На странице ресурса отображаются данные о самом балансировщике нагрузки, относящихся к нему обработчиках и сетевых интерфейсах. Чтобы открыть страницу конкретного балансировщика нагрузки, перейдите в раздел Балансировка нагрузки Балансировщик нагрузки и нажмите на ссылку с его именем в таблице ресурсов.
На вкладке Информация представлены общие сведения о балансировщике нагрузки:
имя балансировщика;
DNS-имя;
дата создания;
состояние;
тип балансировщика;
используемая схема;
VPC, где создан балансировщик;
ARN балансировщика;
зоны доступности, где имеются сетевые интерфейсы балансировщика;
количество обработчиков;
количество сетевых интерфейсов.
Кроме того, здесь вы можете привязать подсети к балансировщику и удалить его.
На вкладке Обработчики отображается список используемых обработчиков со следующей информацией:
имя обработчика (тег Name);
ARN обработчика;
выполняемое действие со ссылкой на целевую группу;
порт, на который поступает трафик, и используемый протокол.
Кроме того, здесь вы можете также добавить обработчик, изменить его настройки, настроить теги и удалить.
На вкладке Сетевые интерфейсы выводится список сетевых интерфейсов, используемых балансировщиком нагрузки, со следующей информацией:
идентификатор сетевого интерфейса;
тег Name;
краткое описание;
состояние;
подсеть;
зона доступности;
VPC;
IP-адрес.
В зависимости от выбранной схемы балансировщика отображается либо его приватный IP-адрес, либо назначенный Elastic IP-адрес.
На вкладке Теги отображается информация о назначенных тегах. Здесь вы также назначить теги балансировщику нагрузки.