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

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

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

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

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

На данный момент в Облаке КРОК поддерживаются только сетевые балансировщики нагрузки (Network Load Balancer, NLB). Они работают на четвёртом уровне сетевой модели OSI и позволяют распределять трафик TCP или UDP. Распределение трафика осуществляется в соответствии с алгоритмом 5-tuple hash, который учитывает:

  • протокол;

  • адрес и порт отправителя;

  • адрес и порт получателя.

Трафик соединения TCP и потока UDP с одинаковым отправителем и получателем маршрутизируется на один и тот же целевой ресурс в течение всего срока их жизни.

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

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

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

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

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

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

Сетевой балансировщик нагрузки работает на четвёртом уровне сетевой модели OSI и позволяет распределять трафик TCP или UDP. Он может принимать трафик на нескольких адресах/портах. По умолчанию трафик, поступающий на конкретный адрес, распределяется между целевыми ресурсами в одной зоне доступности.

Примечание

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

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

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

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

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

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

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

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

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

  2. В разделе IAM создайте пользователя c ролью ELB administrator или Cloud administrator и добавьте его в проект.

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

Примечание

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

Ограничения на использование#

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

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

  2. Чтобы создать сетевой балансировщик внутренней нагрузки в выбранном VPC, необходимо соблюсти следующие условия:

    Примечание

    Если какое-то из перечисленных условий не может быть выполнено, а балансировщик внутренней нагрузки требуется для распределения трафика только в рамках одной зоны доступности, для его создания оставьте заявку на портале поддержки или направьте её по адресу infra-support@croc.ru.

    Примечание

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

  3. Если балансировщик внутренней нагрузки необходим для распределения трафика из подключённых внешних сетей, то для его работы необходимо выполнить следующие условия:

    • внешняя сеть должна быть подключена к виртуальному коммутатору, а не к VPC;

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

      Примечание

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

    • Для обращений к внутреннему DNS resolver в VPC необходимо настроить DNS forwarder или SNAT для DNS-трафика у экземпляра, который используется для маршрутизации трафика, и обращаться к DNS из внешних сетей через этот DNS forwarder/SNAT.