Балансировщик
Балансировщик нагрузки (Load Balancer) распределяет сетевую нагрузку с помощью правил мониторинга и перенаправления по нескольким серверам. Используя встроенный мониторинг балансировщик определяет активность серверов, и если какой-либо стал недоступен распределяет трафик по другим. Когда работа недоступного сервера восстановлена, он снова подключается для перераспределения трафика автоматически.
Также возможно добавление новых серверов к существующим балансировщикам для горизонтального расширения по необходимости. Всё это вместе позволяет создавать гибкую и отказоустойчивую систему.
Привязка IP и трафик
Для работы с внешним трафиком балансировщику необходим плавающий IP-адрес, который не входит в стоимость самого балансировщика. IP-адрес можно выбрать как обычный, так и из подсети с защитой от DDoS. Добавить плавающий IP можно при создании балансировщика или после. Далее IP-адрес балансировщика используется, как если бы он был адресом сервера, а балансировщик нагрузки распределяет входящие запросы по списку реальных серверов. Если сервер используется с балансировщиком, то можно использовать сервер без белого адреса. Однако если серверу потребуется доступ к интернету, то на сервере потребуется собственный белый адрес — через балансировщик выйти в интернет сервер не сможет.
Если и на балансировщике, и на сервере есть публичный IP, возможна ситуация, когда трафик будет поступать на оба адреса. В этом случае списания, например по защите от DDoS, будут производиться по каждому адресу отдельно.
Также балансировщик может использоваться для распределения трафика внутренних сервисов по серой сети. В таком случае можно использовать балансировщик без белого IP.
Проксируется TCP-трафик, HTTP добавим в будущем.
Правила перенаправления
Правила перенаправления задают список серверов, по которым распределяется трафик. При создании правила необходимо указать сервер, внешний порт балансировщика и порт на сервере. Добавить правило для сервера возможно, только если он в статусе «Работает» или «Остановлен».
Свойства балансировки
Для распределения нагрузки можете выбрать один из двух способов балансировки:
- Round Robin — запросы распределяются на серверы по очереди;
- Least Connections — запросы распределяются на серверы с меньшим количеством подключений.
Также при создании балансировщика нагрузки можно добавить привязку сессии SOURCE_IP. Это позволяет перенаправлять весь трафик от клиента в течение одной сессии на один и тот же сервер. И только если этот сервер станет недоступен, трафик будет перенаправлен на другой сервер.
Все HTTP-заголовки сохраняются, то есть пробрасываются с балансировщика на целевые серверы. Но не добавляем заголовки, а значит целевые серверы не могут получить информацию типа:
- X-Forwarded-For — исходный адрес клиента (серверы видят только IP балансировщика);
- X-Forwarded-Port — исходный порт обращения клиента;
- X-Forwarded-Proto — идентификатор протокола HTTP/HTTPS по которому обращался клиент.
Мониторинг
Для проверки доступности серверов настраивается мониторинг, который постоянно опрашивает серверы на доступность. При недоступности сервера мониторинг продолжает проверять его, чтобы понять не вернулся ли он в строй. Для каждого балансировщика можно настроить способ и параметры мониторинга, которые будут работать для всех добавленных в правилах перенаправления серверов.
Способы мониторинга:
- PING
- TCP
- HTTP — имеет дополнительные настройки:
- Метод: GET, HEAD. POST и т.д…
- Путь проверки: по какому адресу на сервере обращаться
- HTTP-код ответа: какой ожидать код для успешной проверки
Параметры мониторинга:
- Интервал — какой промежуток в секундах между проверками
- Таймаут — как долго в секундах ожидать ответа от сервера, таймаут должен быть меньше интервала
- Попытки — максимальное количество попыток проверки (от 1 до 10)
Возможно отключение балансировщика нагрузки по необходимости. Все настройки сохранятся, перенаправление трафика не будет выполняться.