Варианты развертывания Pangolin#

Pangolin в автоматическом режиме, с помощью скриптов развертывания, поддерживает два варианта развертывания с использованием разных сочетаний компонентов. Данные варианты развертывания также поддерживаются скриптами автоматического обновления:

  • решение standalone в конфигурации «Pangolin + Pangolin Pooler»;

  • кластерное решение в конфигурации «Pangolin + Pangolin Manager + Pangolin Pooler + Pangolin DCS».

В ручном режиме клиент может настраивать любые варианты конфигурации, беря на себя ответственность за их дальнейшее обновление до новых версий. Например, с помощью RPM-пакетов можно развернуть только Pangolin, либо развернуть два экземпляра БД и вручную настроить между ними репликацию.

Компоненты, используемые в разных сценариях развертывания:

Pangolin Manager – управляющая программа на Python, позволяющая автоматически обслуживать кластеры Pangolin с различными типами репликации.

Pangolin Pooler – мультиплексоры соединений (программы для создания пула соединений), позволяют уменьшить накладные расходы на базу данных в случае, когда огромное количество физических соединений ведет к падению производительности Pangolin.

Pangolin DCS – высоконадежное распределенное хранилище параметров конфигурации, задаваемых в форме ключ/значение, работает в связке с Pangolin Manager.

В следующих подразделах представлена компиляция результатов тестирования различных конфигураций кластера на соответствие следующему набору требований:

  • функциональные требования:

    • RTO (допустимое время восстановления) = 6 минут;

    • RPO (допустимая точка восстановления) = 0.

  • нефункциональные требования:

    • 10000 tps;

    • объем БД не более 10 ТБ;

    • 2500 одновременных активных подключений;

    • установка 100 новых подключений в секунду.

Решение standalone#

Конфигурация «Pangolin + Pangolin Pooler»#

Преимущества:

Схема Pangolin для АС, где не требуется соответствие заявленным нефункциональным требованиям (RTO = 6 минут, RPO = 0). Также возможно прерывание предоставляемого сервиса.

Ограничения:

Не соответствует заявленным нефункциональным требованиям.

Кластерное решение#

Конфигурация «Pangolin + Pangolin Manager + Pangolin Pooler + Pangolin DCS»#

Преимущества:

  • Обеспечивается возможность достижения RTO = 6, но практическое подтверждение возможно по результатам длительной эксплуатации.

  • RPO = 0 выполняется кроме случая, описанного в недостатках решения (см. ниже перечисление ограничений).

  • Простая в конфигурировании и эксплуатации схема с минимумом потребляемых ресурсов сервера.

  • Pangolin Manager имеет внешний интерфейс для управления состоянием кластера и единую точку конфигурирования всех серверов БД, входящих в кластер.

  • Несмотря на добавление в конфигурацию дополнительного сервиса, схема остается простой для установки и настройки — Pangolin Pooler имеет единый файл для конфигурирования и обладает простым синтаксисом настроек.

  • Позволяет гибко управлять настройками пулов соединений.

  • Pangolin Pooler обеспечивает количество соединений большее, чем сконфигурировано в БД.

  • Pangolin Pooler позволяет обеспечить стабильную скорость обработки транзакций даже в случае превышения лимита возможных одновременных подключений к БД, согласно конфигурации.

  • В Pangolin Pooler можно реализовать автоматическое перенаправление трафика к новому ведущему серверу на основе информации из Pangolin DCS.

Ограничения:

  • 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.