Конференция Arenadata
Новое время — новый Greenplum
Мы приглашаем вас принять участие в конференции, посвященной будущему Open-Source Greenplum 19 сентября в 18:00:00 UTC +3. Встреча будет проходить в гибридном формате — и офлайн, и онлайн. Онлайн-трансляция будет доступна для всех желающих.
Внезапное закрытие Greenplum его владельцем — компанией Broadcom - стало неприятным сюрпризом для всех, кто использует или планирует начать использовать решения на базе этой технологии. Многие ожидают выхода стабильной версии Greenplum 7 и надеются на её дальнейшее активное развитие.
Arenadata не могла допустить, чтобы разрабатываемый годами Open-Source проект Greenplum прекратил своё существование, поэтому 19 сентября мы представим наш ответ на данное решение Broadcom, а участники сообщества получат исчерпывающие разъяснения на все вопросы о дальнейшей судьбе этой технологии.

На конференции вас ждёт обсуждение следующих тем:

  • План возрождения Greenplum;
  • Дорожная карта;
  • Экспертное обсуждение и консультации.
Осталось до события

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

ПРИМЕЧАНИЕ
Балансировка нагрузки доступна в версии ADPG Enterprise.

В кластере ADPG реализована балансировка нагрузки, которая заключается в распределении запросов от пользователей по разным репликам базы данных. Это позволяет выполнять большее количество запросов одновременно.

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

Для того чтобы реализовать балансировку нагрузки, в ADPG используется HAProxy (High Availability Proxy). HAProxy является программным балансировщиком нагрузки TCP/HTTP. HAProxy слушает два порта: подключения к одному из них передаются лидеру, запросы ко второму распределяются по ADPG-нодам. Транзакции на запись должны приходить на первый порт, а на чтение на второй. Если транзакция на запись передаётся на порт для запросов на чтение, ADPG её отклонит.

ПРИМЕЧАНИЕ
HAProxy не определяет, является ли текущая транзакция запросом на запись или только на чтение. Выбирать корректный порт для подключений должны клиентские приложения.

В соответствии с заданными правилами HAProxy выбирает какой ноде передать клиентский запрос. Запросы на запись обрабатываются только нодой-лидером, а на чтение передаются репликам. Также можно настроить HAProxy так, чтобы лидер мог обрабатывать запросы на чтение. Настройка сервиса балансировки описана в статье Настройка балансировки нагрузки.

Если в кластере включена утилита PgBouncer, которая управляет пулом соединений, запросы на запись будут передаваться в экземпляр PgBouncer ноды-лидера ADPG, а запросы на чтение — экземплярам PgBouncer нод-реплик. См. Настройка PgBouncer.

В качестве распределенного хранилища конфигурации (Distributed Configuration Store, DCS) ADPG использует etcd-кластер. Сервис Patroni, реализующий потоковую репликацию, сохраняет информацию о конфигурации ADPG-кластера в Etcd. За дополнительной информацией об организации репликации в ADPG обратитесь к статье Обзор отказоустойчивости ADPG.

Сервис conf.d отвечает за обновление конфигурационных файлов HAProxy при изменении конфигурации кластера (добавлении новой ноды, смене лидера). Сервис conf.d устанавливается на один хост с HAProxy и подписывается на обновления конфигурации кластера ADPG, сохраняемые в Etcd. Когда конфигурация изменяется, conf.d генерирует новые конфигурационные файлы для HAProxy и перезагружает HAProxy, чтобы применить изменения.

HAProxy также использует Patroni REST API для дополнительной проверки — какая нода является лидером, а какая репликой.

РЕКОМЕНДАЦИЯ
Для повышения отказоустойчивости HAProxy можно использовать технологии, не имеющие прямого отношения к ADPG. Например, хосты HAProxy могут быть добавлены как записи A/AAAA с одним FQDN в таблицу соответствия DNS-сервера. Кроме того, утилиту keepalived можно использовать для управления несколькими хостами HAProxy.
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней