Перейти к основному содержимому

Варианты развертывания 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.