Высокая доступность кластера Managed Service for PostgreSQL
Высокая доступность кластера Managed Service for PostgreSQL определяется количеством и расположением его хостов, настройками репликации и другими параметрами кластера.
Количество и расположение хостов кластера
Кластер может состоять из одного или нескольких хостов.
Кластер из одного хоста не обеспечивает высокую доступность. При выходе из строя виртуальной машины хоста-мастера кластер будет недоступен на чтение и запись до окончания работ по восстановлению ВМ. На кластер из одного хоста не распространяется Соглашение об уровне обслуживания (SLA)
Важно
Создавать кластер из одного хоста не рекомендуется.
Кластер с двумя хостами, расположенными в разных зонах доступности, считается высокодоступным и на него распространяется SLA
Кластер с тремя и более хостами, расположенными в трех разных зонах доступности, считается высокодоступным и на него распространяется SLA
Подробнее в разделе Планирование топологии кластера.
Настройки репликации
Высокая доступность кластера достигается за счет механизмов репликации и переключения мастера, которые имеют следующие особенности:
- В кластере используется потоковая репликация. Каждый хост-реплика получает поток репликации от другого хоста (обычно это хост-мастер). Managed Service for PostgreSQL управляет потоками репликации в кластере автоматически, но при необходимости ими можно управлять вручную. Реплики, для которых вручную установлен источник репликации, имеют ряд ограничений.
- Если для хоста-мастера настроен публичный доступ, то для реплик он также должен быть включен, иначе при переключении мастера кластер может стать недоступным.
- В кластере используется механизм автоматического выбора и переключения на новый мастер в случае отказа текущего мастера.
Управление репликацией и автоматическое переключение обеспечивают максимально возможную доступность для записи кластера с любым числом хостов.
В кластере из трех и более хостов:
- при выходе из строя мастера происходит автоматическое переключение на новый мастер;
- выход из строя реплики никак не сказывается на доступности кластера.
В кластере из двух хостов:
- Если вышел из строя мастер, то происходит автоматическое переключение на синхронную реплику без потери данных.
- Если вышла из строя реплика, то в течение 15 секунд кластер автоматически переходит в асинхронный режим репликации. На это время транзакции могут зависнуть в режиме ожидания подтверждения, но после перехода кластера в асинхронный режим, успешно завершатся. В процессе восстановления после сбоя реплика полностью синхронизируется с мастером, и после этого кластер возвращается в синхронный режим репликации.
Для минимизации рисков недоступности кластера на запись рекомендуем использовать кластер Managed Service for PostgreSQL с тремя и более хостами.
Важно
Использование особого FQDN упрощает написание приложений, но приводит к временной недоступности кластера при переключении на новый мастер. Для быстрого переключения на новый мастер необходимо реализовать на стороне приложения отслеживание смены мастера.
Настройки обслуживания
В некоторых случаях провести техническое обслуживание без потери соединения невозможно. Поэтому любое приложение, работающее с базой данных, должно быть устойчиво к разрывам соединения.
В процессе технического обслуживания кластер с двумя и более хостами может быть недоступен для записи на время переключения мастера. Хост, который перезапускается, недоступен для чтения. Кластер из одного хоста полностью недоступен на время перезапуска. Рекомендуем выбирать для вашего кластера предпочтительный день недели и час обслуживания с учетом предполагаемой нагрузки на него.
При обновлении версии PostgreSQL кластер становится недоступным на запись. Реплики поочередно становятся недоступными для чтения. То есть, минимум одна реплика всегда доступна для кластера с тремя хостами, две — для кластера с четырьмя хостами и так далее. Кластер, содержащий один или два хоста, полностью недоступен на время обновления версии PostgreSQL. Учитывайте это при планировании обновления версии кластера.
Прочие настройки
На доступность кластера также могут влиять следующие настройки:
- настройки резервного копирования;
- выбранный тип дисков хранилища;
- классы хостов;
- режим работы и настройки менеджера подключений;
- квоты и лимиты;
- настройки журнала опережающей записи (WAL).