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


перспектива Well-Architected Framework в Azure Load Balancer

Процесс балансировки нагрузки распределяет сетевой трафик в группу двух или более внутренних серверов. Azure Load Balancer — это собственная служба Azure, которая выполняет балансировку нагрузки уровня 4 для протокола пользовательской диаграммы данных (UDP) и протокола TCP. Load Balancer помогает обеспечить низкую задержку и высокий уровень доступности для региональных и глобальных развертываний.

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

Важный

Как использовать это руководство

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

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

Базовая архитектура, демонстрирующая основные рекомендации:
Базовая архитектура виртуальных машин Azure.

область технологий

В этом обзоре рассматриваются взаимосвязанные решения для следующих ресурсов Azure:

  • Балансировщик нагрузки

В этом руководстве основное внимание уделяется SKU Стандартного Балансировщика нагрузки. SKU базового балансировщика нагрузки и балансировщика нагрузки шлюза не рассматриваются в этой статье.

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

Заметка

Для приложений HTTP рекомендуется использовать шлюз приложений Azure или Azure Front Door вместо Load Balancer. Эти альтернативы управляют балансировкой нагрузки и предоставляют такие функции, как брандмауэр веб-приложений (WAF) и завершение соединения по протоколу TLS.

Дополнительные сведения см. в следующем разделе:

Надёжность

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

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

Контрольный список для дизайна

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

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

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

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

  • Поддержка зональной избыточности в архитектуре вашей рабочей нагрузки. Рекомендуем SKU Standard Load Balancer. Она имеет функции надежности, такие как поддержка зоны доступности, распределение трафика в нескольких регионах и возможность обрабатывать больше экземпляров в внутреннем пуле. Эти функции помогают противостоять сбоям на уровне зональных, региональных и отдельных экземпляров виртуальных машин. Помните об ограничениях, таких как максимальный размер внутреннего пула.

    Заметка

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

  • Поддержка региональной избыточности в архитектуре рабочей нагрузки. Вы можете настроить балансировщик нагрузки как глобальный балансировщик нагрузки. В этой настройке балансировщик нагрузки имеет статический общедоступный anycast IP-адрес, который транслируется в несколько регионов. Когда клиенты запрашивают этот IP-адрес, их запросы отправляются в ближайший экземпляр сервера. Load Balancer подключается к региональным подсистемам балансировки нагрузки для эффективного распределения трафика.

  • Оцените изменения в сетевом стеке для поддержки надежного масштабирования. Рассмотрите возможность масштабирования пула серверной части с помощью правил автомасштабирования. Помните о потенциальном исчерпании портов SNAT для исходящего трафика. Чтобы устранить эту проблему, используйте шлюз Azure NAT для более удобной настройки, но имейте в виду, что он не обеспечивает избыточности в зонах доступности. Или используйте балансировщик нагрузки для повышения надежности зон. Дополнительные сведения см. в разделе «Исходящие подключения».

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

    Неудача Смягчение
    Трафик направляется в неработоспособные экземпляры приложений. Мониторинг работоспособности экземпляра рабочей нагрузки. Реализуйте пробы работоспособности HTTP, которые включают проверки зависимостей рабочей нагрузки.
    Трафик направляется в регион с сбоем. Разверните дополнительные экземпляры в другом регионе. Добавьте глобальную подсистему балансировки нагрузки для перенаправления трафика в новый регион.
    База пользователей рабочей нагрузки была расширена для поддержки пользователей в новом регионе, которые отличаются высокой задержкой. Теперь приложение имеет большое количество тайм-аутов и сбоев. Разверните дополнительные экземпляры в новом регионе и добавьте их в конфигурацию службы. В качестве глобальной подсистемы балансировки нагрузки Azure Load Balancer направляет трафик ближе к пользователям.
  • Направлять трафик в здоровые экземпляры. Для проб работоспособности можно использовать ПРОТОКОЛ HTTP или TCP. Чтобы предоставить более подробные ответы о состоянии, попробуйте создать конечную точку HTTP для проверок работоспособности, даже для приложений, отличных от HTTP. Этот подход особенно полезен для проверки зависимостей и баз данных. Без проб HTTP подсистема балансировки нагрузки использует TCP-подключения, которые могут не точно отражать работоспособность виртуальной машины.

    Вы можете настроить пробу работоспособности в Load Balancer. Дополнительные сведения см. в руководстве по проектированию проб работоспособности.

Рекомендации

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

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

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

Безопасность

Цель компонента "Безопасность" — обеспечить конфиденциальности, целостности и доступности гарантии рабочей нагрузки.

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

Контрольный список для дизайна

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

  • Просмотрите базовые показатели безопасности. Чтобы повысить уровень безопасности приложения, которое балансируется с помощью Azure Load Balancer, просмотрите базовые показатели безопасности для балансировщика нагрузки.

  • Защитите внутренние серверы. Развертывание ресурсов в виртуальной сети, которая не имеет прямого доступа к Интернету. Разместите виртуальную сеть за балансировщиком нагрузки. В идеале подсистема балансировки нагрузки должна иметь возможности брандмауэра. Для приложений HTTP рекомендуется использовать шлюз приложений или Azure Front Door. Для приложений, отличных от HTTP, рекомендуется использовать Load Balancer с частным IP-адресом (внутренним подсистемой балансировки нагрузки) и маршрутизировать трафик через брандмауэр Azure для дополнительной безопасности. Дополнительные сведения см. в внутреннем балансировщике нагрузки.

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

    Заметка

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

  • Проектирование приватного подключения. Балансировщик нагрузки работает с Azure Private Link. При распространении ресурсов приложений между виртуальными сетями можно подключить ресурсы в разных виртуальных сетях. Используйте пиринг виртуальной сети или поместите приватный канал перед внутренней подсистемой балансировки нагрузки. Параметр "Приватный канал" обеспечивает более безопасный доступ без использования общедоступного IP-адреса. Он также ограничивает доступ из неписаных сетей.

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

  • Защитите ваше приложение от угроз на периферии сети. Для проектов, использующих Load Balancer в качестве точки входа, реализуйте проверку трафика на уровне конечной точки. Эта конструкция не имеет встроенных функций безопасности, таких как WAF, поэтому необходимо добавить дополнительные меры для защиты приложений HTTP. Для получения дополнительной информации см. публичный балансировщик нагрузки. Кроме того, убедитесь, что вы защищаете конечные точки подсистемы балансировки нагрузки от распределенных атак типа "отказ в обслуживании" (DDoS).

  • Шифрование сетевого трафика. Load Balancer работает на уровне 4 и полностью поддерживает балансировку трафика TCP и UDP. Load Balancer не поддерживает протокол SSL и завершение TLS. Для балансировки нагрузки HTTPS на уровне приложения используйте шлюз приложений.

Рекомендации

Рекомендация Выгода
настроить внешний IP-адрес на частный IP-адрес в виртуальной сети. Этот подход помогает гарантировать, что внешний IP-адрес и виртуальная сеть остаются изолированными от прямого доступа к Интернету. Внутренняя подсистема балансировки нагрузки не может принимать входящий трафик из Интернета, что снижает потенциальные векторы атак.
Защитить общедоступную подсистему балансировки нагрузки с помощью Защиты от атак DDoS Azure. План защиты от атак DDoS обеспечивает расширенную защиту, включая возможности обнаружения, которые отслеживают конечные точки на предмет угроз и признаков злоупотребления.

Оптимизация затрат

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

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

Контрольный список для дизайна

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

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

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

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

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

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

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

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

Рекомендации

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

Оцените, можно ли использовать одно правило для суммирования диапазона портов вместо определения нескольких правил для отдельных IP-адресов.
Например, можно использовать правила NAT для входящего трафика для сопоставления IP-адресов и портов с серверным пулом, а не с отдельными виртуальными машинами.
Консолидированные правила оптимизируют затраты и упрощают операции.

При горизонтальном масштабировании можно добавлять или удалять IP-адреса из внутреннего пула, не изменяя правила.

Операционное превосходство

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

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

Контрольный список для дизайна

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

  • Используйте инфраструктуру в качестве кода. Развертывание и настройка балансировщика нагрузки вместе с другими сетевыми компонентами, такими как виртуальные сети, пиринги сети, частные конечные точки и NSG. Ознакомьтесь с ресурсами типа Microsoft.Network loadBalancers.

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

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

Рекомендации

Рекомендация Выгода
Используйте многомерные метрики.

Чтобы свести к минимуму чрезмерные оповещения, задайте тип агрегирования для Averageи используйте пятиминутное окно данных с пороговым значением 95%. Дополнительные сведения см. в разделе Настройка оповещений для многомерных метрик. Ознакомьтесь с примерами для входящей и исходящей доступности.
Полная аналитика в режиме реального времени и конфигурация оповещений обеспечивают расширенное обнаружение проблем и позволяют оперативно реагировать.
Запись журналов ресурсов. Записи балансировщика нагрузки зависят от схемы событий работоспособности . Журналы предоставляют подробные записи о событиях, чтобы быстро определить и устранить проблемы.
Используйте встроенную панель мониторинга Azure Monitor Insights для Load Balancer. Визуализация упрощает выбор хорошо информированного дизайна и помогает быстро выявлять, диагностировать и устранять проблемы.
Во время операций обслуживания задайте состояние администратора для на Down, чтобы вывести бэкэнд-экземпляр из ротации, не нарушая существующие подключения. Эта конфигурация помогает убедиться, что новые подключения не перенаправляются в внутренний экземпляр, а существующие подключения корректно завершаются. Эта конфигурация состояния администрирования помогает сократить затраты и сложность, когда вы извлекаете виртуальную машину из цикла балансировки нагрузки для регулярного обслуживания или исправления.

В качестве альтернативы можно применить группы безопасности сети для блокировки трафика из пробы работоспособности Load Balancer или IP-адресов и портов клиента. Этот параметр повышает сложность.

Эффективность производительности

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

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

Контрольный список для дизайна

Начните свою стратегию проектирования, основываясь на контрольном списке для проверки эффективности производительности, чтобы определить базовые показатели, основанные на ключевых показателях эффективности для Load Balancer.

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

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

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

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

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

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

  • Сбор данных для анализа производительности. Балансировщик нагрузки может анализировать многомерные метрики для оценки производительности службы. Настройте оповещения для обнаружения изменений производительности. Используйте такие средства, как панель мониторинга Azure Monitor Insights для визуализации состояния балансировщика нагрузки. Убедитесь, что функция работоспособности ресурсов отслеживает состояние работоспособности и остается в курсе проблем с производительностью и сбоями.

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

Рекомендации

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

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

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

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

Политики Azure

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

  • Балансировщики нагрузки, за исключением базовых балансировщиков нагрузки SKU, имеют функции устойчивости для общедоступных IP-адресов на переднем конце.
  • Журналы ресурсов включены для отслеживания действий и событий, происходящих в ресурсах, а также предоставления видимости и аналитических сведений об изменениях.

Для комплексного управления ознакомьтесь со встроенными определениями политики Azure для подсистемы балансировки нагрузки и другими политиками, которые могут повлиять на безопасность распределения трафика.

Рекомендации помощника по Azure

Помощник по Azure — это персонализированный облачный консультант, который поможет вам следовать рекомендациям по оптимизации развертываний Azure. Рекомендации помощника согласованы с основными столпами системы Well-Architected.

Дополнительные сведения см. в рекомендациях Azure Advisor.