Отказоустойчивость кластера PostgreSQL
По умолчанию кластер облачных баз данных PostgreSQL состоит из одной мастер-ноды. Для обеспечения отказоустойчивости кластера нужно добавить в него реплики. В многонодных кластерах одна нода будет мастер-нодой, остальные — репликами.
Например, если вы создали трехнодный кластер, то в кластере будет одна мастер-нода и две реплики. Если вы добавите еще ноды, они будут репликами.
Тип размещения нод в кластере зависит от наличия реплик в кластере, типа пула, в котором расположен кластер, и количества сегментов в пуле.
Мастер-нода
По умолчанию кластер состоит из одной главной ноды — мастер-ноды. При подключении к мастер-ноде доступны все операции: чтение (SELECT) и запись (INSERT, UPDATE, DELETE и другие).
Все изменения данных на мастер-ноде дублируются на репликах. Процесс репликации не влияет на работу реплик и мастер-ноды.
Реплики
Реплики — это полные копии мастер-ноды. Доступны только для чтения данных (SELECT). В кластерах облачных баз данных PostgreSQL одна реплика всегда синхронная, все последующие реплики асинхронные.
Наличие реплик в кластере обеспечивает его отказоустойчивость — если мастер-нода перестанет работать, то ее роль перейдет одной из реплик и кластер продолжит работать в штатном режиме. Когда мастер-нода будет восстановлена, она возьмет на себя роль реплики. При этом адрес мастер-ноды изменится.
Для кластера с репликами действует SLA — мы гарантируем доступность записи 99,95% и доступность чтения 99,99%.
Если в кластере нет реплик, то он будет недоступен, пока мастер-нода не будет восстановлена. Данные при этом не будут утеряны.
Мы рекомендуем создавать отказоустойчивые кластеры с репликами или добавлять реплики в существующие кластеры.
Размещение нод
Тип размещения нод в кластере зависит от наличия реплик в кластере, типа пула, в котором расположен кластер, и количества сегментов в пуле:
-
Single-Segment — в одном сегменте однозонального пула. Применимо:
- для кластеров без реплик;
- кластеров с репликами, которые находятся в пулах только с одним сегментом;
- кластеров с репликами в конфигурациях линеек HighFreq и Dedicated;
примечаниеНапример, вы создали трехнодный кластер (одна мастер-нода и две реплики) в конфигурации линейки HighFreq в пуле ru-2. Все ноды будут размещены в одном сегменте пула ru-2c.
-
Multi-Segment — в разных сегментах однозонального пула. Применимо для кластеров с репликами, которые находятся в пулах с несколькими сегментами. Сегменты находятся в разных стойках одного дата-центра. Ноды распределяются по сегментам последовательно;
примечаниеНапример, вы создали четырехнодный кластер (одна мастер-нода и три реплики) в пуле ru-1. Первые три ноды будут размещены последовательно в сегментах пула ru-1a, ru-1b и ru-1c. Четвертая нода будет размещена в сегменте ru-1a. Если вы добавите пятую ноду, то она будет размещена в сегменте пула ru-1b.
-
Single-AZ — в одном сегменте мультизонального пула. Применимо для кластеров без реплик в пуле ru-6. Если вы добавите реплику в кластер, тип размещения нод изменится на Multi-AZ;
-
Multi-AZ — в разных сегментах мультизонального пула. Применимо для кластеров с репликами в пуле ru-6. Каждый сегмент пула расположен в отдельном дата-центре. Ноды распределяются по сегментам последовательно.
примечаниеНапример, вы создали четырехнодный кластер (одна мастер-нода и три реплики) в пуле ru-6. Первые три ноды будут размещены последовательно в сегментах пула ru-6a, ru-6b и ru-6c. Четвертая нода будет размещена в сегменте ru-6a. Если вы добавите пятую ноду, то она будет размещена в сегменте пула ru-6b.
Посмотреть список пулов и сегментов можно в таблице Инфраструктура Selectel инструкции Локации: страны, регионы, зоны доступности, пулы и адреса дата-центров.
Изменить количество реплик
Можно увеличить или уменьшить количество реплик. При изменении количества реплик кластер продолжает работать.
- В панели управления в верхнем меню нажмите Продукты и выберите Облачные базы данных.
- Откройте вкладку Активные.
- Откройте страницу кластера → вкладка Настройки.
- Нажмите Изменить конфигурацию.
- В блоке Отказоустойчивость в поле Количество нод укажите новое количество реплик. Если в подсети, к которой подключен кластер, нет свободных адресов, то реплику нельзя добавить, — каждая новая реплика занимает новый адрес в подсети.
- Нажмите Сохранить.