Балансировка нагрузки#

Общая информация#

Сервис Балансировка нагрузки автоматически распределяет входящий трафик между целевой группой экземпляров в одной или нескольких зонах доступности. Это позволяет более равномерно разделить нагрузку по обработке запросов между виртуальными машинами и повысить отказоустойчивость и доступность поддерживаемых приложений.

Включённые в целевую группу ресурсы регулярно опрашиваются с целью проверки их состояния. Если какой-нибудь экземпляр становится неработоспособным, то трафик на него не направляется. При возобновлении работы отказавшего экземпляра он вновь начинает получать трафик. Вы всегда можете добавить дополнительные экземпляры или исключить из целевой группы лишние для поддержания требуемого уровня нагрузки.

Для приёма входящего трафика при балансировке нагрузки используются обработчики. Обработчик (listener) принимает запросы от клиентов по указанным IP-адресу, порту и протоколу.

В К2 Облаке поддерживаются сетевые балансировщики нагрузки (Network Load Balancer, NLB) и балансировщики нагрузки приложений (Application Load Balancer, ALB). Первые работают на четвёртом уровне сетевой модели OSI и распределяют трафик TCP и UDP. Вторые работают на седьмом уровне OSI и распределяют трафик HTTP и HTTPS.

В зависимости от источника трафика балансировщики нагрузки делятся на:

  • внешние балансировщики нагрузки;

  • внутренние балансировщики нагрузки.

Первые имеют публичные (внешние) IP-адреса и доступны из интернета. Вторые имеют приватные (внутренние) IP-адреса и доступны только внутри VPC, в котором были созданы. Оба вида балансировщиков используют внутренние IP-адреса для адресации трафика целевым ресурсам.

Основные понятия#

Балансировщик нагрузки выступает в качестве единой точки входа для клиентского трафика, который равномерно распределяется между целевыми ресурсами. Он может принимать трафик на нескольких адресах/портах.

Сетевой балансировщик нагрузки работает на четвёртом уровне сетевой модели OSI и распределяет трафик TCP и UDP.

Балансировщик нагрузки приложений работает на седьмом уровне сетевой модели OSI и распределяет трафик HTTP и HTTPS.

Балансировщик внешней нагрузки распределяет трафик от клиентов из интернета. Сетевым интерфейсам балансировщика назначаются Elastic IP-адреса.

Балансировщик внутренней нагрузки распределяет трафик только от клиентов в том же VPC. Сетевые интерфейсы балансировщика могут иметь только внутренние IP-адреса.

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

Целевая группа объединяет целевые ресурсы – экземпляры виртуальных машин, – между которыми распределяется трафик. Целевую группу может ассоциировать только с одним балансировщиком нагрузки, при этом она может использоваться несколькими обработчиками трафика этого балансировщика.

Экземпляр балансировщика создаётся вместе со специальным сетевым интерфейсом в каждой подсети, которая была указана при создании балансировщика. В каждой зоне доступности можно создать по одному экземпляру балансировщика. Экземпляр сетевого балансировщика нагрузки, в отличие от экземпляра балансировщика нагрузки приложений, может распределять трафик только между целевыми ресурсами в той же зоне доступности.

Перед началом работы#

Чтобы начать работу с сервисом Балансировка нагрузки, выполните следующие действия:

  1. Создайте проект, если у вас его нет.

  2. В разделе IAM создайте пользователя, добавьте его в созданный проект и назначьте ему политику ELBFullAccess для предоставления необходимых привилегий для работы с сервисом балансировки нагрузки.

    Примечание

    Если вы хотите, чтобы пользователь имел доступ к другим сервисам облака, то включите его в группу CloudAdministrators. В этом случае назначать ему политику ELBFullAccess не нужно.

  3. Убедитесь в наличии всех необходимых ресурсов в проекте — подсетей, SSH-ключей, групп безопасности. Если этих ресурсов нет, создайте их.

Примечание

Группы безопасности должны включать необходимые разрешающие правила, чтобы целевые ресурсы могли принимать трафик от балансировщика нагрузки.

Использование DNS с балансировщиками нагрузки#

Пользовательский трафик направляется к балансировщику нагрузки с использования его DNS-имени. Доменное имя генерируется для каждого балансировщика при его создании.

Внимание

В примерах ниже приводятся DNS-записи для сетевых балансировщиков нагрузки. В случае балансировщиков нагрузки приложений необходимо поменять nlb на alb.

У балансировщика внешней нагрузки DNS-имя имеет вид: <name>-<nlb-id>.nlb.k2.cloud, а у балансировщика внутренней нагрузки — <name>-<nlb-id>.nlb.<vpc-id>.internal.

Примечание

Доменное имя балансировщика внутренней нагрузки разрешается (resolve) только DNS-сервером внутри соответствующего VPC.

Перенаправление трафика#

Если пользовательский домен (например, service1.example.com) необходимо переадресовать на балансировщик нагрузки, в зоне example.com следует создать запись ресурса DNS (DNS resource record) с типом CNAME и указать DNS-имя балансировщика, например:

private-service.example.com. IN CNAME service1.lb-12345678.nlb.k2.cloud.
public-service.example.com. IN CNAME service2.lb-90abcdef.nlb.vpc-12345678.internal.

DNS-записи для конкретной зоны доступности#

Если трафик балансировщика с экземплярами в нескольких зонах доступности требуется направить к экземпляру в конкретной зоне доступности, то можно использовать зональные DNS-записи. Такая запись создаётся при добавлении подсети для балансировщика. Например, для балансировщика внешней нагрузки с подсетями в двух зонах доступности, az1 и az2, DNS-имена будут иметь следующий вид:

az1.service1.nlb-12345678.nlb.k2.cloud. IN A 192.0.2.1
az2.service1.nlb-12345678.nlb.k2.cloud. IN A 192.0.2.2

Для сравнения глобальные DNS-записи имеют следующий вид:

service1.nlb-12345678.nlb.k2.cloud. IN A 192.0.2.1
service1.nlb-12345678.nlb.k2.cloud.ru. IN A 192.0.2.2

DNS-записи для зон доступности всегда выдают один и тот же IP-адрес независимо от состояния целевых ресурсов. Если все целевые ресурсы в какой-то зоне доступности будут недоступны, то трафик, направляемый соответствующему экземпляру балансировщика согласно DNS-записи, не будет обрабатываться, пока хотя бы один целевой ресурс не вернётся в состояние ОК.

Квоты на балансировщики нагрузки#

На балансировщики нагрузки предоставляются следующие квоты:

  • до 50 балансировщика нагрузки каждого типа в одном проекте;

  • до 50 обработчиков для каждого балансировщика нагрузки;

  • до 500 целевых групп в одном проекте;

  • до 100 целевых ресурсов в каждой целевой группе;

  • до 20 сертификатов на один балансировщик нагрузки (помимо задаваемых по умолчанию).

При необходимоcти вы можете расширить квоты — для этого обратитесь в службу поддержки.