Поделиться через


Высокий уровень доступности в Azure Cosmos DB for PostgreSQL

Область применения: Azure Cosmos DB для PostgreSQL (на базе расширения Citus для PostgreSQL)

Высокий уровень доступности (HA) сокращает время простоя базы данных, сохраняя резервные реплики каждого узла в кластере. Если узел выходит из строя, Azure Cosmos DB for PostgreSQL переключает входящие подключения с проблемного узла на соответствующий резервный. Отказоустойчивое переключение выполняется в течение нескольких минут, и повышенные узлы всегда имеют свежие данные посредством синхронной потоковой репликации PostgreSQL.

Все основные узлы в кластере размещаются в одной зоне доступности для уменьшения задержки между узлами. Предпочтительная зона доступности позволяет поместить все узлы кластера в одну зону доступности, в которой развернуто приложение. Близость может дополнительно улучшить производительность, уменьшая задержку между приложением и базой данных. Резервные узлы подготавливаются в другую зону доступности. В портале Azure отображается зона доступности каждого основного узла в кластере. Вы также можете проверить зону доступности каждого узла в кластере с помощью одного из программных методов, таких как REST API.

Даже без включенной высокой доступности каждый узел имеет собственное локально избыточное хранилище (LRS) с тремя синхронными репликами, поддерживаемыми службой хранилища Azure. При сбое одной реплики служба хранилища Azure обнаруживает это и автоматически восстанавливает реплику. Сведения о надежности хранилища LRS см. в разделе метрик на этой странице.

При включении HA Azure Cosmos DB для PostgreSQL запускает резервный узел для каждого основного узла в кластере. Основная и резервная базы данных используют синхронную репликацию PostgreSQL. Такая репликация гарантирует клиентам предсказуемое время простоя в случае сбоя основного узла. В двух словах, наша служба обнаруживает сбой на основных узлах и переходит на резервные узлы без потери каких-либо данных.

Чтобы воспользоваться высокой доступностью на узле координатора, приложения баз данных должны обнаруживать прекращенные соединения и неудачные транзакции и повторять попытки их выполнения. Недавно повышенный координатор доступен с той же строкой подключения.

Состояния высокого уровня доступности

Восстановление можно разделить на три этапа: обнаружение, переключение на резерв и полное восстановление. Azure Cosmos DB для PostgreSQL выполняет периодические проверки работоспособности на каждом узле, и после четырех неудачных проверок он определяет, что узел отключен. Затем Azure Cosmos DB для PostgreSQL повышает состояние резервного подключения к основному узлу (отработка отказа) и создает новый резервный режим. Начинается потоковая репликация, приводящая новый узел в актуальное состояние. Когда завершится репликация всех данных, узел считается полностью восстановленным.

Azure Cosmos DB для PostgreSQL отображает состояние хода отработки отказа на странице обзора кластеров в портал Azure.

  • Работоспособно: VD включена, и узел полностью реплицирован на резервный узел.
  • Выполняется переключение на резервный узел: на основном узле обнаружена ошибка, и инициирована процедура переключения на резервный узел. Это состояние переходит в создание резервного режима после отработки отказа на резервный узел, а резервный — новый первичный.
  • Создание резервного файла: предыдущий резервный файл повышен до основного, и для него создается новый резервный узел. Когда новая вторичная будет готова, это состояние переходит в репликация в процессе.
  • Выполняется репликация: выполняется подготовка нового резервного узла и синхронизация данных После репликации всех данных в новый резервный режим синхронная репликация включена между основными и резервными узлами, а состояние узлов переходит обратно в "Работоспособное".
  • Нет: отказоустойчивость (HA) не включена на этом узле.

Следующие шаги