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