Отказоустойчивый кластер Postgres Pro «из коробки»: как работает BiHA
Высокая отказоустойчивость — базовое требование к СУБД в business-critical системах. Однако в экосистеме открытой СУБД PostgreSQL не существует стандартного, единственного рекомендованного решения для обеспечения отказоустойчивости. В ответ на запросы заказчиков команда Postgres Professional разработала BiHA — собственную систему управления отказоустойчивым кластером Postgres Pro.
Встроенная в Postgres Pro отказоустойчивость
BiHA расшифровывается как Built-in High Availability, то есть «встроенная высокая доступность». В этом принципиальное отличие BiHA от имеющихся решений построения active-passive кластеров. BiHA интегрирована в ядро Postgres Pro Enterprise и доступна всем пользователям с лицензией на Postgres Pro Enterprise. В то время как релизные циклы внешнего кластерного ПО и Postgres Pro Enterprise могут не совпадать, для обновления BiHA нужно лишь обновление версии СУБД Postgres Pro. В отличие от дополнительного кластерного ПО, при использовании BiHA администратор БД имеет дело только с СУБД Postgres Pro. Задачи обновления, настройки, обеспечения совместимости стороннего ПО решать в этом случае уже не нужно.
Упрощение работы администратора
BiHA управляет физической репликацией Postgres — самым распространенным решением для обеспечения отказоустойчивости Postgres. Физическая репликация построена на передаче файлов журнала предзаписи (WAL) с последующим применением их на реплике. На репликах может использоваться как синхронная, так и асинхронная репликация.
При конфигурировании кластера BiHA все необходимые для репликации параметры настраиваются автоматически, что значительно упрощает работу администратора. Создание узлов кластера — лидера (Leader) и ведомого (Follower) — происходит простым вызовом утилиты командной строки (bihactl init и bihactl add). На лидере находится рабочая версия БД, а на ведомых узлах — резервные.
Непрерывный мониторинг состояния узлов кластера
Любой узел кластера всегда «знает» о состоянии всех остальных узлов, что позволяет быстро определять наличие сбоя в кластере. Это достигается благодаря работе специальных процессов BiHA, выполняющих непрерывный мониторинг состояния всех узлов кластера во время его работы. Взаимодействие узлов друг с другом происходит с использованием управляющего канала: между каждыми двумя узлами устанавливается сетевое соединение по протоколу TCP.
Автоматическая защита от сбоя
Отказоустойчивость кластера BiHA обеспечивается без какого-либо участия администратора системы. Если лидер недоступен, оставшиеся узлы кластера выбирают нового лидера голосованием. При голосовании учитывается множество параметров, в том числе длина журнала предзаписи (WAL), что критично при использовании асинхронной репликации. Максимальная длина WAL означает минимальную потерю данных — поэтому выбирается минимально отстающий от лидера узел.
Предотвращение несогласованности данных
Имеется возможность регулировать количество узлов, составляющее кластерный кворум, необходимый для принятия решения о назначении нового лидера. Если старый лидер продолжает работать, но изолирован по сети от других узлов кластера, клиенты могут выполнять на нем только операции чтения. Это важно для предотвращения ситуации, когда операции записи выполняются на нескольких узлах кластера одновременно и несогласованно (split brain).
При устранении сбоя и возврате старого лидера в кластер он автоматически становится ведомым, поскольку он не прошел последнее голосование и не будет признан в качестве лидера. Снова назначить этот узел лидером при необходимости можно вручную с помощью функции set_leader(id).
Автоматическое подключение пользователей к новому лидеру
Для автоматизации подключений пользователей к СУБД могут использоваться привычные прокси, пулеры и балансировщики соединений. Управлять подключениями можно также и на клиенте (libpq, JDBC): если в строке соединений перечислить все узлы кластера и выставить параметр target_session_attrs=read-write, то при сбое будет происходить автоматическое переподключение к новому лидеру. Существуют и другие значения этого параметра клиентского подключения, например read-only, которая позволит клиентам, читающим данные, подключаться только к ведомым узлам кластера, в том числе с балансировкой сессий на чтение между всеми ведомыми узлами.
BiHA — незаменимое решение для крупных инсталляций
BiHA — полностью самостоятельная разработка Postgres Pro, созданная без применения каких либо Open Source решений. Встроенный кластер позволяет добиться высокой доступности Postgres Pro Enterprise при максимально простой установке и настройке. BiHA — безопасная и экономичная технология, она не требовательна к экспертизе администратора баз данных и позволяет обойтись без использования дополнительного оборудования. BiHA может стать незаменимым решением для обеспечения отказоустойчивости крупных инсталляций в корпоративных средах.
Узнать больше о BiHA и других технологиях отказоустойчивости можно на сайте Postgres Pro.
■
erid:LjN8JxzDpРекламодатель: компания ООО «ППГ»ИНН/ОГРН: 7729445882/1157746074518Сайт: https://postgrespro.ru/
ПОЛУЧИТЬ
КОНСУЛЬТАЦИЮ