При разворачивании системы DirectumRX на СУБД PostgreSQL, следует уделить особое внимание выбору отказоустойчивого решения СУБД. Правильный выбор позволит обеспечить доступность системы с учетом заданного SLA при оптимальном уровне затрат на оборудование, лицензии и дальнейшее сопровождение.
Для построения такой системы с учетом стоимости и размера организации можно выделить 3 основных варианта.
Как правило, клиенты с такими входными данными характеризуются тем, что организация не готова вкладывать средства в дополнительное ПО, например, в лицензирование и поддержку СУБД.
В этом случае основным критерием будет минимальная стоимость владения решением. В качестве СУБД скорее всего будет использоваться свободная PostgreSQL. При этом часто можно обойтись без построения отказоустойчивой схемы.
Достаточно иметь резервную копию виртуальной машины (ВМ) на которой развернута СУБД и актуальную резервную копию БД. Недоступность системы в несколько часов может быть некритична для бизнеса.
Поддержка СУБД как услуга в этом случае чаще всего отсутствует, что не требует первоначальных вложений, но возможность задать вопрос относительно функционирования СУБД и получить ответ есть в сообществе https://www.postgresql.org/support/
Отказоустойчивость в этом случае может быть реализована как через разделяемые диски, так и с помощью потоковой репликации в зависимости от наличия/отсутствия системы хранения данных, при этом по-прежнему необходимо резервирование ВМ и БД. Сравнение вариантов отказоустойчивости приведено в таблице ниже.
В качестве СУБД возможен вариант использования как бесплатной версии PostgreSQL, так и использование коммерческой версии дистрибутива, например, PostgresPRO.
Поддержка версии PostgreSQL может осуществляться как хостинг-провайдерами в случае размещения СУБД в «облаке», так и сторонними организациями.
Как итог можно подобрать оптимальное решение между стоимостью поддержки, отсутствием необходимости лицензировать СУБД и отказоустойчивостью решения в целом.
Как правило, клиенты с такими входными данными характеризуются тем, что работа пользователей зависит от функционирования системы, при этом критичные бизнес-процессы компании завязаны на систему DirectumRX.
В качестве СУБД оптимальным является вариант использования проприетарных версий СУБД, которые основаны на открытой PostgreSQL. Для данных СУБД вендоры осуществляют поддержку, выполняют соответствующие доработки, направленные на повышение производительности и стабильности в высоконагруженных системах, а также оперативно устраняют выявленные критичные дефекты и уязвимости. Примерами таких компаний являются отечественная PostgresPRO и зарубежные EnterpriseDB и 2ndQuadrant.
С учетом повышенных требований SLA к доступности системы DirectumRX оптимальным является архитектура отказоустойчивости, основанная на репликации средствами СУБД (достоинства и недостатки вариантов приведены в таблице ниже).
В случае готовности со стороны Клиента уменьшить требования SLA, отказоустойчивость может быть организована через разделяемые диски. Это позволит сэкономить на числе лицензий СУБД, но увеличит время недоступности системы в случае сбоя, с нескольких десятков секунд до нескольких минут.
Обе архитектуры не являются альтернативой или заменой резервному копированию ВМ и БД.
Если углубиться в технические детали, то наиболее подходящими вариантами обеспечения отказоустойчивости СУБД PostgreSQL для системы DirectumRX являются:
https://postgrespro.ru/docs/postgrespro/11/different-replication-solutions
Требуется минимум 2 сервера с СУБД и общий диск, доступный на этих серверах). Схема является классическим примером HighAvailability-кластера;
При проблемах на ведущем сервере 1, вся обработка данных через некоторый таймаут переносится на резервный сервер 2, путем переключения раздела системы хранения данных (СХД) с базой данных на резервный сервер.
https://postgrespro.ru/docs/postgrespro/11/different-replication-solutions
В данном случае используются встроенные возможности СУБД, в частности потоковая репликация.
При проблемах на ведущем сервере 1, вся обработка данных через некоторый таймаут переносится на резервный сервер 2, при этом на резервном сервере есть свой экземпляр базы данных.
Автоматизация переключения, в обоих случаях, как правило, осуществляется специализированным ПО. Примером такого ПО является PaceMaker (аналогичные рекомендации приводит и компания PostgresPRO в статье).
Еще больше технических деталей и пошаговые инструкции по разворачиванию приведены в документе, доступном на сайте поддержке компании DIRECTUM.
Отказоустойчивость через разделяемые диски |
Трансляция журналов предзаписи |
Достоинства
|
Достоинства
|
Недостатки
|
Недостатки
|
Примечание. В случае необходимости использования версии СУБД, которая зарегистрирована в реестре российского ПО и/или сертифицирована органами ФСТЭК, на текущий момент должна быть использована версия Postgres Pro Standard или Postgres Pro Enterprise от компании PostgresPRO.
Multimaster — это расширение для версии Postgres Pro Enterprise, которое позволяет организовать синхронный кластер без разделения ресурсов, который обеспечивает масштабируемость OLTP для читающих транзакций, а также высокую степень доступности с автоматическим восстановлением после сбоев. В качестве аналогии можно привести технологию AlwaysOn от компании Microsoft для SQL Server.
На текущий момент использование расширения multimaster возможно только для обеспечения высокой доступности системы DirectumRX. Т.е. для тех клиентов у кого уже развернут multimaster допустимо его задействовать для DirectumRX с учетом ограничений расширения, которые могут оказывать существенное влияние на функционирование системы. Полный список ограничений приведен в официальной документации PostgresPRO.
Для функционирования кластера потребуется минимум 2 узла кластера и 1 узел рефери, либо 3 полноценных узла кластера.
В качестве резюме к статье хотелось бы отметить следующее:
Привет.
SBD - дорого в эксплуатации и сложно в обслуживании. Необходимо сам кворум строить отказоустойчивым, следить за его состоянием. Переключение мастер-слейв можно производить не только PaceMaker, но и через Slony-I, Pgpool-I/II, Bucardo, Pglogical, BDR.
На мой взгляд, наилучшее решение это потоковая репликация (асинхронная) и частое резерервное копирование базы данных. Даже если мастер умрет, можно из слейва сделать мастер и рядом поднять новый слейв, реплицировав на него БД. Займет это не больше 25 минут. Главное держать наготове чистую настроенную ВМ.
Неплохой продукт Repmgr https://repmgr.org/
Repmgr — набор инструментов для управления потоковой репликацией и восстановления после сбоя кластера PostgreSQL серверов. Он автоматизирует настройку резервных серверов, мониторинг репликации, а также помогает выполнять задачи администрированию кластера, такие как отказоустойчивость (failover) или переключение мастера-слейва (слейв становится мастером, а мастер - слейвом). Repmgr работает с версии PostgreSQL 9.3 и выше.
В качестве резервного копирования как вариант использовать Barman. Он умеет бекапить на отдельный сервер с нескольких нод PSQL.
По дистрибутивам работы с PSQL больше всего понравилась Ubuntu 18.04. Очень много материала в интернете и чуть меньше Centos.
Юрий, судя по объемному комментарию, вы уже сталкивались с задачей повышения отказоустойчивости СУБД .
Хотелось бы узнать, а в реальности из всего списка, что именно использовали на продуктивной системе?
С какими плюсами/минусами/особенностями сталкивались?
Что-то пошло не так и в первом ответе потерялась часть моих комментариев, поэтому дополню ниже:
>>SBD - дорого в эксплуатации и сложно в обслуживании. Необходимо сам кворум строить отказоустойчивым, следить за его состоянием.
Все-таки на дворе 2019 и СХД есть у большинства крупных организаций. При этом сами СХД достаточно надежны, а у многих еще реализовано и дублирование данных. С другой стороны, если все-таки СХД нет, то согласен с вами, что можно просто увеличить число узлов в кластере до 3 для обеспечения кворума.
>>Переключение мастер-слейв можно производить не только PaceMaker, но и через Slony-I, Pgpool-I/II, Bucardo, Pglogical, BDR.
>>Неплохой продукт Repmgr https://repmgr.org/
Тут также соглашусь, что вариантов которые позволяют организовать отказоустойчивость СУБД достаточно много. Но у многих есть особенности, либо они "заточены" на работу именно с PostgreSQL. Pacemaker же в этом плане более универсален и с помощью него можно построить недорогие High Availability решения для того же Redis или RabbitMQ (либо вообще сторонней службы), которые также потребуются для построения отказоустойчивой инфраструктуры DirectumRX
>>По дистрибутивам работы с PSQL больше всего понравилась Ubuntu 18.04.
Действительно сейчас можно выделить 3 основных ОС на которые достаточно документации в сети. Это Ubuntu, SLES и RHEL, при этом мануалы для последних двух, как правило применимы и для их бесплатных вариаций, таких как OpenSuse и Centos. Ну и дополню, что в пошаговой инструкции, ссылка на которую дана в статье, также приведен пример в том числе и на Ubuntu.
Авторизуйтесь, чтобы написать комментарий