Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Сервис Контейнеры приложений Azure — полностью управляемая безсерверная контейнерная услуга, которая запускает микросервисы и контейнеризованные приложения в Azure. Он обеспечивает встроенное автоматическое масштабирование, включая масштабирование до нуля, и поддерживает несколько языков программирования и фреймворков. Приложения Container интегрируются с Azure Kubernetes Service (AKS) для расширенных возможностей работы в сети и мониторинга. Он также обеспечивает беспрепятственное развертывание и управление контейнеризированными приложениями без необходимости управления базовой инфраструктурой. Он поддерживает как приложения, основанные на HTTP, так и приложения, работающие на основе событий, поэтому идеально подходит для создания современных, масштабируемых и устойчивых облачно-нативных приложений.
Эта статья предполагает, что вы, как архитектор, изучили дерево принятия решений для вычислений и выбрали Container Apps в качестве вычислительной платформы для вашей рабочей нагрузки. В этой статье приведены рекомендации по архитектуре, сопоставленные с принципами Well-Architected платформы.
Область технологий
В этом обзоре рассматриваются взаимосвязанные решения для следующих ресурсов Azure:
- Container Apps
Reliability
Цель компонента надежности заключается в обеспечении непрерывной функциональности путем создания достаточной устойчивости и возможности быстрого восстановления после сбоев.
принципы проектирования надежности обеспечивают высокоуровневую стратегию проектирования, применяемую для отдельных компонентов, системных потоков и системы в целом.
Контрольный список разработки рабочей нагрузки
Начните стратегию проектирования на основе контрольного списка для проверки надежности. Определите его соответствие требованиям вашего бизнеса, не забывая при этом о производительности и надежности ваших приложений. Расширьте стратегию, чтобы включить дополнительные подходы по мере необходимости.
Выберите подходящие конфигурации SKU. Выберите SKU среды, которое соответствует требованиям к ресурсам и производительности ваших контейнерных приложений.
Оцените, какие особенности платформы требуют ваши целевые показатели надежности. Выделенные профили рабочей нагрузки предлагают изоляцию вычислений и более крупные ограничения ресурсов. Премиум ingress выделяет ресурсы прокси с настраиваемыми тайм-аутами, чтобы предотвратить заторы.
Создание избыточности для повышения устойчивости. Для приложений, доступных для входящего трафика (HTTP или TCP), используйте по крайней мере три реплики, чтобы обеспечить доступность. Чтобы свести к минимуму холодный запуск, настройте минимальное количество постоянно готовых реплик.
Используйте зоны доступности как часть вашей стратегии устойчивости, чтобы повысить доступность при развертывании в одном регионе. Многие регионы Azure предоставляют зоны доступности. Зоны расположены достаточно близко, чтобы обеспечить соединение между ними с низкой задержкой, но достаточно далеко друг от друга, чтобы свести к минимуму риск локальных сбоев, затрагивающих несколько зон.
Для критически важных рабочих нагрузок разверните среды Container Apps в нескольких регионах и используйте Azure Front Door или Диспетчер трафика Azure для управления трафиком. Эти услуги помогают обеспечить высокую доступность и непрерывность бизнеса. В случае регионального сбоя вы можете автоматически перенаправить трафик в дополнительный регион, чтобы свести к минимуму время простоя и потерю данных.
Реализуйте горизонтальное автомасштабирование. Настройте автомасштабирование с помощью правил масштабирования, основанных на HTTP-запросах, TCP-подключениях или пользовательских метриках, таких как пороговые значения ЦП и памяти. Вы можете определить пользовательские метрики в Служебная шина Azure, Центры событий Azure, Apache Kafka и Azure Managed Redis. Используйте автоскалирование для динамического управления нагрузками и поддержания высокой доступности в периоды пиковых нагрузок.
Убедитесь, что ваши контейнерные приложения могут обслуживать запросы в рамках вашего целевого уровня обслуживания (SLO) при высокой нагрузке.
Следите за надежностью и общими показателями состояния контейнерного приложения. Сбор журналов и метрик для мониторинга состояния системы, выявления тенденций производительности и надежности, а также для устранения проблем. Для получения дополнительной информации о проектировании решения для мониторинга надежности и состояния вашей рабочей нагрузки см. Моделирование состояния для рабочих нагрузок.
Реализуйте инструменты мониторинга и оповещения. Активируйте инструменты мониторинга, такие как Azure Monitor и OpenTelemetry. Настройте оповещения, чтобы своевременно обнаруживать и реагировать на события, влияющие на надежность.
Настройте проверки состояния. Настройте проверки запуска, готовности и активности для всех сервисов, чтобы следить за состоянием и поддерживать работоспособность приложения.
Настройте механизмы самовосстановления для автоматического перезапуска нежизнеспособных контейнеров. Автоматические перезапуски увеличивают надежность и доступность ваших приложений. Они помогают обеспечить быстрое восстановление после отказов без необходимости ручного вмешательства. Используйте проверки состояния для обнаружения неисправных контейнеров и настройте политики устойчивости для автоматической обработки повторных попыток и перекидных автоматических выключателей.
Рекомендации по настройке
| Recommendation | Benefit |
|---|---|
| Включите поддержку зон доступности для контейнерных приложений, чтобы автоматически распределять реплики по зонам в регионе. Трафик распределяется между репликами. | Если происходит сбой зоны, трафик автоматически перенаправляется на реплики в оставшихся зонах. |
| Определите квоты ресурсов и ограничения. | Предотвращение конкуренции за ресурсы, чтобы гарантировать справедливое распределение и избежать снижения производительности. Используйте мониторинг с течением времени, чтобы наблюдать фактическое использование ресурсов и соответственно корректировать квоты и пределы. |
| Используйте монтирование томов для хранения данных за пределами контейнера в приложениях с сохранением состояния. Чтобы повысить устойчивость данных, используйте зонально-избыточное хранилище Azure (ZRS), которое помогает обеспечить высокий уровень доступности и надежность данных. | Обеспечьте сохранность данных и их целостность при перезапусках и сбоях контейнеров. Используйте ZRS для защиты от потери данных вследствие отказов зоны, что обеспечивает надежное решение для критически важных состояние-зависимых приложений. |
| Реализуйте проверки живучести, готовности и запуска для контейнерных приложений. Механизмы проверки работоспособности обнаруживают и перезапускают контейнеры, находящиеся в неработоспособном состоянии. Рекомендуемые настройки: failureThreshold: 3, periodSeconds: 10, timeoutSeconds: 5, successThreshold: 1 и initialDelaySeconds: 10Датчики готовности обеспечивают получение трафика только здоровыми контейнерами. Рекомендуемые настройки: failureThreshold: 60, periodSeconds: 1, timeoutSeconds: 1, successThreshold: 1 и initialDelaySeconds: 5Пробы запуска предотвращают преждевременные перезапуски, позволяя медленно запускающимся приложениям правильно инициализироваться. Рекомендуемые настройки: failureThreshold: 60, periodSeconds: 1, timeoutSeconds: 1, successThreshold: 1 и initialDelaySeconds: 0 |
Правильная настройка зонда помогает гарантировать, что ваши контейнерные приложения работают бесперебойно и справляются с трафиком. Неправильные настройки зондов могут привести к незапланированным перезагрузкам или простоям. |
| Используйте встроенные функции отслеживания контейнерных приложений, такие как потоковая передача журналов, консоль контейнеров и метрики и оповещения Azure Monitor, чтобы обеспечить упреждающий мониторинг и эффективную отладку. | Приложения Container Apps предоставляют расширенные возможности для наблюдения, включая интеграцию с информационной панелью .NET Aspire и метриками Java. Эти инструменты обеспечивают расширенные возможности для анализа основных экосистем. Вы также можете использовать сборщик OpenTelemetry для всестороннего распределенного отслеживания и сбора метрик. Эти функции повышают надежность приложения, поскольку вы можете быстро выявлять и устранять проблемы. |
| Реализуйте политики устойчивости обнаружения служб, такие как повторные попытки, тайм-ауты и выключатели, для упреждающего предотвращения, обнаружения и восстановления после сбоев запросов на обслуживание. | Улучшите надежность ваших контейнерных приложений, обеспечив более плавную и устойчивую межсервисную связь. |
| Реализуйте горизонтальное автоматическое масштабирование с помощью правил масштабирования, основанных на HTTP-запросах, TCP-подключениях или пользовательских метрик, таких как пороговые значения ЦП и памяти. Вы можете определить пользовательские метрики в служебная шина, Event Hubs, Apache Kafka и Управляемом Redis Azure. | Рабочая нагрузка может динамически распределять нагрузки и поддерживать высокий уровень доступности в периоды пикового использования. |
| Включите входящий трафик класса Premium для рабочих нагрузок, требующих высокой пропускной способности или расширенной маршрутизации HTTP. Настройте выделенные ресурсы, пользовательские тайм-ауты и параметры масштабирования для прокси-сервера входящего трафика. | Предотвращение узких мест системы при высокой нагрузке, гарантируя, что прокси-сервер входа имеет достаточные ресурсы. Настраиваемые таймауты и ограничения на заголовки помогают избежать обрывов соединений и отказа запросов во время пиков трафика. |
Security
Цель компонента "Безопасность" — обеспечить конфиденциальности, целостности и доступности гарантии рабочей нагрузки.
Принципы проектирования безопасности предоставляют стратегию проектирования высокого уровня для достижения этих целей, применяя подходы к техническому дизайну приложений-контейнеров.
Контрольный список разработки рабочей нагрузки
Начните стратегию проектирования, основываясь на контрольном списке проверки проектирования для безопасности, и выявляйте уязвимости и меры управления для улучшения состояния безопасности. Расширьте стратегию, чтобы включить дополнительные подходы по мере необходимости.
Просмотрите базовые показатели безопасности. Чтобы улучшить позицию безопасности вашей рабочей нагрузки, ознакомьтесь с базовым уровнем безопасности для контейнерных приложений.
Интеграция с Microsoft Entra ID для управления удостоверениями и доступом. Используйте управление доступом на основе ролей (RBAC) с идентификатором Microsoft Entra ID для доступа с минимальными привилегиями.
Используйте управляемые удостоверения с идентификатором Microsoft Entra ID для безопасного доступа к ресурсам Azure без учетных данных.
Реализуйте сегментацию и управление сетью. Разверните окружения приложений в контейнерах в частной сети и используйте внутренний режим входа для изоляции от публичного интернета.
Контролируйте исходящий трафик. Чтобы предотвратить утечку данных, интегрируйте среду своих контейнерных приложений в настраиваемую виртуальную сеть с маршрутами, определяемыми пользователем, для повышения безопасности исходящего трафика.
Использование частных конечных точек. Настройте частные конечные точки для среды "Приложения контейнеров", чтобы гарантировать, что входящий трафик никогда не проходит через общедоступный Интернет. Отключите доступ к общедоступной сети на уровне среды при использовании частных конечных точек. Такой подход обеспечивает более сильную сетевую изоляцию, чем внутренний режим входящего трафика.
Поддерживайте укреплённую цепочку поставок программного обеспечения нагрузки. Реализуйте сканирование с учетом контейнеров в ваших безопасных конвейерах непрерывной интеграции и доставки (CI/CD). Эта функция обнаруживает уязвимости и помогает обеспечивать целостность образов ваших контейнеров. Для получения дополнительной информации см. Containers Secure Supply Chain.
Уменьшите поверхность атаки. Защитите контейнерные образы и удалите неиспользуемые компоненты. Используйте лёгкие и минимальные базовые образы, такие как образы Alpine и Chiselled Ubuntu.
Интеграция с Microsoft Defender. Используйте Microsoft Defender для контейнеров, чтобы сканировать изображения в Реестр контейнеров Azure.
Изолировать выполнение ненадежного кода. Для рабочих нагрузок, которые выполняют код, отправленный пользователем или ИИ, используйте динамические сеансы для выполнения кода в безопасных эфемерных песочницах. Динамические сеансы используют изоляцию Hyper-V для строгого разделения на уровне ядра между сеансами. Каждый сеанс автоматически уничтожается после использования, что предотвращает утечку данных между выполнением.
Шифруйте данные в состоянии покоя и данные при передаче. Используйте современные методы, соответствующие отраслевым стандартам, для обеспечения конфиденциальности и целостности.
Используйте Azure Key Vault. Храните конфиденциальные значения конфигурации и секреты в Key Vault для защиты от несанкционированного доступа.
Включите взаимную безопасность транспортного уровня (mTLS). Используйте mTLS для аутентификации и шифрования трафика между службами. Эта функция проверяет обе стороны, что повышает безопасность.
Принудительное применение ПРОТОКОЛА HTTPS. Настройте прокси-сервер Envoy для перенаправления всего HTTP-трафика на HTTPS. Конфигурация по умолчанию для Envoy -
allowInsecure: false.Реализовать стратегию мониторинга безопасности. Записывайте подробные журналы для мониторинга и аудита. Отправляйте журналы систем и консолей в рабочее пространство Log Analytics, Event Hubs или в решение, не принадлежащее Microsoft, для целей мониторинга и аудита. Очистите журналы от конфиденциальных данных. Журналы консоли поступают из потоков
stderrиstdoutв приложении.Намеренно применять профили конфиденциальной рабочей нагрузки. Используйте профили конфиденциальной рабочей нагрузки для рабочих нагрузок, которые должны защищать используемые данные, например отрегулированную обработку или вывод конфиденциальных моделей. Перед развертыванием проверьте аттестацию, региональную доступность, совместимость образов и операционные регламенты, поскольку доверенные среды выполнения накладывают ограничения на развертывание и поддержку.
Рекомендации по настройке
| Recommendation | Benefit |
|---|---|
| Используйте управляемые удостоверения для доступа к защищенным ресурсам Microsoft Entra ID. Назначьте управляемую идентичность вашему приложению-контейнеру, чтобы получить доступ к ресурсам Azure, защищенным Microsoft Entra ID, таким как учетная запись хранения или ключевой хранилище, без необходимости использования ключей или паролей. | Централизуйте управление идентификацией и устраните необходимость в ручном управлении учетными данными. Упростите безопасный доступ к ресурсам Azure. |
| Разверните приложения-контейнеры в частной сети , чтобы интегрировать их в существующую виртуальную сеть. Используйте такие функции, как подключение к частным приложениям, присоединение групп безопасности сети (NSG) и взаимодействие ресурсов через частный IP-адрес. | Обеспечьте изоляцию от общего интернета и обеспечьте безопасное взаимодействие между контейнерными приложениями и другими сетевыми ресурсами. |
| Используйте частные конечные точки в средах профиля рабочей нагрузки , чтобы ограничить входящий доступ к частному IP-адресу в виртуальной сети. Отключите доступ к общедоступной сети на уровне среды. | Убедитесь, что трафик никогда не проходит через общедоступный Интернет, что обеспечивает более сильную сетевую изоляцию, чем внедрение виртуальной сети в одиночку. Снизьте риск атак из Интернета и соответствуйте требованиям безопасности для подключения с исключительно частным доступом. |
| Используйте Key Vault для управления сертификатами и секретами приложений с повышенной безопасностью. Key Vault хранит сертификаты и другие секреты приложений отдельно от конфигурации вашего приложения. Она также предоставляет журнал аудита доступа, который фиксирует время обновления, получения и замены сертификатов и секретов. | Помогите защитить конфиденциальную информацию, обеспечить соблюдение требований и поддержать безопасное управление секретами, используя возможности ведения журнала и ротации сертификатов. |
| Используйте включенный шлюз приложений Azure с веб-аппликационным файрволом, чтобы помочь защитить HTTP и HTTPS трафик, когда вы публикуете ваше контейнерное приложение через реверсивный прокси. Межсетевой экран веб-приложений сканирует входящий HTTP-трафик на предмет потенциальных атак в рамках Проекта по обеспечению безопасности веб-приложений (OWASP). | Повышайте безопасность, защищая от распространенных уязвимостей веба и обеспечивая централизованное управление трафиком. |
| Проверка подлинности с помощью идентификатора Microsoft Entra в реестре контейнеров , чтобы избежать использования учетных данных администратора. Вы можете контролировать доступ с помощью управления доступом на основе ролей (RBAC). | Включите детализированное управление доступом через РКД для управления образами контейнеров, что помогает обеспечить безопасную аутентификацию без использования учетных данных. |
| Используйте правила NSG, чтобы помочь защитить трафик, который обращается к внутренней точке входа ваших контейнерных приложений. Правила NSG обеспечивают более детальный контроль над тем, какие виртуальные сети могут взаимодействовать с контейнерными приложениями. | Улучшите безопасность сети, ограничив доступ только к доверенным сетям, что минимизирует поверхности атак. |
| Управляйте исходящим трафиком с помощью определяемых пользователем сетевых маршрутов. Управляйте тем, как контейнеры взаимодействуют с ресурсами за пределами контейнерной среды. Вы можете направлять трафик на Брандмауэр Azure, Azure NAT Gateway или на устройство, не относящееся к продуктам Microsoft. | Обеспечьте контролируемый и безопасный исходящий трафик, поддерживающий продвинутые политики маршрутизации и инспекции. |
| Настройте параметры ведения журнала для отправки журналов в рабочую область Log Analytics, Центры событий или решение, отличное от Майкрософт. | Поддерживайте централизованный мониторинг, диагностику и аудит, обеспечивая при этом соответствие политикам обработки конфиденциальных данных. |
| Используйте динамические сеансы для запуска непроверенного или сгенерированного ИИ кода в изолированных, временных песочницах. Настройте пулы сеансов с соответствующими периодами охлаждения и параметрами сетевой изоляции. Назначьте роль исполнителя сеансов приложений контейнеров Azure через RBAC для управления доступом к API пула сеансов. | Обеспечьте надежную изоляцию Hyper-V для каждого сеанса выполнения кода, что предотвращает влияние вредоносного кода на хост или другие сеансы. Автоматическая очистка сеанса устраняет риск утечки данных между выполнением. |
Оптимизация затрат
Оптимизация затрат фокусируется на обнаружении шаблонов расходов, приоритете инвестиций в критически важные области и оптимизации в других в соответствии с бюджетом организации при выполнении бизнес-требований.
Принципы проектирования оптимизации затрат обеспечивают высокоуровневую стратегию проектирования для достижения этих целей и принятия необходимых компромиссов в техническом проектировании, связанном с контейнерными приложениями и их средой.
Контрольный список разработки рабочей нагрузки
Начните стратегию проектирования на основе контрольного списка оценки для оптимизации затрат при инвестициях. Настройте структуру, чтобы рабочая нагрузка соответствовала бюджету, выделенному для рабочей нагрузки. Проект должен использовать правильные возможности Azure, отслеживать инвестиции и находить возможности для оптимизации с течением времени.
Выберите подходящие тарифные планы. Выбирайте наиболее экономичные тарифные планы для приложений-контейнеров в зависимости от требований к рабочей нагрузке и ожидаемых шаблонов использования.
Воспользуйтесь планом экономии Azure для вычислений, заключив обязательство по фиксированной почасовой ставке на один или три года. Используйте план накоплений, чтобы сэкономить до 17% по сравнению с тарифами оплаты по мере использования. Оптимизируйте ваш бюджет и сократите общие расходы для долгосрочных, предсказуемых рабочих нагрузок.
Оптимизируйте затраты на компоненты рабочей нагрузки. Регулярно пересматривайте и корректируйте распределение ЦП и памяти, чтобы соответствовать потребностям ваших приложений. Эта практика предотвращает избыточное выделение ресурсов и минимизирует затраты.
Используйте уровни управляемых дисков. Когда вы используете монтирование томов, выбирайте соответствующие уровни и размеры управляемых дисков, чтобы оптимизировать затраты на хранение для постоянных данных. Платите только за то, что вам нужно.
Используйте упрощенные и оптимизированные образы контейнеров, чтобы улучшить время запуска и эффективность использования ресурсов, что снижает затраты на хранение и подключение к сети.
Оптимизация затрат на рабочую нагрузку GPU. Для рабочих нагрузок искусственного интеллекта и машинного обучения используйте бессерверные GPU с помесячной оплатой за каждую секунду использования и возможностью масштабирования до нуля для устранения затрат в период простоя. Выберите соответствующий тип GPU на основе требований к рабочей нагрузке. Используйте экономичные графические процессоры T4 для вывода и упрощенных задач. Зарезервировать графические процессоры A100 для обучения больших моделей и сценариев с высоким уровнем вычислений.
Оптимизируйте расходы на масштабирование. Настройте политики авто масштабирования для автоматического уменьшения ресурсов в периоды низкого спроса и увеличения в пиковое время. Эта практика обеспечивает эффективное использование ресурсов.
Оптимизируйте затраты на сетевые ресурсы. Оптимизируйте сетевые пути для минимизации затрат на передачу данных, особенно для приложений с большими объемами пропускной способности.
Используйте инструменты управления затратами. Используйте инструменты Управление затратами Microsoft для отслеживания и анализа расходов, устанавливайте бюджеты, создавайте оповещения о стоимости и внедряйте единые теги для всех ресурсов.
Эти инструменты обеспечивают детальную видимость затрат на облачные услуги, помогают выявлять возможности для экономии, обеспечивают соблюдение бюджетных ограничений и позволяют тщательно отслеживать и отчитываться о затратах, связанных с конкретными рабочими нагрузками, приложениями и средами.
Рекомендации по настройке
| Recommendation | Benefit |
|---|---|
| Регулярно просматривайте и настраивайте ресурсы ЦП, выделения памяти и другие метрики в соответствии с фактическими потребностями приложений. | Предотвращайте избыточное предоставление ресурсов и сокращайте ненужные затраты, обеспечивая оптимальное соответствие ресурсов рабочим нагрузкам. |
| Реализуйте правила автомасштабирования до нуля для приложений, которые не требуют постоянного выполнения. | Исключите расходы в периоды бездействия, что гарантирует, что вы будете платить за ресурсы только тогда, когда они вам нужны. Такой подход значительно снижает затраты на приложения с переменчивыми или нечастыми шаблонами использования. |
| Выберите подходящие уровни управляемых дисков для приложений с сохранением состояния. При выборе используйте производительность и емкость хранилища, а также рассмотрите возможность использования зарезервированных дисков для прогнозируемых рабочих нагрузок. | Убедитесь, что вы платите только за необходимую производительность хранилища, что позволяет избежать чрезмерных затрат на избыточное выделение ресурсов хранения. Зарезервированные диски могут обеспечить значительную экономию средств при долгосрочных требованиях к хранилищу, предлагая скидки по сравнению с оплатой по мере использования. |
| Используйте бессерверные графические процессоры с масштабированием до нуля для рабочих нагрузок искусственного интеллекта и машинного обучения, имеющих переменную или всплеск спроса. Выберите соответствующий тип GPU, например T4 для вывода или A100 для обучения. | Исключите затраты на GPU в период простоя с оплатой за каждую секунду и автоматическим масштабированием до нуля. Избегайте чрезмерной подготовки, сопоставляя тип GPU с интенсивностью рабочей нагрузки, что может значительно сократить затраты на вычислительные ресурсы для рабочих нагрузок ИИ. |
| Оцените стоимость входящего трафика класса Premium и частных конечных точек в соответствии с вашими шаблонами трафика и требованиями к безопасности. Эти функции обусловливают дополнительные расходы по сравнению с входом по умолчанию. | Избегайте ненужных затрат, используя сетевые функции уровня «Премиум» только тогда, когда это оправдано требованиями к трафику рабочих нагрузок или требованиями соответствия. |
Операционное превосходство
Операционное совершенство в основном сосредоточено на процедурах, касающихся практик разработки , наблюдаемости и управления релизами.
Принципы проектирования операционной эффективности обеспечивают высокоуровневую стратегию проектирования для достижения этих целей в соответствии с операционными требованиями рабочей нагрузки.
Контрольный список разработки рабочей нагрузки
Начните разработку стратегии на основе контрольного списка проверки проекта для повышения операционной эффективности , чтобы определить процессы наблюдения, тестирования и развертывания, связанные с контейнерными приложениями.
Реализуйте подход к развертыванию инфраструктуры как кода (IaC). Реализуйте развертывание на основе шаблонов с помощью таких инструментов, как Bicep или Terraform. Убедитесь, что все развертывания повторяемы, отслеживаемы и сохраняются в репозитории исходного кода.
Автоматизируйте развертывание инфраструктуры и рабочих нагрузок. Используйте стандартные программные решения для управления, интеграции и автоматизации развертывания ваших рабочих нагрузок.
Настройте конвейеры развертывания для повторного развертывания среды в другом регионе в случае регионального сбоя. Такой подход помогает быстро восстанавливать и повторно развертывать критически важные данные и конфигурации в другом регионе, что расширяет возможности аварийного восстановления и сводит к минимуму время простоя во время региональных сбоев.
Создайте автоматизированные процессы для настройки ваших сред с необходимыми конфигурациями и развертыванием, используя CI/CD конвейеры.
Реализуйте комплексную стратегию мониторинга. Настройте параметры диагностики для сбора журналов, метрик и диагностических данных. Используйте такие инструменты, как Azure Monitor и Application Insights, для отслеживания состояния и производительности приложений, выявления тенденций в производительности и надежности, а также для устранения неполадок.
Эмитируйте данные телеметрии для рабочих нагрузок. Разработайте свои рабочие нагрузки так, чтобы они генерировали телеметрические данные, включая статусы доступности и готовности, для облегчения мониторинга и устранения неисправностей.
Отслеживайте показатели производительности. Непрерывно отслеживайте ключевые показатели эффективности, такие как использование ЦП, памяти и сети, чтобы выявлять возможности для оптимизации затрат и повышения эффективности работы.
Используйте управляемый агент OpenTelemetry. Разрешить агенту OpenTelemetry выдавать стандартизированные трассировки, метрики и журналы без развертывания пользовательского сборщика и управления ими. Управляемый агент поддерживает несколько направлений экспорта и сокращает рабочее бремя обслуживания инфраструктуры наблюдаемости.
Внедрить хаос-инжиниринг. Применяйте практики инженерии хаоса, используя такие инструменты, как Azure Chaos Studio, чтобы выявлять потенциальные проблемы с надежностью в вашей среде Container Apps. Проведите эксперименты, чтобы убедиться, что ваши приложения могут выдерживать неожиданные сбои. Проводите нагрузочное тестирование производительности с помощью таких инструментов, как Нагрузочное тестирование Azure, чтобы убедиться, что правила масштабирования работают должным образом и не вызывают сбоев у клиентов.
Реализуйте согласованное добавление тегов к ресурсам во всех контейнерах, приложениях и других ресурсах рабочей нагрузки. Последовательная маркировка способствует эффективному управлению ресурсами, контролю затрат и автоматизации.
Обеспечьте управление рабочей нагрузкой. Политика Azure помогает обеспечивать постоянное соблюдение организационных стандартов, автоматизирует применение политик и предоставляет централизованную видимость и контроль над ресурсами вашей нагрузки.
Стандартизация путей экспорта телеметрии. Используйте управляемые целевые точки экспорта для данных OpenTelemetry, чтобы подключить Container Apps к таким платформам, как New Relic, Dynatrace, Elastic и другим поддерживаемым серверным системам без необходимости запускать пользовательские сборщики. Определите маршрутизацию, семплирование, хранение и зоны ответственности для каждого назначения, чтобы наблюдаемость оставалась согласованной, а затраты — под контролем во всех средах.
Планируйте журналирование больших объемов входящего трафика. Включите
ContainerAppHTTPLogsтолько для сценариев, требующих устранения неполадок на уровне запроса задержки, повторных попыток или сбоев маршрутизации. Определите пороговые значения хранения, редактирования и затрат перед развертыванием, так как журналы HTTP с большим объемом могут увеличить объем хранилища, конфиденциальности и анализа затрат.
Рекомендации по настройке
| Recommendation | Benefit |
|---|---|
| Сохраните конфигурации среды контейнерных приложений как IaC и настройте конвейеры развертывания для повторного развертывания в другом регионе, если происходит региональный сбой. | Убедитесь, что вы можете быстро восстановить и повторно развернуть критические данные и конфигурации в другом регионе, что улучшает возможности восстановления после катастроф и минимизирует простои в случае региональных сбоев. |
| Используйте редакции для реализации голубо-зеленых развертываний или канареечных развертываний. Требуется, чтобы вы тегировали и версиями контейнерные образы правильно. Вы можете использовать метки на ревизиях для облегчения обмена, например, для проведения тестирования на принятие пользователем или ограниченных предварительных просмотров. |
Сведите к минимуму время простоя и снизьте риски в процессе релизов посредством безопасного развертывания и быстрого отката. |
| Настройка Azure Monitor и Application Insights. | Отслеживайте производительность и состояние ваших контейнерных приложений, предоставляя подробные данные о производительности и надёжности приложений. Используйте эти сведения для проактивного обнаружения и решения проблем. |
| Включите управляемый агент OpenTelemetry для стандартизированной распределенной трассировки, метрик и коллекции журналов. | Уменьшите эксплуатационные затраты на развертывание и обслуживание пользовательского сборщика OpenTelemetry. Предоставляя согласованные данные о наблюдаемости во всех приложениях-контейнерах, не требуя изменений инструментирования на уровне приложения. |
| Для рабочих нагрузок Java используйте управляемый сервер Eureka для Spring и Config Server для Spring вместо самостоятельного хостинга инфраструктуры для обнаружения и конфигурации служб. Настройте высокодоступные кластеры Eureka для рабочих нагрузок. | Уменьшите операционную сложность с помощью полностью управляемых компонентов Java с встроенным управлением жизненным циклом. Устраняйте необходимость исправления, масштабирования и отслеживания самостоятельно развернутых экземпляров сервера Eureka и Config Server. |
Эффективность производительности
Эффективность производительности заключается в поддержании пользовательского опыта даже в условиях увеличения нагрузки за счёт управления ресурсами. Стратегия включает масштабирование ресурсов, определение потенциальных узких мест и оптимизацию для достижения пиковой производительности.
Принципы проектирования эффективности производительности предлагают высокоуровневую стратегию для достижения этих целей по емкости с учетом ожидаемого использования.
Контрольный список разработки рабочей нагрузки
Начните вашу стратегию проектирования, основываясь на контрольном списке обзора проектирования для повышения производительности для определения базового уровня, исходя из ключевых показателей эффективности для контейнерных приложений.
Разработайте подробный план емкости, чтобы убедиться, что ваши контейнерные приложения имеют достаточные ресурсы для обработки переменных нагрузок, избегая при этом избыточного выделения ресурсов. Планирование емкости помогает оптимизировать затраты и производительность.
Регулярно обновляйте свой план, чтобы документировать корректное распределение ресурсов, настройки автомасштабирования и стратегии переключения на резерв для ваших контейнерных приложений. Этот подход обеспечивает возможность быстро восстановить и развернуть критичные данные и конфигурации в другом регионе, что улучшает возможности по восстановлению после аварий и минимизирует время простоя в случае региональных сбоев.
Включите автомасштабирование. Настройте политики автоматического масштабирования, чтобы автоматически регулировать количество экземпляров контейнеров в зависимости от текущего спроса. Это обеспечивает оптимальную производительность в периоды пиковых и непиковых нагрузок.
Оптимизация выделения ресурсов. Постоянно контролируйте и корректируйте распределение CPU и памяти на основе показателей производительности, чтобы обеспечить эффективное использование ресурсов и предотвратить чрезмерное выделение.
Проводите нагрузочное тестирование. Проводите регулярное нагрузочное тестирование, чтобы оценить производительность и масштабируемость ваших контейнерных приложений при различных условиях. Тестирование помогает гарантировать, что приложения в контейнерах могут справляться с ожидаемыми уровнями трафика.
Отдельные рабочие нагрузки. Размещайте критические и чувствительные рабочие нагрузки в отдельных средах Container Apps, чтобы избежать проблем с шумными соседями. Распределите рабочую нагрузку по нескольким средам, чтобы гарантировать, что критически важные приложения имеют выделенные ресурсы. Этот метод также гарантирует, что требования к производительности менее критически важных приложений не влияют на критически важные приложения.
Выберите соответствующие профили рабочей нагрузки GPU для рабочих нагрузок с интенсивным вычислением. Для инференса искусственного интеллекта, машинного обучения и рабочих нагрузок высокопроизводительных вычислений выберите бессерверные GPU для переменных по нагрузке требований или выделенные профили рабочих нагрузок GPU для устойчивых и чувствительных к задержке рабочих нагрузок. Выберите подходящий тип GPU, например T4 для вывода или A100 для обучения, в зависимости от ваших требований к производительности. Свести к минимуму задержку холодного запуска для бессерверных GPU с помощью образов контейнеров, потоковой передачи артефактов и настройки минимального количества реплик.
Используйте премиальный вход для рабочих нагрузок, чувствительных к задержке. Настройте входящий трафик класса Premium для выделения выделенных вычислительных ресурсов прокси-серверу входящего трафика. Настройте пользовательские значения времени ожидания и параметры масштабирования, чтобы предотвратить ограничение запросов со стороны слоя входящих запросов при высокой параллелизации.
Рекомендации по настройке
| Recommendation | Benefit |
|---|---|
| Настройте политики автомасштабирования , чтобы автоматически настроить количество экземпляров контейнеров в ответ на требования к ресурсам. | Помогите поддерживать производительность приложения и экономическую эффективность. Убедитесь, что ресурсы доступны, когда это необходимо, и сохраняются, когда они не нужны. Используйте Нагрузочное тестирование Azure для проведения нагрузочных тестов и при необходимости корректируйте политики авто масштабирования. |
| Используйте выделенный уровень профилей рабочей нагрузки для приложений, требующих прогнозируемой производительности и гарантированного выделения ресурсов. | Предоставьте выделенные ресурсы для критически важных приложений, что обеспечивает стабильную производительность и снижает риск конфликтов ресурсов. |
| Используйте пользовательские метрики масштабирования, такие как метрики на основе данных, относящихся к приложению, для принятия решений об автомасштабировании. | Убедитесь, что масштабирование осуществляется на основе актуальных требований рабочей нагрузки, что повышает эффективность и отзывчивость ваших контейнерных приложений. |
| Используйте серверлесс графические процессоры для выполнения вывода данных ИИ и рабочих нагрузок машинного обучения, которые имеют скачкообразные колебания спроса. Используйте выделенные профили рабочей нагрузки GPU для устойчивых рабочих нагрузок GPU с учетом задержки. Выберите тип GPU , соответствующий вашим требованиям к производительности. | Убедитесь, что рабочие нагрузки с интенсивным вычислением имеют доступ к соответствующему ускорению GPU. Бессерверные GPU обеспечивают эластичное масштабирование для изменяющегося спроса, а выделенные конфигурации обеспечивают стабильную производительность с низкой задержкой для устойчивых рабочих нагрузок. |
| Включите входящий трафик уровня "Премиум " и настройте выделенные ресурсы, пользовательские тайм-ауты и масштабирование прокси-сервера входящего трафика в рабочих нагрузках, которые чувствительны к задержке или высокой пропускной способности. | Устраните узкие места в прокси-серверах входного трафика, которые могут увеличить задержку отклика при высокой параллельности. Выделенные ресурсы входящего трафика помогают обеспечить согласованную пропускную способность запросов и прогнозируемую задержку. |
| Используйте монтажи томов NFS Файлы Azure с Premium-хранилищем для Linux-рабочих нагрузок с интенсивным вводом-выводом, которым требуется общее хранилище с низкой задержкой. | Обеспечивает более высокую пропускную способность ввода-вывода и низкую задержку, чем подключение SMB для контейнеров под управлением Linux, что повышает производительность рабочих нагрузок, которые часто считывают или записывают данные. |
Политики Azure
Azure предоставляет обширный набор встроенных политик, связанных с контейнерами приложений и их зависимостями. Некоторые из предыдущих рекомендаций можно проверять с помощью политики Azure. Например, можно проверить, можно ли:
Необходимо включить параметры диагностики: Включите ведение журнала по группам категорий для сред контейнерных приложений (
microsoft.app/managedenvironments), чтобы отправлять информацию в хранилище. Этот параметр гарантирует, что хранилище будет согласованно собирать журналы и метрики для мониторинга, устранения неполадок и обеспечения соответствия.Аутентификация для приложений в контейнерах должна быть включена: Включите аутентификацию, чтобы предотвратить анонимные HTTP-запросы, и аутентифицируйте запросы с помощью токенов до того, как они попадут в среду приложений в контейнерах.
В средах контейнеров приложений следует использовать внедрение в сеть: Настройте среды контейнеров приложений с внедрением виртуальной сети, чтобы изолировать их от общедоступного Интернета, обеспечить сетевую интеграцию с ресурсами в локальной среде или другими виртуальными сетями Azure и обеспечить детальный контроль над сетевым трафиком.
Доступ к публичной сети должен быть отключен: Отключите доступ к публичной сети, чтобы улучшить безопасность, предоставляя доступ к среде контейнерных приложений через внутренний балансировщик нагрузки. Этот подход блокирует доступ к интернету для всех контейнерных приложений в рамках среды.
Доступ к внешней сети должен быть отключен: Применяйте внутренний входящий поток, чтобы обеспечить ограничение входящей связи для контейнерных приложений только на вызывающие источники внутри среды приложений контейнеров.
Необходимо использовать HTTPS: Убедитесь, что приложения в контейнерах доступны только через HTTPS, чтобы защитить данные в процессе передачи от атак на сетевом уровне.
Должны быть включены управляемые идентификации: Требовать управляемые идентификации для сред приложений контейнера, чтобы безопасно аутентифицироваться в любом ресурсе, который поддерживает аутентификацию с использованием Microsoft Entra ID.
Для всестороннего управления ознакомьтесь с встроенными определениями Политика Azure для контейнерных приложений и другими политиками, которые могут повлиять на безопасность сетей.
Рекомендации Помощника по Azure
Помощник по Azure — это персонализированный облачный консультант, который поможет вам следовать рекомендациям по оптимизации развертываний Azure.
Дополнительные сведения см. в разделе Помощника по Azure.
Пример архитектуры
Основополагающая архитектура, демонстрирующая ключевые рекомендации: Microservices with Контейнеры приложений Azure.