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


Диагностика и устранение неполадок доступности пакетов SDK Azure Cosmos DB в многорегиональных средах

ОБЛАСТЬ ПРИМЕНЕНИЯ: NoSQL

В этой статье описывается поведение последних версий пакетов SDK Azure Cosmos DB при возникновении проблем с подключением к конкретному региону или при отказе региона.

Все пакеты SDK Для Azure Cosmos DB позволяют настроить региональные предпочтения. В различных пакетах SDK используются следующие свойства:

Когда пакет SDK инициализируется с конфигурацией, указывающей региональные предпочтения, сначала оно получит сведения об учетной записи, включая доступные регионы из глобального пункта доступа. Затем он будет применять пересечение настроенных региональных предпочтений и доступных регионов учетной записи и использовать порядок в региональных предпочтениях для определения приоритета результата.

Если конфигурация региональных предпочтений содержит регионы, которые не являются доступным регионом в учетной записи, значения будут игнорироваться. Если эти недопустимые регионы добавляются позже в учетную запись, пакет SDK будет использовать их, если они выше в конфигурации предпочтения.

Тип счета Читает Пишет
Один регион записи Предпочтительный регион с наибольшим числом заказов Основной регион
Несколько регионов записи Предпочтительный регион с наивысшим приоритетом Предпочтительный регион с высшим приоритетом

Если не задать предпочитаемый регион, клиент пакета SDK по умолчанию будет использовать основной регион:

Тип счета Чтение Пишет
Один регион записи Основной регион Основной регион
Несколько регионов записи Основной регион Основной регион

Примечание.

Основной регион относится к первому региону в списке регионов учетной записи Azure Cosmos DB. Если значения, указанные в качестве региональных настроек, не совпадают с существующими регионами Azure, они игнорируются. Если эти значения совпадают с существующим регионом, но учетная запись не реплицирована в этот регион, клиент будет подключаться к следующему по предпочтительности региону, который соответствует настройкам, или к основному региону.

Предупреждение

Логику резервирования и доступности, описанную в этом документе, можно отключить в конфигурации клиента, что не рекомендуется, если только пользовательское приложение не будет самостоятельно обрабатывать ошибки доступности. Это выполняется посредством следующих настроек.

В нормальных условиях клиент SDK подключается к предпочтительному региону (если региональные настройки заданы) или к основному региону (если региональные настройки не заданы), и работа будет происходить с выбранным таким образом регионом, если не произойдет ни один из следующих сценариев.

В таких случаях клиент, использующий пакет SDK Azure Cosmos DB, предоставляет журналы и включает сведения о повторных попытках в рамках диагностических сведений об операции:

  • Свойство RequestDiagnosticsString из пакета SDK .NET V2 описывает ответное реагирование.
  • Свойство Diagnostics из пакета SDK .NET V3 описывает ответное реагирование и исключения.
  • Метод getDiagnostics() для ответов и исключений в SDK для Java V4.

При определении следующего предпочтительного региона клиент пакета SDK будет использовать список регионов из учетной записи, определяя приоритетность регионов по их предпочтительности (если она задана).

Подробные сведения о гарантиях SLA во время таких событий см. в документе Соглашения об уровне обслуживания для обеспечения доступности.

Удаление региона из учетной записи

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

Добавление региона в учетную запись

Каждые 5 минут клиент пакета SDK Azure Cosmos DB считывает конфигурацию учетной записи и обновляет регионы, о которых он знает.

В случае удаления региона из учетной записи и повторного его добавления в последствии в эту учетную запись, если при этом в конфигурации пакета SDK для этого добавляемого региона задан более высокий приоритет, чем у текущего подключенного региона, то пакет SDK переключается на постоянное использование этого добавляемого региона. После обнаружения добавленного региона в него направляются все последующие запросы.

Если клиент настроен для предпочтительного подключения к региону, который не имеет учетной записи Azure Cosmos DB, предпочтительный регион игнорируется. Если этот регион добавить в учетную запись позже, клиент обнаружит его и переключится на его постоянное использование.

Переключение региона записи в учетной записи с одним регионом для записи

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

Сбой в регионе

Если учетная запись использует один регион записи, и в процессе выполнения операции записи в этом регионе происходит сбой, поведение системы аналогично отказоустойчивости вручную. Для запросов на чтение или учетных записей с несколькими регионами для записи, поведение аналогично удалению региона.

Гарантии согласованности сеансов

При использовании функции согласованности сеанса клиенту нужно гарантировать, что он может считывать собственные записи. В учетных записях с одним регионом записи, в которых предпочтительный регион чтения отличается от региона записи, могут возникнуть случаи, когда пользователь выдает запись, а затем выполняет чтение из локального региона, локальный регион еще не получил репликацию данных (скорость легкого ограничения). В таких случаях пакет SDK получает конкретный сбой от службы в операции чтения и повторно выполняет операцию чтения в основном регионе, чтобы обеспечить целостность сеанса. Для учетных записей с несколькими регионами записи применяется та же самая сессийная семантика, но из-за наличия нескольких доступных регионов записи повторные попытки совершаются в соответствии с предпочтительным списком регионов или порядком регионов учетной записи.

Временные проблемы с подключением по протоколу TCP

В сценариях, когда клиент пакета SDK Для Azure Cosmos DB настроен для использования протокола TCP для данного запроса, могут возникнуть ситуации, когда условия сети временно влияют на связь с определенной конечной точкой. Эти временные условия в сети могут проявляться как истечение времени ожидания по условиям протокола TCP и как ошибки типа «Служба недоступна» (HTTP 503). По возможности клиент повторит запрос локально для той же самой конечной точки в течение нескольких секунд.

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

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