Варианты развертывания Pangolin#
Pangolin в автоматическом режиме, с помощью скриптов развертывания, поддерживает два варианта развертывания с использованием разных сочетаний компонентов. Данные варианты развертывания также поддерживаются скриптами автоматического обновления:
решение standalone в конфигурации «Pangolin + Pangolin Pooler»;
кластерное решение в конфигурации «Pangolin + Pangolin Manager + Pangolin Pooler + DCS».
В ручном режиме клиент может настраивать любые варианты конфигурации, беря на себя ответственность за их дальнейшее обновление до новых версий. Например, с помощью RPM-пакетов можно развернуть только Pangolin, либо развернуть два экземпляра БД и вручную настроить между ними репликацию.
Компоненты, используемые в разных сценариях развертывания:
Pangolin Manager – управляющая программа на Python, позволяющая автоматически обслуживать кластеры Pangolin с различными типами репликации.
Pangolin Pooler – мультиплексоры соединений (программы для создания пула соединений), позволяют уменьшить накладные расходы на базу данных в случае, когда огромное количество физических соединений ведет к падению производительности Pangolin.
DCS – высоконадежное распределенное хранилище параметров конфигурации, задаваемых в форме ключ/значение, работает в связке с Pangolin Manager. В данной конфигурации используется etcd.
Внимание!
Распределенное хранилище параметров конфигурации etcd не является частью продукта Pangolin и является внешней зависимостью.
В следующих подразделах представлена компиляция результатов тестирования различных конфигураций кластера на соответствие следующему набору требований:
функциональные требования:
RTO (допустимое время восстановления) = 6 минут;
RPO (допустимая точка восстановления) = 0.
нефункциональные требования:
10000 tps;
объем БД не более 10 ТБ;
2500 одновременных активных подключений;
установка 100 новых подключений в секунду.
Решение standalone#
Конфигурация «Pangolin + Pangolin Pooler»#
Преимущества:
Схема Pangolin для АС, где не требуется соответствие заявленным нефункциональным требованиям (RTO = 6 минут, RPO = 0). Также возможно прерывание предоставляемого сервиса.
Ограничения:
Не соответствует заявленным нефункциональным требованиям.
Кластерное решение#
Конфигурация «Pangolin + Pangolin Manager + Pangolin Pooler + DCS»#
Преимущества:
Обеспечивается возможность достижения RTO = 6, но практическое подтверждение возможно по результатам длительной эксплуатации.
RPO = 0 выполняется кроме случая, описанного в недостатках решения (см. ниже перечисление ограничений).
Простая в конфигурировании и эксплуатации схема с минимумом потребляемых ресурсов сервера.
Pangolin Manager имеет внешний интерфейс для управления состоянием кластера и единую точку конфигурирования всех серверов БД, входящих в кластер.
Несмотря на добавление в конфигурацию дополнительного сервиса, схема остается простой для установки и настройки — Pangolin Pooler имеет единый файл для конфигурирования и обладает простым синтаксисом настроек.
Позволяет гибко управлять настройками пулов соединений.
Pangolin Pooler обеспечивает количество соединений большее, чем сконфигурировано в БД.
Pangolin Pooler позволяет обеспечить стабильную скорость обработки транзакций даже в случае превышения лимита возможных одновременных подключений к БД, согласно конфигурации.
В Pangolin Pooler можно реализовать автоматическое перенаправление трафика к новому ведущему серверу на основе информации из etcd.
Ограничения:
RPO = 0 обеспечивается только в случае использования синхронной репликации и наличия механизма обработки
timeoutна стороне клиентского предложения, в случае следующих обнаруженных недостатков: RPO=0 не выполняется при использовании асинхронной репликации возможно возникновение ситуации «split brain».При использовании асинхронной репликации с
pg_rewindвозможны расхождения в данных между ведущим и ведомым узлом.При использовании синхронной репликации с включенным
pg_rewindнеобходима обработка timeout на стороне клиента, так как запросы не будут завершаться до получения ответа от ведомого сервера.При использовании синхронной репликации с отключенным
pg_rewindданные, полученные до переключения кластера на новый Active, останутся только на «старом» Active.Необходимо использовать измененную строку подключения на стороне АС для того, чтобы отправлять все запросы на ведущий сервер кластера.
Клиентское приложение должно уметь работать с БД в режиме транзакций в соответствии с рекомендуемыми настройками Pangolin Pooler.
Для использования API v3 компонентом Pangolin Manager для коммуникации c etcd версия пакета etcd должна быть не ниже 3.3.