Надежность в Azure

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

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

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

Надежная рабочая нагрузка имеет два основных свойства:

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

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

Надежность в Azure работает на трех взаимосвязанных уровнях:

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

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

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

Общая ответственность за надежность

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

Схема, показывающая уровни надежности в Azure.

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

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

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

    Это важно

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

Соглашения об уровне обслуживания (СОГЛАШЕНИЯ об уровне обслуживания) определяют обязательства и ожидания надежности в Azure службах. Понимание соглашений об уровне обслуживания является важным при оценке служб и проектировании конкретных целевых объектов доступности. Azure службах публикуют обязательства соглашения об уровне обслуживания, которые могут отличаться по конфигурации и уровню избыточности. Другие службы, используемые другими поставщиками, также могут публиковать соглашения об уровне обслуживания. Подробные рекомендации по работе соглашений об уровне обслуживания и связи с ожиданиями доступности рабочей нагрузки см. в соглашениях об уровне обслуживания.

Устойчивые основы в Azure

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

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

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

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

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

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

Azure службы, поддерживающие надежность.

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

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

Azure предоставляет несколько служб надежности, управляемых искусственным интеллектом, в том числе:
- возможности устойчивости Azure
- Возможности устойчивости в агентах (предварительная версия) в Azure Copilot
- агент SRE Azure

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

Azure обеспечивает балансировку нагрузки на нескольких уровнях, в том числе:
- Azure Load Balancer для распределения трафика TCP/UDP уровня 4
- Шлюз приложений Azure для маршрутизации HTTP уровня 7 с проверкой работоспособности приложений
- Azure Front Door для глобальной балансировки нагрузки HTTP с помощью быстрой отработки отказа
- Диспетчер трафика Azure для глобального распространения конечных точек на основе DNS

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

Azure предоставляет несколько возможностей резервного копирования и восстановления, в том числе:
- Azure Backup для централизованной резервной копии с настраиваемым хранением для виртуальных машин, контейнеров BLOB-объектов, файлов и некоторых баз данных
— Собственные функции резервного копирования и восстановления во многих службах Azure, включая большинство служб баз данных
- Bicep и другую инфраструктуру в качестве средств кода для резервного копирования конфигурации, защиты от смещения и быстрого отдыха в среде

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

Azure Site Recovery оркеструет аварийное восстановление для рабочих нагрузок виртуальных машин с автоматической репликацией и последовательности отработки отказа. Многие службы Azure также предоставляют встроенные функции георепликации, в том числе:
- Azure Cosmos DB с собственными возможностями репликации данных между регионами и отработкой отказа
- Azure API Management с собственными возможностями отработки отказа между регионами

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

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

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

Azure предоставляет службы тестирования надежности, в том числе:
- Azure Chaos Studio для контролируемых экспериментов по внедрению ошибок для проверки поведения самовосстановления и устойчивости к реальным сбоям
- Azure App Testing для тестирования производительности и функционального тестирования, чтобы понять, как работают приложения, в том числе при стрессе

Включение надежности в службах Azure

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

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

Сведения о руководствах по надежности для многих служб Azure см. в руководствах по надежности.

Проектирование надежных рабочих нагрузок

Надежность возникает из непрерывного цикла определения целевых объектов, проектирования сбоев и быстрого восстановления, тестирования предположений и улучшения с помощью операционного обучения. Используйте руководства по надежности Azure Well-Architected Framework и службы, чтобы понять, что каждая служба предоставляет по умолчанию и что требует явной конфигурации. Структурированный подход к реализации надежности см. в модели зрелости Azure Well-Architected Framework.

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

Суверенитет и размещение данных

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

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