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