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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Поставщики конфигурации: Используйте поставщики конфигурации конфигурации приложений, которые имеют встроенные возможности повторных попыток и кэширования вместе с множеством других функций устойчивости.
  • Пакеты SDK Для Azure: Используйте пакеты SDK конфигурации приложений, если приложению необходимо отправлять запросы на запись. Пакеты SDK автоматически выполняют повторные попытки при получении кода состояния HTTP 429 и других временных ошибках.
  • Логика повторных попыток: Включите логику повторных попыток в пользовательские клиенты, если вы не можете использовать поставщики конфигурации приложений или пакеты SDK. Заголовок retry-after-ms в ответе предоставляет предлагаемое время ожидания в миллисекундах перед повтором запроса.
  • Кэширование: Настройте параметры кэша таким образом, чтобы они сохранялись в памяти, когда это возможно, с целью уменьшения прямых запросов к вашему хранилищу.

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

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

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

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

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

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

Требования

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

Американский континент Европа Ближний Восток 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

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

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

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

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

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

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

Если хранилище находится в регионе, поддерживающем избыточность зоны, и все зоны доступности работают, можно ожидать следующего поведения:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Geo-replication

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

Требования

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

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

Соображения

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

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

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

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

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

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

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

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

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

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

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

    Замечание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  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 позволяет экспортировать данные конфигурации из хранилища и использовать их в рамках более широкой стратегии резервного копирования.

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

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

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

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

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

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

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

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

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

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

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

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