Первый и главный совет читателям в знаменитом фантастическом романе Hitchhiker's Guide to the Galaxy: «Никогда не паниковать». Я часто обращаюсь к нему в мыслях, когда говорю о качестве обслуживания (QoS) в компании: в глазах появляется тревога и все вспоминают о назначенном визите в поликлинику или родительском собрании в школе, отчего необходимо немедленно покинуть совещание.

Безусловно, такая нервозность отчасти обоснована.

Необходимость QoS

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

  • данные приложения;
  • репликация;
  • трафик кластера;
  • трафик сетевого хранилища (например, SMB, iSCSI);
  • трафик управления;
  • данные архивации.

Задача еще более усложняется из-за виртуализации. На сервере Hyper-V может потребоваться не менее пяти сетевых подключений! Учтите также избыточные пути, которые могут понадобиться для некоторых типов трафика, поэтому несколько соединений могут объединяться в группы. Отдельные соединения могут потребоваться для хранилищ при использовании таких технологий, как Fibre Channel. Все это может привести к совершенной путанице. Как компаниям упорядочить свою инфраструктуру?

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

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

Большинство компаний традиционно использовали второй вариант, но реализация такого подхода затруднена по нескольким причинам.

  • Центры обработки данных переходят от 1-гигабитных к 10-гигабитным сетям. Наличие более двух 10-гигабитных соединений на один сервер — экономически невыгодное решение, поэтому выделение специальных соединений для каждого типа трафика не имеет смысла.
  • По мере широкого внедрения виртуализации все чаще применяются сверхплотные (blade) серверы. Но в этих серверах обычно есть ограничения по числу адаптеров, что уменьшает количество соединений. Существуют исключения, если в центре обработки данных используется объединенная структура, которая позволяет создавать для узла виртуальные адаптеры, обеспечивая почти неограниченную гибкость в разделении трафика (хотя в действительности это всего лишь своеобразный механизм QoS).
  • Традиционно сети строятся с большой избыточностью, чтобы обеспечить доступность полосы пропускания. Из-за возросшей важности и использования различных типов сетевого трафика большинство компаний неспособно управлять такой избыточностью. Многие выделенные сетевые соединения для определенных типов трафика либо не используются, либо используются очень редко.

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

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

Как и следовало ожидать, QoS должно обеспечить решение этих проблем. QoS полностью согласуется с широко применяемой многоабонентской и конвергентной 10-гигабитной структурой центров обработки данных. Рассмотрим типы QoS, реализованные в Windows Server 2012, в том числе QoS на основе программного обеспечения, аппаратную технологию и специфическую QoS для виртуализации.

На первый взгляд, проблема решается простой заменой канала связи 1 Гбит на 10 Гбит — канал связи с десятикратно увеличенной пропускной способностью будет достаточным. Это соответствует увеличению числа полос на автостраде: на время острота проблемы снижается, но какие бы ресурсы ни были выделены для рабочей нагрузки, в конечном итоге их окажется мало и потребуется больше. Даже 10-гигабитное соединение со временем оказывается полностью загруженным, и проблема — для трафика определенных типов не выделяется достаточной полосы пропускания – снова становится актуальной.

QoS на основе программного обеспечения

Возможности программной приоритезации трафика существуют в Windows давно. Перейдите в объекте групповой политики (GPO) к Computer Configuration («Конфигурация компьютера»), Policies («Политики»), Windows Settings («Параметры Windows»), Policy-based QoS («QoS на основе политики»). С помощью политик можно ограничить определенной величиной полосу пропускания для различных приложений, комбинаций IP-адресов источника и места назначения, и конкретных протоколов. В прошлом в качестве средства для управления трафиком использовалась максимальная полоса пропускания для типа трафика.

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

  • 1 Гбит для управления;
  • 1 Гбит для динамической миграции;
  • 1 Гбит для кластера или общего тома кластера CSV);
  • 2 Гбит для iSCSI;
  • 5 Гбит для виртуальных машин.

На первый взгляд все превосходно. В обычных обстоятельствах на виртуальные машины приходится основная часть трафика, а другим типам трафика гарантирована полоса пропускания при необходимости. Но существует проблема с использованием параметров максимальной полосы пропускания для управления ресурсами канала связи: значительную часть времени половина доступной полосы пропускания почти не используется, однако она зарезервирована для случаев, когда в ней есть необходимость, как отдельная полоса для автомобилей аварийных служб. Однако свободная полоса пропускания наверняка пригодилась бы серверам, на которые приходится интенсивный трафик виртуализации. Мы впустую тратим значительную часть ресурсов и понапрасну ограничиваем свои возможности. Кроме того, технология QoS в Windows Server 2008 R2 не работает с Hyper-V.

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

В Windows Server 2012 появилась концепция политики минимальной полосы пропускания, при которой разным типам трафика присваивается относительный вес. Посмотрим, как она применяется к тем же типам трафика, которые использовались в примере с максимальной полосой пропускания:

  • 10 для управления;
  • 20 для динамической миграции;
  • 20 для кластера или общего тома кластера CSV);
  • 10 для iSCSI;
  • 40 для виртуальных машин.

Обратите внимание, что значения не имеют размерности; это просто относительные веса.

Принцип политики минимальной полосы пропускания следующий: по умолчанию трафик любого типа может использовать всю доступную полосу пропускания сети. Хотя вес трафика виртуальных машин — 40, он может занимать всю полосу пропускания сети, если канал связи не нужен для передачи любого другого трафика. В отсутствие конкурентов рабочие нагрузки могут использовать любую долю канала связи, до предельных возможностей сетевой структуры. Относительные веса учитываются только в случае конкуренции. В этом случае различным типам трафика гарантируется полоса пропускания в зависимости от их весов: для трафика динамической миграции будет выделено 20%, а для трафика виртуальных машин – 40%. Сумма всех весов — 100. Минимальную полосу пропускания для одного типа трафика при наличии конкуренции можно найти делением относительного веса этого типа трафика на сумму всех весов.

Кроме того, можно использовать строгую настройку минимальной полосы пропускания, в которой типам трафика назначаются абсолютные минимальные значения полосы пропускания. Например, трафику управления выделяется 1 Гбит, а трафику виртуальных машин — 4 Гбит. Однако такой подход связан с трудностями администрирования по сравнению с относительными весами. Необходимо проявлять осторожность, чтобы не завысить минимальные значения, выделяемые рабочим нагрузкам. Кроме того, назначение типу трафика минимального значения 1 Гбит не гарантирует, что он получит 1 Гбит. В большинстве сетей имеется несколько коммутаторов и путей. Типу трафика можно гарантировать полосу пропускания 1 Гбит внутри сети локального сервера, но после того как трафик покидает сервер, показатели зависят от другого трафика в сети.

Существует еще одна проблема с использованием строгой настройки минимальной полосы пропускания. Предположим, что объединяются два 10-гигабитных сетевых адаптера; это обеспечивает в исправной среде пропускную способность 20 Гбит. Если четко придерживаться подхода, основанного на минимальной полосе пропускания, и задать значение 20 Гбит, то невозможно обеспечить гарантию в случае отказа адаптера. Это противоречит самой идее объединения сетевых плат: бесперебойно предоставлять услугу в случае аварии.

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

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

Аппаратная технология QoS

В дополнение к программной технологии современное сетевое оборудование располагает собственными функциями QoS. Этот тип приоритезации трафика на аппаратном уровне известен как создание мостов в центре обработки данных Data Center Bridging (DCB) и определен стандартом IEEE. В этой статье основное внимание уделяется программной QoS, но важно понимать, что при наличии DCB-совместимого сетевого оборудования можно задействовать эти возможности через Windows Server 2012. Управление трафиком передано сетевому адаптеру, а не выполняется операционной системой узла. Кроме того, DCB обеспечивает управление потоком для определенных типов сетевого трафика и может запросить замедление трафика из источника (обычно коммутатора). К счастью, большинство 10-гигабитных сетевых устройств поддерживает DCB. По умолчанию DCB не активен в Windows Server 2012 и должен быть установлен как встроенный компонент с помощью следующей команды:

Install-WindowsFeature Data-Center-Bridging

QoS при виртуализации

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

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

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

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

В настоящее время только строгая полоса пропускания может быть настроена для виртуальных машин с использованием графического интерфейса Hyper-V Manager, как показано на экране. Это вызывает разочарование, так как оптимальный метод — использовать не строгую минимальную полосу пропускания, а относительно взвешенную минимальную полосу пропускания.

 

Настройка полосы пропускания в графическом интерфейсе Hyper-V Manager
Экран. Настройка полосы пропускания в графическом интерфейсе Hyper-V Manager

Хорошо, что, как и в других компонентах Windows Server 2012, все, что можно выполнить в графическом интерфейсе, можно выполнить и с помощью Windows PowerShell, который открывает доступ даже к более широкому набору функций, в том числе настройкам с относительными весами. Кроме того, через PowerShell можно настроить QoS на виртуальных коммутаторах Hyper-V, чего нельзя сделать с помощью графических инструментов.

Управление QoS

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

Для аппаратной QoS число классификаций трафика ограничено восемью; при использовании программной QoS такое ограничение отсутствует. Например, можно подготовить классификацию типа iSCSI и классификацию типа динамической миграции. Удобно, что модули PowerShell, используемые для создания классификаций, располагают встроенными классификациями для наиболее распространенных типов трафика (iSCSI, NFS, SMB, динамическая миграция, SMB Directory и Wild Card для всех остальных). Если нужна какая-нибудь другая классификация, можно подготовить собственные фильтры.

После того, как данные классифицированы, можно создать и применить политики для управления и выделения полосы пропускания. Вместо перечисления команд я рекомендую прочитать статью Microsoft «Network Quality of Service (QoS) Cmdlets in Windows PowerShell» (http://technet.microsoft.com/en-us/library/hh967469), в которой подробно описаны все команды, которые могут потребоваться для приоритезации трафика.

В следующем простом примере создается новая политика для трафика динамической миграции с помощью встроенного фильтра Live Migration:

New-NetQosPolicy «Live Migration» -LiveMigration -MinBandwidthWeightAction 40

Другой вариант использования QoS относится к узлу Hyper-V благодаря наличию виртуальных коммутаторов. Виртуальные коммутаторы доступны не только виртуальным машинам, но и управляющей операционной системе. Поэтому можно создать несколько виртуальных адаптеров для использования самим узлом Hyper-V. Например, можно создать адаптер виртуальной сети динамической миграции, виртуальный адаптер кластера и т.д. Затем можно применить политики QoS непосредственно к виртуальным сетевым адаптерам для управления их пропускной способностью. Иногда сделать это проще, чем использовать, как обычно, отдельные типы фильтров для разных видов трафика. Например, следующие две команды создают новый виртуальный адаптер на операционной системе узла Hyper-V, а затем назначают ему политику относительного веса минимальной полосы пропускания:

Add-VMNetworkAdapter -ManagementOS -Name «LiveMigration» -SwitchName «External Switch»
Set-VMNetworkAdapter -ManagementOS -Name «LiveMigration» -MinimumBandwidthWeight 40

В путь

Главная особенность QoS в Windows Server 2012 — возможность технологии изменить привычный подход к организации сетей в центре обработки данных. Вместо отдельных сетевых соединений для каждой рабочей нагрузки используйте быстродействующие каналы связи и механизм QoS, чтобы выделить необходимую пропускную способность различным типам трафика. Даже обладатели DCB-совместимого сетевого оборудования могут с успехом применять программную технологию QoS, особенно в среде Hyper-V; программная QoS отличается более высокой масштабируемостью по числу политик. Для внедрения QoS требуются некоторые усилия, но благодаря относительным минимумам процесс значительно упрощается и в то же время обеспечивается полное использование ресурсов.