Балансировка нагрузки сети: описание технологии

OSzone.net » Microsoft » Windows 2000/NT » Администрирование » Балансировка нагрузки сети: описание технологии
Автор: Microsoft
Иcточник: Microsoft Russia
Опубликована: 16.11.2006

Кластерная технология балансировки нагрузки сети (Network Load Balancing), включенная в операционные системы Microsoft® Windows® 2000 Advanced Server и Datacenter Server, повышает масштабируемость и отказоустойчивость критически важных служб, работающих по протоколам TCP/IP, таких как веб-сервер, службы терминалов, службы виртуальных частных сетей и потокового мультимедийного вещания. Служба балансировки нагрузки, являющаяся компонентом ОС Windows 2000, функционирует на всех узлах кластера и не требует для работы специального оборудования. Для обеспечения масштабируемости производительности служба БНС (Балансировка нагрузки сети, Network Load Balancing) распределяет поток данных, передаваемых по протоколу IP, между несколькими узлами кластера. Помимо этого, служба обеспечивает высокую отказоустойчивость, автоматически обнаруживая сбои узлов и перераспределяя поток данных среди оставшихся. Служба БНС включает функции удаленного управления и позволяет осуществлять чередующиеся обновления для ОС Windows NT® 4.0 и более поздних версий.

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

Архитектура службы балансировки нагрузки сети

Для достижения максимальной пропускной способности и отказоустойчивости служба БНС использует полностью распределенную программную архитектуру. На всех узлах кластера параллельно выполняются одинаковые драйверы службы БНС. Эти драйверы объединяют все узлы в единую сеть для обработки входящего потока данных, поступающих на основной IP-адрес кластера (и на дополнительные IP-адреса многосетевых узлов). Для каждого отдельного узла драйвер выполняет функции фильтра между драйвером сетевого адаптера и стеком протоколов TCP/IP, позволяя распределять поток данных, получаемых узлом. Таким образом, поступающие запросы разделяются и распределяются между узлами кластера.

Рисунок 1 - Узел кластера. Ядро Windows 2000

Служба БНС функционирует как сетевой драйвер, расположенный в сетевой модели ниже высокоуровневых протоколов приложений, таких как HTTP и FTP.

Такая архитектура позволяет добиться максимальной пропускной способности за счет использования широковещательной подсети для доставки поступающих данных на все узлы кластера, которая позволяет обойтись без маршрутизации входящих пакетов. Поскольку фильтрация ненужных пакетов работает быстрее, чем маршрутизация (при которой необходимо получить, проверить, перезаписать и повторно отправить каждый пакет), при использовании службы БНС достигается более высокая пропускная способность сети по сравнению с решениями на основе диспетчеризации. При росте скорости работы сервера и сети пропорционально растет и производительность; таким образом устраняется зависимость от производительности аппаратных решений для распределения нагрузки на основе маршрутизации. Например, в гигабитных сетях служба БНС демонстрирует пропускную способность до 250 Мб/с.

Другим ключевым преимуществом полностью распределенной архитектуры службы БНС являются превосходные показатели отказоустойчивости (N–1) для кластера с N узлами. Напротив, в решениях на основе диспетчеризации обязательно имеется центральный элемент, являющийся «узким местом» системы, для устранения которого необходимо использовать резервный диспетчер, обеспечивая лишь однонаправленное перемещение нагрузки при сбое. Такая защита от сбоя менее эффективна по сравнению с полностью распределенной архитектурой.

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

Полностью конвейерный механизм службы БНС при поступлении пакетов одновременно передает их в стек протоколов TCP/IP и получает пакеты от драйвера сетевого адаптера. Это снижает общее время обработки потока данных и задержку, поскольку стек TCP/IP может обрабатывать пакет одновременно с получением драйвером NDIS следующего пакета. Кроме того, требуется меньше ресурсов для координации операций стека TCP/IP и драйвера, а также, в большинстве случаев, в памяти не создаются дополнительные копии пакетов данных. При отправке пакетов служба БНС также обеспечивает повышенную пропускную способность, малое время задержки и отсутствие накладных издержек производительности за счет увеличения числа пакетов TCP/IP, которые могут быть отправлены за один вызов NDIS. Для достижения столь высокой производительности служба БНС использует пул буферов и дескрипторов пакетов, используемый для конвейерных операций со стеком TCP/IP и драйвером NDIS.

Распределение потока данных кластера

Для распределения входящего потока данных между всеми узлами кластера служба БНС использует широковещательные или многоадресные пакеты протокола второго уровня. В используемом по умолчанию одноадресном режиме служба БНС переназначает аппаратный (MAC) адрес сетевого адаптера, для которого она включена (называемого адаптером кластера), и всем узлам в кластере назначается один MAC-адрес. Таким образом, поступающие пакеты принимаются всеми узлами кластера и передаются службе БНС для фильтрации. Для обеспечения уникальности MAC-адрес формируется на основании основного IP-адреса кластера, указанного на странице свойств службы БНС. Для основного IP-адреса 1.2.33.44 будет использоваться MAC-адрес одноадресного режима 02-BF-11-2-33-44. Служба БНС автоматически изменяет МАС-адрес адаптера кластера путем внесения изменения в реестр и последующей перезагрузки драйвера адаптера; при этом не требуется перезапуск операционной системы.

Если узлы кластера подключены к коммутатору, а не к концентратору, использование общего MAC-адреса может вызвать конфликт, поскольку коммутаторы второго уровня способны работать только с уникальными MAC-адресами источников на всех портах. Для устранения данной проблемы служба БНС модифицирует MAC-адрес источника в исходящих пакетах; MAC-адрес кластера 02-BF-11-2-33-44 преобразуется в адрес вида 02-h-11-2-33-44, где h — приоритет узла внутри кластера (задается в окне свойств службы БНС). Таким образом, коммутатору не передается фактический MAC-адрес кластера, и в результате поступающие в кластер пакеты данных доставляются на все порты коммутатора. Если узлы кластера подключены вместо коммутатора непосредственно к концентратору, в одноадресном режиме службы БНС маскировку исходного MAC-адреса можно отключить, чтобы заблокировать лавинную маршрутизацию исходящих пакетов в коммутаторе. Отключение маскировки производится путем присвоения в реестре параметру MaskSourceMAC службы БНС значения 0. Использование коммутатора исходящих данных по протоколу третьего уровня позволяет также избежать лавинной маршрутизации.

У одноадресного режима работы службы БНС имеется побочный эффект блокирования непосредственной связи между сетевыми адаптерами узлов кластера. Поскольку исходящие пакеты, отправляемые другому узлу кластера, посылаются на MAC-адрес, совпадающий с адресом отправителя, эти пакеты возвращаются отправителю сетевым стеком и никогда не попадут в сеть. Это ограничение можно обойти, установив в каждый сервер кластера второй сетевой адаптер. В таком случае служба БНС обрабатывает данные только от сетевого адаптера подсети, от которого поступают клиентские запросы, а второй адаптер, как правило, подключается к отдельной подсети, предназначенной для связи с другими узлами и серверами файлов и баз данных. Для ритмических сообщений и удаленного управления используется только сетевой адаптер кластера.

Следует отметить, что ограничения одноадресного режима службы БНС не влияют на подключения узлов кластера к узлам, не включенным в кластер. Поток данных из сети, поступающий на выделенный IP-адрес (на адаптер кластера), получают все узлы кластера, поскольку они используют одинаковый MAC-адрес. Поскольку служба БНС никогда не передает распределенные данные на выделенный IP-адрес кластера, они доставляются непосредственно стеку протоколов TCP/IP узла-адресата. На других узлах служба БНС обрабатывает эти пакеты как уже распределенный поток данных (поскольку IP-адрес получателя не совпадает с выделенными IP-адресами других узлов): они могут быть переданы стеку TCP/IP, который их отклонит. Передача чрезмерного объема данных на выделенные IP-адреса при работе в одноадресном режиме может привести к падению производительности, поскольку стек TCP/IP вынужден отклонять большое количество «чужих» пакетов.

Поэтому в службе БНС имеется второй режим, обеспечивающий распределение входящего потока данных всем узлам кластера. При использовании многоадресного режима вместо изменения МАС-адреса адаптера кластера ему присваивается широковещательный адрес второго уровня. Основному IP-адресу кластера 1.2.33.44 будет при этом соответствовать широковещательный MAC-адрес03-BF-11-2-33-44. Поскольку у каждого узла сохраняется уникальный МАС-адрес, в этом режиме нет необходимости устанавливать второй сетевой адаптер для связи между узлами кластера. В нем также отсутствует падение производительности при использовании выделенных IP-адресов.

Для одновременной доставки входящего потока данных всем узлам кластера в однонаправленном режиме работы службы БНС используется лавинная маршрутизация (доставка пакетов во все порты коммутатора, кроме исходного). При использовании многоадресного режима коммутаторы также во многих случаях отправляют пакеты во все порты для доставки широковещательных данных. Тем не менее, в многоадресном режиме системный администратор имеет возможность ограничить лавинную маршрутизацию, настроив в коммутаторе виртуальную сеть для портов, относящихся к узлам кластера. Это может быть сделано путем ручной настройки коммутатора или с помощью протоколов IGMP (Internet Group Management Protocol, межсетевой протокол управления группами) и GARP. Текущая версия службы БНС не имеет автоматической поддержки протоколов IGMP и GMRP.

Она поддерживает протокол ARP (Address Resolution Protocol, протокол разрешения адресов), необходимый для разрешения основного IP-адреса и других виртуальных IP-адресов в широковещательный MAC-адрес кластера. (Выделенный IP-адреспо-прежнему разрешается в МАС-адрес адаптера кластера.) Опыт показывает, что маршрутизаторы Cisco не принимают сигнал ARP от кластера, разрешающего однонаправленные IP-адреса в широковещательные MAC-адреса. Эту проблему можно обойти, добавив в маршрутизатор статическую запись ARP для каждого виртуального IP-адреса. Широковещательный МАС-адрес можно посмотреть в окне свойств службы БНС или с помощью программы удаленного управления Wlbs.exe. В используемом по умолчанию однонаправленном режиме данная проблема отсутствует, поскольку MAC-адрес кластера совпадает с однонаправленным MAC-адресом.

Служба БНС не управляет никакими входящими пакетами данных, кроме данных по протоколам TCP, UDP и GRE (часть потока данных PPTP) для указанных портов. Она не фильтрует данные по протоколам IGMP, ARP (за исключением указанных выше), ICMP или другим IP-протоколам. Все данные по этим протоколам передаются стеку TCP/IP в неизменном виде на всех узлах кластера. В результате для некоторых TCP/IP-программ «точка-точка» (например, ping) при использовании IP-адреса кластера могут генерироваться дублирующиеся отклики. Благодаря надежности протокола TCP/IP и его способности обрабатывать дублированные датаграммы, другие протоколы продолжают правильно работать в кластере. Чтобы избежать данной проблемы, для таких программ можно использовать выделенный IP-адрес.

Алгоритм балансировки нагрузки

Для распределения подключаемых клиентов между узлами кластера служба БНС использует полностью распределенный алгоритм фильтрации. Этот алгоритм был выбран для предоставления узлам кластера возможности быстро и независимо друг от друга принимать решения о распределении нагрузки для каждого входящего пакета. Алгоритм был оптимизирован для обеспечения статистически равномерного распределения нагрузки по большому количеству клиентских узлов, выполняющих постоянные, относительно небольшие запросы (такой тип нагрузки типичен, например, для веб-серверов). Когда количество клиентов невелико и/или объем запросов клиентов меняется в широких пределах, алгоритм распределения нагрузки службы БНС менее эффективен. Тем не менее, простота и скорость работы этого алгоритма позволяют обеспечивать очень высокую производительность, высокую пропускную способность и низкое время отклика для различных типов приложений клиент/сервер.

Служба БНС распределяет поступающие клиентские запросы, направляя определенный процент новых запросов каждому узлу кластера. Процент распределяемой загрузки задается в окне «Свойства балансировки нагрузки сети» для каждого диапазона номеров портов, нагрузку которых необходимо распределять. Алгоритм не способен адаптироваться к изменениям нагрузки каждого узла кластера (в отличие от нагрузки ЦП и использования памяти). Однако сопоставление меняется при изменении количества узлов кластера, в соответствии с которым меняются проценты распределения нагрузки.

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

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

Как правило, качество распределения статистически определяется количеством клиентов, выполняющих запросы. Такое поведение напоминает подбрасывание монеты, две стороны которой соответствуют количеству узлов кластера (в данной аналогии в кластере два узла), а число бросков соответствует количеству клиентских запросов. Распределение нагрузки улучшается с увеличением количества запросов, подобно тому, как процент бросков монеты, когда выпадает «орел», стремится к 50 с увеличением числа бросков. На практике при включенном режиме привязки для равномерного распределения нагрузки количество клиентов должно значительно превышать количество узлов.

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

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

При сопоставлении клиентов узлам служба БНС не может непосредственно отслеживать границы сеансов (таких, как сеансы по протоколу SSL), поскольку решения о распределении нагрузки принимаются при установлении подключений TCP до поступления пакетов, содержащих данные сетевых приложений. Кроме того, служба не способна отслеживать границы потоков по протоколу UDP, поскольку границы логических сеансов определяются приложениями. Вместо этого параметры привязки службы БНС используются для поддержания сеансов клиентов. При сбое или отключении узла от кластера все подключения клиентов к нему разрываются. После определения нового состава кластера с помощью процедуры схождения (см. ниже) клиенты, которые были сопоставленные выбывшему узлу, сопоставляются одному из оставшихся узлов. При этом сбой не влияет на сеансы всех остальных клиентов, которых кластер продолжает бесперебойно обслуживать. Таким образом, алгоритм распределения нагрузки минимизирует перерывы в обслуживании клиентов при сбое.

При включении в кластер нового узла инициируется процедура схождения для учета нового члена кластера. После завершения схождения новому узлу сопоставляется минимум клиентов. Служба БНС отслеживает TCP-подключения к каждому узлу, и после завершения текущих подключений следующие подключения затрагиваемых клиентов будут обрабатываться новым узлом. Обработка UDP-потоков новым узлом начинается немедленно. Это может привести к разрыву некоторых клиентских сеансов, включающих несколько подключений или UDP-потоков. Следовательно, узлы необходимо добавлять в кластер в моменты, когда это приведет к разрыву минимального количества сеансов. Чтобы полностью устранить эту проблему, состояние сеансов должно управляться серверными приложениями, чтобы иметь возможность восстановить или возобновить сеанс с любого узла кластера. Например, состояние сеанса может передаваться серверу внутренней базы данных или сохраняться на стороне клиента в файлах cookie. Состояние SSL-сеансов восстанавливается автоматически путем повторной аутентификации клиента.

GRE-поток внутри протокола PPTP — это особый случай сеанса, на который не влияет добавление нового узла в кластер. Поскольку GRE-поток ограничен в пределах длительности управляющего TCP-сеанса, служба БНС отслеживает этот поток совместно с управляющим сеансом. Таким образом, предотвращается разрыв туннельного подключения PPTP при добавлении нового узла.

Схождение

Узлы кластера, работающего под управлением службы БНС, периодически обмениваются многоадресными или широковещательными ритмическими сообщениями. Это позволяет контролировать состояние кластера. При изменении состояния кластера (сбое, отключении или включении нового узла) служба БНС инициирует процесс, называемый схождением, при котором узлы обмениваются ритмическими сообщениями для определения нового узла, текущего состояния кластера и выбора узла с наиболее высоким приоритетом в качестве нового основного узла. При достижении узлами соглашения о текущем состоянии кластера изменения членства в кластере после схождения заносятся в журнал событий Windows 2000.

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

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

В одноадресном режиме ритмические сообщения рассылаются каждым узлом широковещательно, а в многоадресном режиме — многоадресно. Каждое ритмическое сообщение занимает один кадр Ethernet и помечено основным IP-адресом кластера, чтобы обеспечить возможность работы нескольких кластеров внутри одной подсети. Ритмическим сообщениям назначается либо настраиваемое значение, либо шестнадцатеричное значение 886F. По умолчанию период отправки ритмических сообщений равен одной секунде. Это значение можно изменить с помощью параметра реестра AliveMsgPeriod. При выполнении процедуры схождения для ускорения процесса период отправки сообщения снижается вдвое. Даже в больших кластерах полоса пропускания, занимаемая ритмическими сообщениями, крайне невелика (например, 24 КБ/с в 16-узловом кластере).

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

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

Удаленное управление

Механизм удаленного управления службой БНС использует протокол UDP по порту 2504. Его датаграммы отправляются на основной IP-адрес кластера. Поскольку датаграммы обрабатываются драйверами службы балансировки нагрузки на каждом узле кластера, они должны направляться в подсеть кластера (а не в подсеть, к которой подключен кластер). Команды удаленного управления, отдаваемые в пределах кластера, передаются в локальную подсеть кластера в виде



Производительность балансировки нагрузки сети

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

Кроме того, масштабируемость службы БНС определяет степень роста производительности кластера при добавлении новых узлов. Для масштабируемости производительности необходимо, чтобы накладные расходы ресурсов ЦП и время задержки увеличивались медленнее, чем число узлов.

Накладные расходы ресурсов ЦП

Любые технологии балансировки нагрузки сети требуют дополнительных ресурсов, затрачиваемых на анализ поступающих пакетов и принятие решений об их распределении (т.е.  эти накладные расходы снижают также производительность сети). Как было отмечено ранее, решения на основе диспетчеризации анализируют пакеты, изменяют их и пересылают определенному узлу кластера. Как правило, диспетчеры меняют IP-адреса, чтобы перенаправить пакеты с виртуального IP-адреса кластера на IP-адрес выбранного узла. В отличие от технологий диспетчеризации, служба БНС одновременно рассылает входящие пакеты всем узлам кластера и использует алгоритм фильтрации, позволяющий отклонять пакеты на всех узлах, кроме нужного. Фильтрация приводит к меньшим накладным расходам ресурсов на доставку пакета по сравнению с диспетчеризацией, что в результате дает меньшее время отклика и более высокую общую пропускную способность.

Алгоритм фильтрации службы БНС параллельно работает на всех узлах кластера. Накладные расходы ресурсов на фильтрацию измеряются в процентах от вычислительной мощности ЦП, используемой на всех узлах. Эти накладные расходы растут пропорционально интенсивности поступления пакетов (так же как затраты на маршрутизацию в технологиях распределения нагрузки диспетчером) вне зависимости от количества узлов в кластере. Например, если в кластере из двух узлов накладные расходы ресурсов ЦП составляют P% на узел для обработки заданного количества пакетов, этот процент будет таким же и в кластере с 32 узлами. При удвоении количества пакетов накладные расходы ресурсов ЦП становятся равными 2P.

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

В приведенном выше примере 32-узлового кластера накладные расходы ресурсов ЦП на один узел составят 16P для обеспечения 16-кратного увеличения числа запросов и пропускной способности по сравнению с двухузловым кластером с накладными расходами ресурсов ЦП, равными P.

Накладные расходы ресурсов на фильтрацию при распределении нагрузки возрастают линейно при увеличении потока пакетов. При пиковой нагрузке сети Fast Ethernet 100 Мб/с на фильтрацию пакетов службой БНС будет расходоваться приблизительно 5,8%  ресурсов центрального процессора с частотой 450 МГц. Следует отметить, что для многопроцессорных узлов процент загрузки ЦП представляет только часть всех ресурсов ЦП, доступных узлу. Экстраполируя приведенный выше график, можно подсчитать, что для обработки 2 993 веб-страниц объемом 10 Кб/с (то есть более 258 млн. посещений в день) накладные расходы на фильтрацию пакетов составят 12,9%  ресурсов ЦП каждого узла.

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

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

Иногда полезно представлять кластер как набор отдельных компьютеров-"контейнеров", обрабатывающих клиентскую нагрузку. Служба БНС распределяет запросы клиентов между этими контейнерами, чтобы добиться как можно более равномерной загрузки компьютеров. Процесс распределения нагрузки требует затрат незначительной часть ресурсов ЦП в каждом контейнере, и эта часть возрастает пропорционально увеличению потока пакетов (накладные расходы на фильтрацию растут пропорционально общему потоку пакетов, а расходы на передачу — пропорционально потоку пакетов через отдельный узел кластера). Общее количество узлов, которые необходимо включить в кластер, зависит от производительности узлов и характеристик серверного приложения. Приложения, активно потребляющие ресурсы ЦП (например, веб-серверы с технологией ASP), могут потребовать включения в кластер большего количества ЦП по сравнению с веб-серверами, содержащими статические веб-страницы. В соответствии с высокими потребностями в ресурсах ЦП такие приложения обрабатывают меньший объем сетевых данных и требуют наличия большего количества узлов, в отличие от приложений, которым для обработки одного запроса клиента необходимо меньше ресурсов ЦП.

Пропускная способность и время отклика

Служба балансировки нагрузки сети позволяет масштабировать производительность, повышая пропускную способность и минимизируя время отклика на запросы клиентов. При достижении максимальной нагрузки узла кластера он не может обеспечить дополнительную пропускную способность, и время отклика увеличивается нелинейно, а клиенты ощущают задержку отклика на свои запросы. Добавление в кластер новых узлов дает возможность и далее наращивать пропускную способность и уменьшать задержки, что приводит к сокращению времени отклика. В дальнейшем по мере роста требований к пропускной способности можно добавлять в кластер новые узлы, пока не будет достигнута максимальная загрузка подсети. После этого пропускную способность можно увеличивать за счет использования нескольких кластеров под управлением службы БНС и распределения потока данных между ними с помощью службы доменных имен «карусельной» (Round Robin) DNS. Такой подход применяется, например, для веб-узла Microsoft.com, который в настоящий момент функционирует на пяти шестиузловых кластерах, управляемых службой балансировки нагрузки.

На практике узлы добавляются в кластер до тех пор, пока загрузка их ЦП не достигнет установленного значения при ожидаемом количестве запросов. При этом для каждого узла поддерживаются дополнительные свободные ресурсы ЦП, необходимые для обработки дополнительной загрузки в случае сбоя. Например, узлы кластера Microsoft.com используют, как правило, 60% ресурсов ЦП, чтобы без труда обслуживать нагрузку в случае выхода одного узла из строя.

Все участники распределения нагрузки несут накладные расходы ресурсов, влияющие на масштабирование пропускной способности и время отклика. При использовании службы БНС для масштабирования производительности приложений в получаемом кластере отсутствуют «узкие места», ограничивающие производительность при добавлении новых узлов. При включении в кластер новых узлов общая пропускная способность должна повышаться линейно. Служба БНС использует конвейерную технологию, минимизирующую рост времени отклика, называемый задержкой, вследствие накладных расходов ресурсов на фильтрацию и передачу. В результате накладные расходы ресурсов ЦП на работу службы БНС вносят незначительный вклад в задержку. Сложность взаимодействий частей операционной системы затрудняет непосредственную оценку времени задержки. Предварительные измерения, выполненные в ходе описанных выше тестов, включавших доступ к статическим страницам объема 10 КБ, показали, что рост времени задержки составляет приблизительно один процент от общего времени ожидания (получения первого байта запроса GET).

Задержка и связанные с ней накладные расходы ресурсов ЦП на фильтрацию влияют на производительность, в конечном счете, ограничивая максимально возможную пропускную способность, которая может быть достигнута при увеличении потока пакетов. Накладные расходы ресурсов ЦП на передачу ограничивают пиковую пропускную способность отдельного узла в сравнении с узлом с отключенной службой БНС, но без возможности масштабирования нагрузки. Поскольку скорость обслуживания приложения узла обычно возрастает пропорционально интенсивности использования ЦП, накладные расходы ресурсов ЦП в результате ограничивают общую пропускную способность узла. Исходя из предположения, что поток запросов от клиентов растет вместе с количеством узлов, масштабирование пропускной способности для N полностью загруженных узлов кластера ограничено ростом накладных расходов ресурсов ЦП на фильтрацию. Если R1 — это максимальная пропускная способность одного узла, максимальная пропускная способность узла в составе кластера из N-узлов рассчитывается по формуле:

RN = C * (1 – (N * (RN / R1)*OF)), где R1 = C * (1 – OF)

где OF — процент ресурсов ЦП, используемый службой БНС для фильтрации клиентских запросов при пропускной способности R1, а C — постоянная, соответствующая скорости обслуживания при заданном проценте использования ресурсов ЦП. Эти накладные расходы ресурсов на фильтрацию возрастают пропорционально количеству узлов (однако обратно пропорциональны отношению RN / R1) и снижают максимальную скорость обслуживания каждого узла при добавлении узлов в кластер. Следует отметить, что если переменная OF = 0, в кластере наблюдается линейное увеличение пропускной способности в зависимости от значения N. Для приложений с высокими требованиями к ресурсам процессора накладные расходы ресурсов ЦП при распределении нагрузки будут меньше для заданного потока запросов, что повышает возможности масштабирования при добавлении в кластер новых узлов.

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

Служба БНС используется для построения кластеров с чрезвычайно высокой пропускной способностью. В процессе последней демонстрации работы (на выставке Comdex в Лас-Вегасе в 1999 г.) служба балансировки нагрузки сети использовалась для обеспечения масштабируемости производительности веб-узла электронной торговли. Веб-узел был запущен на кластере из шести многопроцессорных узлов под управлением службы БНС и подключен к кластеру внутренней базы данных, состоявшему из двух узлов. Сто клиентов создали общую загрузку объемом 1600 запросов GET в секунду (то есть 830 млн. запросов в день). Веб-сервер имел пропускную способность более 200 Мб/с при 50 000 одновременных подключений. Этот пример наглядно демонстрирует возможности службы БНС по масштабированию нагрузки больших веб-узлов.

Рисунок 2 - Измеренная пропускная способность службы БНС

Загрузка коммутатора

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

В большинстве случаев применения службы БНС пропускная способность, используемая для запроса данных, составляет небольшую часть общей пропускной способности, необходимой для работы приложений клиент/сервер. Например, используемый процент пропускной способности порта 100-мегабитного концентратора при выполнении запроса GET для веб-страниц объемом 10 КБ при разных значениях нагрузки составляет менее 2% пропускной способности концентратора.

Лавинная маршрутизация в коммутаторе может быть не самым удачным решением для приложений со значительным объемом сетевых данных, направляемых в кластер (таких как загрузка файлов с FTP-серверов). Кроме того, такое решение может создавать проблемы в случае совместного использования коммутатора несколькими кластерами, так как при этом лавинная маршрутизация нескольких кластеров может значительно загрузить коммутатор. Наконец, если для подключения коммутатора к магистральному каналу используется более скоростной порт по сравнению с портами, к которым подключены узлы кластера, это может привести к чрезмерной загрузке коммутатора. Например, если для подключения магистрального канала используются гигабитные порты коммутатора, а для подключения узлов кластера — 100-мегабитные, загрузка коммутатора возрастает десятикратно. В приведенном примере при общей пропускной способности 500 Мб/с загрузка коммутатора повышается на 10%. В таких случаях использование службы БНС в многоадресном режиме и настройка виртуальных сетей в коммутаторе могут ограничить объем данных лавинной маршрутизации.

Рисунок 3 - Загрузка коммутатора при фильтрации пакетов службой БНС



Заключение

Интернет-технологии приняли широкое распространение, и используются как основа построения корпоративных и критически важных приложений, таких как веб-узлы, узлы потокового мультимедиа-вещания и серверы виртуальных частных сетей. Являясь интегрированной частью операционных систем Windows 2000Advanced Server и Datacenter Server, служба распределения нагрузки сети является оптимальным и эффективным решением, обеспечивающим масштабируемость и высокую отказоустойчивость таких приложений как в Интернете, так и в интрасетях.

Служба БНС позволяет системным администраторам создавать кластеры, включающие до 32 узлов, между которыми будут распределяться поступающие от клиентов запросы. При этом с точки зрения клиентов кластер ничем не отличается от обычного сервера; серверные приложения также не требуют адаптации для работе в кластере.

Служба БНС снабжена всеми необходимыми администраторам средствами управления, в том числе возможностью (после ввода пароля) удаленно управлять кластером с любого компьютера в сети. Кроме того, администраторы имеют возможность настраивать кластер под специальные задачи, управляя потоком данных на уровне портов. Узлы добавляются и исключаются из кластера без прекращения обслуживания. Кроме того, программное обеспечение на узлах кластера можно обновлять без прекращения обработки клиентских запросов.

Служба БНС использует для распределения нагрузки между узлами полностью распределенный алгоритм. В отличие от решений на основе диспетчеризации такая архитектура обеспечивает высокую производительность и низкие накладные расходы ресурсов на распределение потока запросов от клиентов. Кроме того, для этой архитектуры характерна высокая отказоустойчивость (N–1) при числе узлов N. Все эти характеристики достигаются без необходимости использовать специальные аппаратные или программные решения.

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

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

Словарь основных терминов

ARP

Протокол разрешения адресов (Address Resolution Protocol). Протокол семейства TCP/IP, отвечающий за разрешения IP-адресов, используемых программным обеспечением на базе TCP/IP в адреса, используемые оборудованием локальной сети.

Отказоустойчивость

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

Привязка клиентов

Параметр настройки для режима многоузловой балансировки с правилом портов, при котором служба БНС направляет запросы от определенного IP-адреса или пространства адресов класса C одному узлу кластера. Имеется три режима привязки клиентов: без привязки, привязка одного клиента, привязка адресов класса C.

Запрос клиента

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

Кластер

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

Адаптер кластера

Сетевой адаптер в кластере под управлением службы БНС, обслуживающий поток данных в кластере (то есть поток данных ко всем узлам кластера). Этому адаптеру назначается один или несколько виртуальных IP-адресов и, при необходимости, выделенный IP-адрес.

Схождение

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

Накладные расходы ресурсов ЦП на фильтрацию

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

Накладные расходы ресурсов ЦП на передачу

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

Выделенный IP-адрес

Уникальный IP-адрес узла кластера, используемый для обмена данными, не относящимися к операциям кластера (например, для доступа по протоколу Telnet к определенному узлу кластера).

Основной узел

Узел с наибольшим значением приоритета, обрабатывающий все данные по протоколам TCP и UDP, которые не были распределены в соответствии с правилами портов.

Режим фильтрации

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

Приоритет обработки

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

Ритмическое сообщение

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

Высокая отказоустойчивость

См. отказоустойчивость.

Узел

В данном контексте — компьютер, включенный в кластер под управлением службы БНС. Узел иногда называют сервером.

Приоритет узла

Параметр настройки, задающий приоритет узла кластера для обработки всех данных, не подпадающих под действие правил портов. Узел с наибольшим приоритетом (наименьшее числовое значение в диапазоне от 1 до 32) называется основным узлом.

Задержка

Показатель производительности, в данном контексте соответствующий непекрывающейся части накладных расходов ресурсов ЦП на работу службы БНС (предпочтительно меньшее значение). Время задержки добавляется к времени отклика на запрос клиента.

Распределение нагрузки

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

Оценка загрузки

Параметр настройки правил порта для режима многоузловой фильтрации, позволяющий указать долю распределяемой нагрузки, которую должен обрабатывать данный узел; диапазон значений — от 0 (нуль) до 100. Фактическая доля потока данных, обрабатываемых каждым узлом, рассчитывается как значение параметра «Оценка загрузки», разделенное на сумму значений этого параметра для всех узлов кластера.

MAC-адрес

Сетевой адрес канального уровня, называемый адресом управления доступом к среде передачи, который служит для связи с другими сетевыми адаптерами в пределах одной подсети. Каждый сетевой адаптер имеет MAC-адрес.

Широковещательный MAC-адрес

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

Многоадресный режим

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

Многосетевой

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

Сетевой адаптер

Плата расширения, предназначенная для подключения компьютера к локальной сети (LAN). Кластер под управлением службы БНС обменивается данными при помощи адаптера кластера через локальную сеть, соединяющую узлы кластера и клиентов.

Накладные расходы

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

Правило портов

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

Основной IP-адрес.

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

Время отклика

Параметр производительности, определяемый как задержка приема-передачи для обработки запроса клиента. Время отклика, повышающееся пропорционально неперекрывающейся части накладных расходов ресурсов ЦП, называется задержкой (предпочтительно меньшее значение).

Служба RRDNS

Тип службы доменных имен под названием Round Robin DNS, распределяющей клиентов между несколькими серверами по карусельному принципу. Служба RRDNS обеспечивает масштабируемость (но не высокую отказоустойчивость).

Масштабируемость

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

Сеанс

В контексте распределения потока данных балансируемая нагрузка TCP/IP-сеанса — набор запросов клиентов, направляемых на сервер. Эти запросы могут быть инициированы несколькими TCP-подключениями, возможно параллельными. В некоторых случаях серверное приложение сохраняет данные о состоянии сеанса между запросами. Чтобы сохранить возможность доступа к данным о состоянии сеанса, системный администратор с помощью параметра привязки клиентов может настроить службу БНС для направления всех запросов в пределах одного сеанса одному узлу кластера.

Состояние

В данном контексте — данные, управляемые серверным приложением от имени клиента. Для масштабирования производительности серверного приложения путем запуска нескольких копий под управлением службы БНС данные о состоянии сеанса клиента должны быть доступны и синхронизируемы всеми копиями приложения.

Коммутатор

Центральное сетевое устройство, перенаправляющее пакеты в порты (в отличие от обычных концентраторов, которые отправляют каждый пакет во все порты). Коммутаторы, способные поддерживать несколько одновременных подключений, обладают большей пропускной способностью по сравнению с концентраторами.

Лавинная маршрутизация в коммутаторе

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

Загрузка коммутатора

Показатель производительности, в данном контексте определяемый как часть пропускной способности порта коммутатора, занятая входящими запросами клиентов службы БНС (предпочтительно меньшее значение). Загрузка коммутатора повышается при увеличении потока данных от клиентов и не должна критически сказываться на пропускной способности порта. TCP/IP. Протокол управления передачей (Transmission Control Proto-col/Internet Protocol). Набор сетевых протоколов, используемых в Интернете для обеспечения подключений между связанными сетями, образованными компьютерами с различной архитектурой и операционными системами. Стек протоколов TCP/IP включает стандарты подключения компьютеров друг к другу и соглашения для соединения сетей и маршрутизации потоков данных.

Пропускная способность

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

Одноадресный режим

Параметр настройки, при выборе которого служба БНС присваивает сетевому адаптеру кластера MAC-адрес, совпадающий с МАС-адресом всех узлов кластера. Этот режим работы используется по умолчанию. См. также многоадресный режим.

Виртуальный IP-адрес

IP-адрес, совместно используемый узлами службы кластера под управлением службы БНС для получения запросов клиентов, адресованных всему кластеру. Кластеры под управлением службы БНС поддерживают несколько виртуальных IP-адресов (например, кластер многосетевых веб-узлов). Один из виртуальных IP-адресов является основным, используемым для идентификации кластера при удаленном управлении.


Ссылка: http://www.oszone.net/4187/Network_Load_Balancing