Как Windows Azure выполняет балансировку нагрузки? - PullRequest
20 голосов
/ 14 февраля 2010

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

Многие приложения используют сеансы или данные в памяти для повышения производительности. С Azure я не уверен, возможно ли это, потому что (из того, что я могу сказать), у Azure нет никаких «липких» сессий. Даже если бы это была не сеансовая, а просто балансировка по IP, этого было бы достаточно для многих приложений.

Итак, вопрос дня - как именно Azure выполняет балансировку нагрузки?

Ответы [ 5 ]

15 голосов
/ 11 ноября 2010

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

7 голосов
/ 11 ноября 2014

Несмотря на то, что раньше балансировка нагрузки была циклической, Microsoft изменила способ распределения нагрузки, как описано в этом блоге:

http://azure.microsoft.com/blog/2014/04/08/microsoft-azure-load-balancing-services/

Microsoft Azure Load Balancer использует 5 кортежей (исходный IP-адрес, исходный порт, IP-адрес назначения, порт назначения, тип протокола) для вычисления хэша, который используется для сопоставления трафика с доступными серверами

7 голосов
/ 15 февраля 2010

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

Для таких вещей, как состояние сеанса с традиционным приложением asp.net, данные сеанса будут храниться в табличном хранилище, которое затем будет доступно всем вашим экземплярам веб-ролей. Это упоминается здесь .

Windows Azure обеспечивает балансировку нагрузки для каждой общедоступной конечной точки, что позволяет масштабировать приложение до необходимого количества экземпляров. Вы должны убедиться, что ваше приложение не имеет состояния (или хранит состояние в общей области между экземплярами, такими как BLOB-объекты или таблицы). Единственными конечными точками, не сбалансированными по нагрузке, являются внутренние конечные точки. Таким образом, если вы осуществляете какой-либо тип взаимодействия между ролями, например, от веб-роли до одного из нескольких экземпляров рабочих ролей, на которых размещается служба wcf на внутренней конечной точке, вам нужно будет выполнить балансировку нагрузки между этими экземплярами.

3 голосов
/ 30 июня 2013

Я понимаю, что это старый вопрос, но мы решили проблему Affinity, используя Windows Web Farm Framework и создав слой прокси-серверов, которые поддерживают Affinity для наших веб-серверов.

http://technet.microsoft.com/en-us/library/jj129385.aspx

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

Брандмауэр: Azure Load Balancer (циклический перебор на прокси-серверы)

Proxy: Application Request Routing (ARR) для балансировки нагрузки с помощью Affinity для веб-серверов, статического и динамического сжатия и SSL. Разгрузка SSL на прокси-серверы дает веб-серверам дополнительное процессорное время. Кроме того, Web Farm Framework отлично подходит для масштабирования, поскольку он управляет каждым дополнительным веб-сервером, копирует файлы приложений, отслеживает состояние, переключает онлайн / офлайн и т. Д. С его помощью можно управлять более чем 10 000 веб-серверами.

Веб: обычные веб-серверы (не требуется SSL, сжатие и т. Д.).

База данных: обычные серверы баз данных или Azure SQL.

Microsoft рекомендует иметь как минимум два сервера ARR (Proxy). Некоторые люди будут таращиться на дополнительные деньги в Azure. Однако мы обнаружили, что микроэкземпляры (15 долл. США) более чем подходят в качестве прокси-серверов, если скорость 5 Мбит достаточна.

Другая альтернатива - настроить два сервера ARR в качестве малых экземпляров (65 млн. Долл. США при 100 мбит), но отключить один из них и включить его только в пиковые периоды или при выходе из строя первого сервера (например, возможно, запланировать запуск второго сервера ARR). при первом запуске обновлений Windows и остановке через час).

Это неудобно в настройке, но как только оно работает, оно становится очень приятным!

ПРИМЕЧАНИЕ. В документации WFF есть некоторая путаница с терминами ARR, прокси и контроллером. Они обычно все одно и то же. Запомните это, если попытаетесь настроить его.

1 голос
/ 14 февраля 2010

Я думаю, вы, возможно, ищете Windows Azure AppFabric и Velocity, в частности. Взгляните на один из сеансов PDC для получения дополнительной информации.

...