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


Надежность в Конфигурация приложений Azure

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

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

В этой статье описывается архитектура надежности App Configuration и то, как служба спроектирована для обеспечения доступности во время кратковременных сбоев, сбоев в зоне доступности и сбоев в регионах.

Рекомендации по развертыванию в рабочей среде для обеспечения надежности

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

  • SKU: Используйте номер SKU уровня "Стандартный" или "Премиум".

  • Обратимое удаление и защита от очистки: Включите обратимое удаление и защиту очистки, чтобы предотвратить удаление данных.

  • Для критически важных сценариев: Используйте номер SKU уровня "Премиум" и настройте включенную реплику для репликации в нескольких регионах. Такой подход повышает высокую доступность и устойчивость к отказам в регионах.

Список рекомендуемых методик и конфигурации рабочих нагрузок см. в разделе "Создание приложений с высокой устойчивостью".

Обзор архитектуры надежности

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

Конфигурация приложений — это полностью управляемая служба. Майкрософт отвечает за обслуживание службы и хранение параметров и управление ими.

При создании клиентских приложений, которые подключаются к конфигурации приложений, можно дополнительно использовать конфигурацию приложений с Azure Front Door (предварительная версия) для включения кэширования и глобального ускорения трафика. Эта конфигурация вводит другие соображения по георепликации, которые выделены в этой статье, как уместно.

Устойчивость к временным сбоям

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

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

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

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

  • Azure SDKs: используйте SDK для конфигурации приложений (App Configuration SDKs), если вашему приложению нужно отправлять запросы на запись. Пакеты SDK автоматически выполняют повторные попытки при получении кода состояния HTTP 429 и других временных ошибках.

  • Логика повторных попыток: Включите логику повторных попыток в пользовательские клиенты, если вы не можете использовать поставщики конфигурации приложений или пакеты SDK. Заголовок retry-after-ms в ответе предоставляет предлагаемое время ожидания в миллисекундах, прежде чем клиент повторит запрос.

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

Дополнительные сведения о настройке приложений см. в разделе "Часто задаваемые вопросы о конфигурации приложений".

Устойчивость к сбоям зоны доступности

Зоны Availability физически разделяют группы центров обработки данных в Azure регионе. При сбое одной зоны службы могут переключиться на одну из оставшихся зон.

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

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

На схеме показаны зоны доступности 1, 2 и 3. Хранилище конфигурации приложений охватывает все три зоны в регионе.

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

Требования

Поддержка региона: Магазины, развернутые в следующих регионах, автоматически имеют отказоустойчивость на уровне зон.

Американский континент Европа Ближний Восток Africa Азиатско-Тихоокеанский регион
Бразилия (Юг) Центральная Франция Israel Central Australia East
Центральная Канада Западно-Центральная Германия Qatar Central Центральная Индия
Центральная часть США Северная Италия UAE North Северный Китай 3
Восток США North Europe East Asia
Восток США 2 Norway East Japan East
Mexico Central Центральная Польша Korea Central
Южно-Центральный регион США Spain Central Юго-Восточная Азия
Правительство США (штат Вирджиния) Центральная Швеция
Западная часть США 2 Switzerland North
Западная часть США 3 UK South
West Europe

Себестоимость

Дополнительные затраты на избыточность зон для конфигурации приложений не требуются.

Настройка поддержки зоны доступности

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

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

Поведение, когда все зоны работоспособны

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

  • Операция между зонами: Конфигурация приложений автоматически управляет маршрутизацией трафика между зонами доступности. Во время обычных операций он прозрачно распределяет запросы между зонами.

  • Репликация данных между зонами: В регионах, поддерживающих зоны, конфигурация приложений синхронно реплицирует данные в зонах доступности. Эта репликация гарантирует, что параметры остаются согласованными и доступными, даже если зона становится недоступной.

Поведение во время сбоя зоны

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

  • Обнаружение и ответ: Служба конфигурации приложений обнаруживает сбои зоны и автоматически реагирует на них. Во время сбоя зоны не нужно предпринимать никаких действий.
  • Notification: Майкрософт не уведомляет вас автоматически об отключении зоны. Однако вы можете использовать Работоспособность служб Azure для понимания общего состояния службы, включая любые сбои зоны, и настроить оповещения Service Health для уведомления о проблемах.
  • Активные запросы: Во время сбоя зоны затронутая зона может не обрабатывать запросы во время полета, что требует повторных попыток клиентских приложений. Клиентские приложения должны следовать временным методам обработки ошибок , чтобы убедиться, что они могут повторить запросы в случае сбоя зоны.

  • Ожидаемая потеря данных: Потеря данных не ожидается во время сбоя зоны из-за синхронной репликации между зонами.

  • Ожидаемое время простоя: Не ожидается простоя.

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

Восстановление зоны

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

Тестирование на сбои в зоне

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

Устойчивость к сбоям на уровне региона

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

Geo-replication

С помощью георепликации можно реплицировать хранилище в нескольких Azure регионах. Каждое хранилище может иметь несколько реплик в разных регионах. Исходный магазин также является репликой. Эта возможность помогает защитить приложения от нарушений на уровне региона.

Требования

  • Поддержка регионов: Вы можете создавать реплики в любом регионе Azure, который поддерживает App Configuration, даже если эти регионы не являются парными регионами Azure.

  • Уровень: Хранилище конфигураций должно использовать поддерживаемый уровень для включения георепликации. Дополнительные сведения см. в разделе "Включение георепликации".

Соображения

При включении георепликации учитывайте следующие факторы:

  • Реплики с избыточностью между зонами: Любая реплика, созданная в регионе, где App Configuration поддерживает зоны доступности, автоматически создается с избыточностью между зонами.

  • Azure Front Door: Чтобы включить доставку геоизбыточной конфигурации с помощью Azure Front Door, настройте реплики App Configuration в качестве источников в группе источников. Для того чтобы Azure Front Door могла выполнять маршрутизацию на основе работоспособности, балансировку нагрузки и автоматический отказоустойчивость между регионами, требуется правильно настроить ориджины. Дополнительные сведения см. в разделе "Методы маршрутизации трафика в источник".

Себестоимость

Каждый геореплицированный регион подлежит отдельной оплате в соответствии с тарифами для соответствующего уровня и региона. Плата за исходящий трафик данных не взимается для репликации между регионами. Сведения о ценах см. в разделе "Цены на конфигурацию приложений".

Настройка поддержки нескольких регионов

Сведения о настройке репликации для вновь созданного хранилища конфигурации см. в разделе "Включение георепликации".

Поведение, когда все регионы работоспособны

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

  • Операция между зонами: Каждая реплика является отдельно адресируемой и имеет собственное доменное имя (DNS). Все реплики могут принимать операции чтения и записи.

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

    Замечание

    Если вы используете Azure Front Door, поведение маршрутизации трафика отличается. Дополнительные сведения см. в разделе "Отработка отказа и балансировка нагрузки".

  • Репликация данных между зонами: Данные реплицируются асинхронно и в конечном итоге согласованы. Метрику задержки репликации можно использовать для отслеживания в Azure Monitor, чтобы контролировать текущую задержку репликации между репликами.

Поведение во время сбоя региона

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

  • Обнаружение и реагирование: Майкрософт отвечает за обнаружение сбоев региона или реплик и инициирование процессов восстановления.

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

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

  • Notification: Майкрософт автоматически не уведомляет вас об отключении региона. Однако вы можете использовать Работоспособность служб Azure, чтобы понять общее состояние службы, включая сбои в любом регионе, и настроить оповещения Service Health для уведомления о проблемах.

  • Активные запросы: Активные запросы к реплике в регионе могут завершиться ошибкой. Клиентские приложения должны повторить запросы к другой реплике.

  • Ожидаемая потеря данных: Если реплика завершается ошибкой, последние изменения, внесенные в этой реплике, еще не будут реплицированы в другие реплики. Эти изменения могут оставаться недоступными до восстановления реплики. Чтобы оценить потенциальную потерю данных, отслеживайте метрику задержки репликации в Azure Monitor.

  • Ожидаемое время простоя: Когда реплика становится недоступной, она остается в автономном режиме до восстановления региона. Другие реплики продолжают обрабатывать запросы. Приложения могут столкнуться с кратким временем простоя при обнаружении сбоя и переключении на исправную реплику. Длительность зависит от того, насколько быстро каждое приложение выполняет это обнаружение и отработку отказа.

  • Перераспределение: Приложения должны направлять трафик в здоровую реплику при возникновении сбоя.

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

    Если вы размещаете Azure Front Door перед хранилищем данных и настроив группу источников с несколькими репликами в качестве источников для отработки отказа, Azure Front Door автоматически перенаправляет запросы на здоровую реплику.

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

После восстановления региона конфигурация приложений синхронизирует реплику с другими репликами без вмешательства.

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

Проверка сбоев в регионе

Вы не можете напрямую смоделировать переключение на резервную реплику в App Configuration. Тем не менее, поскольку приложения контролируют выбор реплики, вы можете протестировать поведение отказоустойчивости, принудив приложение перейти в состояние, в котором оно должно переключить реплики.

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

Один из способов — использовать локальный компьютер или другую среду, в которой у вас есть административный доступ. Выполните следующие действия:

  1. Включите подробное ведение журнала для Azure SDK. В .NET используйте класс AzureEventSourceListener для настройки средства ведения журнала. Дополнительные сведения см. в статье Ведение журналов и мониторинг.

  2. Вручную настройте hosts файл, чтобы запросы в хранилище конфигурации приложений перенаправляются по IP-адресу, который не может получать их, например 127.0.0.1 (localhost).

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

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

  3. Просматривайте журналы на предмет сообщения, аналогичного следующему примеру:

    [Warning] Microsoft-Extensions-Configuration-AzureAppConfiguration-Refresh:
    Failed to get configuration settings from endpoint 'https://myappconfigstore.azconfig.io'. Failing over to endpoint https://myappconfigstore-eus.azconfig.io'.
    

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

  4. После завершения теста отмените изменения в hosts файле.

Резервное копирование и восстановление

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

Для большинства решений не следует полагаться исключительно на резервные копии. Вместо этого используйте другие возможности, описанные в этом руководстве, для поддержки требований к устойчивости. Однако резервные копии защищают от некоторых рисков, которые другие методы не обеспечивают. Дополнительные сведения см. в статье "Что такое избыточность, репликация и резервное копирование?".

Устойчивость к случайному удалению

Конфигурация приложений предоставляет две функции восстановления ключей, чтобы предотвратить случайное или вредоносное удаление:

  • Обратимое удаление: При включении обратимого удаления можно восстановить удаленные хранилища и параметры в течение настраиваемого периода хранения. Функция мягкого удаления работает подобно корзине для ресурсов конфигурации приложений.

  • Защита от очистки: При включении защиты очистки служба предотвращает постоянное удаление хранилища и его параметров до истечения срока хранения. Эта защита предотвращает окончательное уничтожение параметров вредоносными субъектами.

Используйте обе функции для рабочих сред. Дополнительные сведения см. в разделе "Обратимое удаление" и "Очистка".

Устойчивость к обслуживанию служб

Майкрософт регулярно выполняет обновления служб и другое обслуживание. Служба обрабатывает эти действия автоматически, что делает обслуживание простым и прозрачным для вас. Во время событий обслуживания простой не ожидается, если Работоспособность служб Azure предоставляет уведомление о плановом обслуживании.

Устойчивость к проблемам конфигурации

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

Соглашение об уровне обслуживания

Соглашение об уровне обслуживания (SLA) для служб Azure описывает ожидаемую доступность каждой службы и условия, которые должно соответствовать вашему решению для достижения этого ожидания доступности. Дополнительные сведения см. в разделе SLAs для онлайн-сервисов.