Балансировщик нагрузки для хостов
Managed Service for PostgreSQL позволяет использовать внутренний сетевой балансировщик для распределения нагрузки между хостами. Балансировщик работает на четвертом уровне сетевой модели OSI, но использует технологии третьего уровня для ускорения обработки пакетов.
Примечание
Функциональность находится на стадии Preview и предоставляется по запросу в техническую поддержку.
Преимущества использования балансировщика:
- Единая точка входа для подключения к хосту-мастеру.
- Равномерное распределение запросов на чтение между репликами с учетом их загрузки.
- Выбор политики балансировки. Например, можно задать
Least connections, чтобы распределять нагрузку по репликам с наименьшим количеством соединений. - Минимизация недоступности кластера при переключении мастера или изменении состава реплик.
- Для переключения приложения на новый кластер при восстановлении из резервной копии достаточно заменить один FQDN.
Балансировщик автоматически учитывает изменения топологии кластера: новые реплики включаются в балансировку нагрузки, а удаленные — исключаются.
В архитектуре кластера балансировщик реализован как отдельный сервис, который можно включить при создании кластера. Балансировщику присвоен общий для всех зон доступности FQDN, который служит единой точкой входа для всех запросов к БД. При этом инстанс балансировщика создается во всех зонах доступности, где расположены хосты кластера.
Балансировщик останавливается и запускается одновременно с остановкой и запуском кластера. Поступающий на балансировщик трафик распределяется по всем хостам кластера, а при добавлении или удалении хостов в кластере они автоматически добавляются или удаляются из балансировки.
Чтобы получить FQDN балансировщика, воспользуйтесь инструкцией.
Схема регулировки сетевого трафика кластера с помощью балансировщика отображена ниже:
Важно
Самостоятельное создание Network Load Balancer (NLB) для доступа к кластеру не рекомендуется. Балансировщик, создаваемый автоматически при развертывании кластера, имеет критически важную конфигурацию proxy. Без этой настройки NLB будет блокировать трафик к портам обработчиков, что приведет к потере доступа к кластеру.
При включенном балансировщике остается возможность напрямую подключиться к БД по FQDN хоста, минуя балансировщик.
Для анализа состояния и загрузки хостов используется отдельный прокси-сервис на основе Odyssey
- Мониторинг доступности хостов.
- Проверка отставания реплик.
- Проверка роли хоста.
Балансировщик предоставляет несколько особых портов для целевых подключений:
|
Порт |
Целевое подключение |
|
6432 |
Хост-мастер |
|
7433 |
Все реплики |
|
7432 |
Реплики с отставанием меньше предустановленного |
|
8432 |
Каскадные реплики |
Трафик с каждого открытого порта балансировщика направляется на прокси-сервис и дальше распределяется по целевым подключениям в зависимости от номера порта.
Например, чтобы распределять запросы на чтение только по репликам, отстающим не более чем на 30 секунд:
- Создайте кластер с включенным балансировщиком и укажите в настройках порта
7432величину отставания реплик 30 секунд. - Укажите в настройках вашего приложения строку подключения к БД с FQDN балансировщика и портом
7432.
Примечание
При использовании балансировщика клиентские соединения остаются под управлением менеджера подключений Odyssey.
Политики балансировки
Вы можете настраивать поведение балансировщика при распределении запросов по репликам кластера с помощью политик балансировки. Политика указывается для всех типов целевых подключений к репликам при создании кластера.
Доступны следующие политики:
Round Robin— выбор реплики в соответствии с политикой Round-Robin .Least connections— выбор реплики с наименьшим числом соединений.Localized Round Robin— при выборе реплики в соответствии с политикой Round-Robin приоритет отдается репликам, расположенным в той же зоне доступности, что и инстанс балансировщика, на который поступил запрос.