Алгоритмы динамической балансировки нагрузки в распределенной системе активного мониторинга

стеров. Решение данных задач является направлением дальнейших исследований.

Список литературы

1. Мацкевич А.Г., Козачок В.И. Математическая модель системы стохастического структурного распознавания файловых вирусов // Безопасность информационных технологий. М: Изд-во МИФИ, 2007. Вып. 3. С. 44-50.

2. Рабинер Л. Р. Скрытые марковские модели и их применение в избранных приложениях при распознавании речи: обзор // ТИЭР. 1989. Вып. 2. Том 77. С. 86-102.

3. Кельберт М. Я., Сухов Ю. М. Вероятность и статистика в примерах и задачах. Т. II. Марковские цепи как отправная точка теории случайных процессов и их приложения. М: Изд-во МЦНМО, 2009. 571 с.

4. Don H. Jonson, Sinan Sinanovic Symmetrizing the Kullback-Leibler distance // IEEE Trans. on Comm. Tech. 2007.

A.G. Matskevich, A.L. Kuzmin, A.V. Kosachok

FUNCTIONAL MODEL FOR MALWARE RECOGNITION SYSTEM BASED ON

HMM

The malware recognition systems based on hidden markov models are observed, its functional model and efficiency test are resulted.

Key words: virus protection, malware, hidden markov models, clustering.

Получено 16.09.11

УДК 681.3

А.В. Бабич, асп., 8-920-273-25-34, babich@tula.ru

АЛГОРИТМЫ ДИНАМИЧЕСКОЙ БАЛАНСИРОВКИ НАГРУЗКИ В РАСПРЕДЕЛЕННОЙ СИСТЕМЕ АКТИВНОГО МОНИТОРИНГА

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

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

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

251

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

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

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

Среди систем с динамической балансировкой нагрузки можно выделить Ganglia [1] и Nagios с расширением DNX [2]. Система Ganglia предназначена для мониторинга высокопроизводительных компьютерных систем, таких как кластеры и Grid-системы, и не ориентирована на сбор данных с сетевого оборудования. Механизм балансировки нагрузки DNX основан на механизме «брокер-агент» и не учитывает топологических особенностей размещения агентов мониторинга в сети.

Рассматриваемые алгоритмы динамической балансировки нагрузки распределенной системы мониторинга разработаны на основе алгоритмов балансировки нагрузки Grid систем [3, 4]. В [3] предложено использовать иерархический подход для реализации алгоритма балансировки, в соответствии с которым модель Grid представляется иерархической структурой с четырьмя уровнями: Grid, кластеров, узлов и вычислительных элементов. Нижний уровень (вычислительные элементы) ассоциируется непосредственно с физическим оборудованием Grid системы. Остальные уровни

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

Балансировка нагрузки осуществляется по уровням: менеджер узла проводит балансировку нагрузки между вычислительными элементами, менеджер кластера - между узлами, менеджер Grid - между кластерами. Основу работы системы составляет внутриузловая балансировка. Внутри-кластерная балансировка запускается только в случае, если один из узлов кластера не смог провести локальную (внутриузловую) балансировку. В этом случае задания с перегруженных узлов перемещаются на недогруженные. Внутрисетевая (Grid) балансировка запускается в крайнем случае, если большинство менеджеров узлов не смогло провести локальную балансировку. В этом случае задания с перегруженных кластеров перемещаются на недогруженные. Уровень дисбаланса, при котором запускается данный вид балансировки, должен быть как можно выше, так как накладные расходы по пересылке заданий между кластерами велики. Основное преимущество иерархического подхода - сокращение передач сообщений между узлами и кластерами за счет первоочередного выполнения локальных балансировок. При этом сообщения об имеющихся ресурсах передаются с нижних уровней дерева на верхние.

В иерархическом подходе [3] менеджер сети Grid концентрирует всю информацию о загруженности системы, а также при необходимости выполняет глобальную балансировку. Хотя частота обращения к нему невелика, он потенциально может стать узким местом и точкой отказа при балансировке нагрузки. Для решения данной проблемы в [4] представлена полностью распределенная модель, полученная путем удаления корня иерархии - менеджера сети. Таким образом, на верхнем уровне иерархии остаются равноправные менеджеры кластеров, которые выполняют как внут-рикластерную (между узлами кластера), так и межкластерную балансировку нагрузки. Менеджер кластера выполняет следующие функции: поддерживает информацию о загрузке, связанную с каждым узлом; вычисляет рабочую нагрузку кластера и распространяет ее среди других менеджеров кластера; принимает решение о начале локальной (внутрикла-стерной) балансировки; рассылает решения о балансировке нагрузки узлам; инициирует глобальную (межкластерную) балансировку. В свою очередь, узел отвечает за поддержание информации о своей рабочей нагрузке, о пересылке данной информации менеджеру кластера и о выполнении заданий менеджера кластера. Стоит отметить, что в [4] предлагается выделять для менеджера кластера отдельный узел, т. е. если кластер содержит N узлов, N-1 узлов будут использованы для выполнения заданий, а один будет исполнять роль менеджера. Этот узел также может использоваться в двойном (дуальном) контексте - и как узел, и как менеджер кластера.

Тем не менее, удаление корня дерева увеличивает количество передаваемых сообщений между менеджерами кластеров: вместо передачи од-

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

В [4] показано, что балансировка системы при помощи распределенного подхода дает больший выигрыш по времени ответа, чем иерархическая. Этот выигрыш медленно растет при увеличении числа заданий и постоянном числе кластеров. Выигрыш при использовании иерархического подхода растет быстрее. Однако рост прекращается, как только менеджер сети Grid становится узким местом.

В работе [5, 6] рассмотрены вопросы использования и развития приведенных результатов для балансировки предлагаемой авторами распределенной системы мониторинга, которая располагается на существующих серверах сети (серверах-агентах) и использует их свободные ресурсы. Система мониторинга осуществляет опрос состояния сети с определенным периодом при помощи протокола SNMP (Simple Network Management Protocol). Каждый считываемый из MIB (Management Information Base) параметр рассматривается как источник данных.

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

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

Введем обозначения: S = {sk} - множество серверов сети; SA -множество серверов сети, на которых размещены агенты системы мониторинга, SA í S, Nsa = |SA|; D = {dk} - множество источников данных,

Nd = DI; DSm - множество источников данных, назначенных для хране-

Nsa nsa

ния m-му агенту, U DSm = D, I DSm = 0 ; DLm - множество источников

m=1 m=1

Nsa Nsa

данных, опрашиваемых m-м агентом, U DLm = D, I DLm = 0.

m=1 m=1

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

DLm ф DSm. Посредством динамической балансировки, выполняемой перед очередным опросом (если она окажется необходимой), для каждого агента заново определяется множество источников данных, которые он должен опрашивать.

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

Таким образом, на этапе локальной балансировки агенты руководствуются критерием

|DSm n DLm |  max и учитывают следующие ограничения на количество доступных ресурсов:

zi • |DLm| £ Rmi, m = 1, Nsa , i = 1,3, где Zi - количество ресурсов i-го типа, требуемое для опроса источника данных; Rmi - количество доступных ресурсов i-го типа m-го агента до начала выполнения локальной балансировки. Предполагается, что каждый сервер имеет четыре типа ресурсов: ресурсы процессора, памяти, сети и магнитных дисков, нумеруемые индексами i = 1,2,3,4 соответственно. Предварительный анализ показал, что ресурсы внешней памяти (i = 4 ) в данных алгоритмах можно не учитывать.

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

Пусть DSm - подмножество своих источников данных, опрос которых сможет выполнить m-й агент, т.е. DS'm с DSm; DPm - подмножество своих источников данных, которое будет передано родительскому агенту для опроса другими агентами во время выполнения второго этапа балансировки - многоуровневой балансировки, DSm = DS'm u DPm; DCm - множество источников данных, которые будут переданы для опроса агенту sm на втором этапе балансировки. Пусть также SCm - множество дочерних агентов у агента sm в логической (иерархической) структуре агентов, а fsm -значение флага синхронизации для m-го агента.

В процессе локальной балансировки m-й агент, (m = 1, Nsa ), выполняет следующие шаги алгоритма.

1. Определяет максимальное число источников данных, которое он

R

может опросить, N^s max m = min —mL, а затем устанавливает DLm = 0.

i=1,3 Zi

2. Проверяет выполнение условия N¿s тах m > |DSm|. Если условие

не выполняется, переход к шагу 4.

3. У агента достаточно ресурсов для опроса всех своих источников данных, т.е. DSm = DSm. Переход к шагу 5.

4. У агента недостаточно ресурсов, чтобы опросить все размещенные на нем источники. Агент формирует произвольное подмножество DS'm размерностью Nc^s тах m из множества назначенных ему для хранения источников, т.е. DSm^ с DSm, | DSm^ |= Nc^sтахm . Оставшиеся источники составят множество DPm = DSm \ DS/m, содержащее | DSm | -Nds тах щ источников.

5. Множество DSm включается в решение DLm: DLm = DSm .

6. Агент приступает к опросу распределенных ему источников данных (множества DS'm).

7. Агент обновляет количество оставшихся у него ресурсов:

ЯтI = Ят1 — ' |DSm |, 1 = !,3,

Ят1 = ЯтI, 1 = !,3.

8. Если у агента нет потомков (является терминальной вершиной дерева агентов), он пересылает родительскому агенту множества DPm и

{Ящ 1I = 1,3} и устанавливает флаг синхронизации fsm = 1. Выполнение

первого этапа балансировки завершается.

Все множество агентов в контексте логического дерева можно разделить на множества терминальных вершин и узлов. Множество узлов, в

свою очередь, можно разбить на подмножества STl, I = 1,2,..., соответствующие уровням логического дерева.

Второй этап динамической балансировки - многоуровневая балансировка - вначале выполняется параллельно агентами sm множества ST1, у которого все потомки являются терминальными вершинами логического дерева агентов, т.е. "sm, sm е ST1, если "п^п е SCmfsn = 1. Многоуровневая балансировка осуществляется посредством многократного выполнения базовых двухуровневых балансировок, каждая из которых выполняется на поддереве, включающем агента и все его дочерние узлы/вершины. Например, поддеревом агента sm является множество SDm = ^т} и SCm. Балансировка поддеревьев будет автоматически запускаться на любом агенте, у всех потомков которого флаг синхронизации установлен в 1. В начале многоуровневой балансировки флаги синхронизации установлены только у терминальных вершин дерева. Затем этот флаг будет установлен у тех узлов дерева, поддеревья которых выполнили балансировку. Если не учитывать различную скорость выполнения двух-

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

на агентах-узлах множества ST1, затем ST2 и т.д.

Рассмотрим алгоритм балансировки поддерева, выполняемый агентом sm е ST1 i-го уровня дерева, i = 1,2,....

1. Для агентов поддерева SDm = {sm} u SCm агент sm определяет максимальное число источников данных, которые может опросить каждый

R

из агентов поддерева: Vn,sn е SDm : N^smaxn = min—^, где Rni - коли-

i=1,3 ^

чество доступных ресурсов i-го типа n-го агента после выполнения локальной балансировки.

2. Для каждого агента множества SDm создается пустое множество DCn (Vn, sn е SDm  DCn = 0), которое будет содержать источники данных, назначаемые для опроса соответствующему агенту на данном этапе.

3. Агенты множества SDm отсортировываются по убыванию величины Nds max n. Отсортированное множество имеет вид

SDm = {sk Vk(k < \SDm ^Nds max к > Nds max к+1} .

4. Множества DCn заполняются нераспределенными источниками данных в соответствии со значениями максимального количества источников данных Nds max n, которые можно назначить агенту для опроса.

Работа алгоритма назначения источников данных для опроса основана на введении дискретных уровней l = 1,2,... для величин N^smaxn,

причем l = 1 будет соответствовать наибольшему значению Nds max n (рис. 1). Если встречается несколько агентов с равными значениями Ndsmaxn, они объединяются в один уровень, т.е. l = 1,lmax, lmax £ |SDm|.

Обозначим значение величины N^s max n, которое соответствует уровню l, как Nlevl.

Обозначим через Nl максимальное количество источников данных, добавляемых на уровне l к каждому из множеств DCn, у которых

Nds max n ^ Nlevl:

Vl, l < lmax  Nl = Nlevl - Nlevl+1; l lmax  Nlmax Nlevlmax .

Пусть DMm = u DPn u DPm - множество нераспределенных

sn eSCm

источников данных для поддерева SDm = {sm} u SCm, которые, возможно,

будут перераспределены между узлами данного поддерева. Текущую копию этого множества обозначим как DM/m = DMm, где DM/m = ^^}.

Рис. 1. Распределение источников данных по уровням

Если значение N^s max n у агента больше или равно значению Nlev i (агент находится на уровне l), то ему назначаются для опроса Nl произвольных источников данных из множества DM'm, которые включаются в множество DСn. Условие завершения данного шага: DM'm = 0

или DMm Ф 01 = lmax .

Например, на рис. 1 на первом уровне агенту si будет назначено для опроса ( Nds maxi - N^s max2) источников данных, на втором агентам

sb s2 - ( Nds max 3 Nds max 2 ) источников данных и т.д.

5. Множества DСn включаются в решение: DL'n= DCn u DLn,

DLn = DLn, sn G SDm .

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

min(Rmi - Zi\DLm|)  max,i = 1,3,m = 1,Nsa .

m,i

6. При невозможности распределить источники данных между потомками они объединяются в множество для передачи родителю. Для этого агент sm сначала очищает множество DPm =0, а затем добавляет в него источники данных:

DPm = DMm \

u

"n,sn^SDm

DC

n

7. Затем производится подсчет оставшихся ресурсов:

^т = ^т — ' |^Сп| ' = ^т , * = -1,3 , ^п е .

8. Агент пересылает потомкам множества источников данных для опроса БСп ("п, 8п е £От).

9. Агент 8т пересылает родительскому агенту, принадлежащему

множеству БТ*+1, сформированные в результате балансировки поддерева множества БРт и {Ят* | * = 1,3}.

10. Агент 8т устанавливает флаг синхронизации /8т = 1.

Алгоритм двухуровневых балансировок считается завершившимся,

когда закончится балансировка поддерева корневого узла-агента. Если при этом окажется, что БРт = 0, балансировка нагрузки завершена. Если же БРт Ф0, то агент-корень дерева должен выполнить глобальную многоуровневую балансировку. В этом случае он последовательно просматривает запасы ресурсов у каждого агента системы мониторинга и назначает нераспределенные источники для опроса агентам, у которых запасы ресурсов будут обнаружены.

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

Для оценки производительности алгоритма локальной балансировки было создано тестовое программное обеспечение, решающее задачу локальной балансировки, со встроенными функциями для измерения требуемой виртуальной памяти и используемых ресурсов процессора. Оба параметра считывались из файла /ргое/[р1ё]/в1а1;, где [р1ё] - идентификатор процесса локальной балансировки. На рис. 2 и 3 приведены результаты исследований.

Рис. 2. Длительность работы алгоритма локальной балансировки

Количество назначенных для хранения источников данных в обоих случаях варьировалось от 100 до 10000 с шагом 100. В качестве меры потребления ресурсов процессора было принято количество тиков (clock ticks), которые исследуемый процесс занимает ядро процессора, работая в режиме пользователя (user mode) или в режиме ядра (kernel mode). Отметим, что величина тика варьируется для различных версий ядра операционной системы Linux и ее дистрибутивов. Количество тиков в секунду определяется константой конфигурирования ядра CONFIG_HZ, которая на исследуемой системе была равна 250, т.е. длительность одного тика составляла 4 мс. Частота процессорного ядра исследуемой машины - 3 ГГЦ, количество ядер - 1. График real time (рис. 2) отображает реальную длительность работы алгоритма, а CPU time - длительность использования процессора. Как видно из графика на рис. 2, зависимость длительности использования процессора от количества назначенных для опроса источников данных практически линейная и выражается следующим образом:

t = (3,599 • 10-5)N, где t - период времени, на который надо занять ядро

процессора для работы алгоритма, N - количество назначенных для опроса источников данных.

Расход памяти, требуемый для организации хранения временных таблиц с источниками данных, также линейно зависит от количества источников данных, назначенных для хранения (рис. 3). Уравнение зависимости: q = 436,63N, где q - количество виртуальной памяти (в байтах), необходимой алгоритму локальной балансировки.

б ю6-1-1-1-1-

memory, В

О 2000 4000 6000 8000 1 104

Рис. 3. Потребление памяти при работе алгоритма локальной балансировки

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

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

Список литературы

1. Matthew L. Massie, Brent N. Chun, David E. Culler. The ganglia distributed monitoring system: design, implementation, and experience // Parallel Computing. №30. 2004. P. 817 - 840.

2. Distributed Nagios eXecutor. Intellectual Reserve, Inc, 2010. [Электронный ресурс] URL: http://dnx.sourceforge.net/ (дата обращения 19.09.2011).

3. Yagoubi B., Slimani Y. Task Load Balancing Strategy for Grid Computing // Journal of Computer Science 3 (3): Department of Computer Science, Faculty of Sciences. Oran: University of Oran. 2007. P. 186-194.

4. Yagoubi B., Meddeber M. Distributed Load Balancing Model for Grid Computing // Revue ARIMA. Vol. 12. 2010. P. 43-60.

5. Берсенев Г.Б., Бабич А.В. Задача динамического конфигурирования системы мониторинга корпоративной сети // XLVI Всероссийская конференция по проблемам математики, информатики, физики и химии: тезисы докладов. Секции математики и информатики. М.: РУДН, 2010. C. 92.

6. Берсенев Г.Б., Бабич А.В. Задачи и алгоритмы динамического конфигурирования распределенной системы мониторинга // Вычислительная техника и информационные технологии: сборник научных статей. Вып. 2. Тула: ТулГУ, 2010. С. 10-21.

A. V. Babich, G.B. Bersenev

DYNAMIC LOAD BALANCING ALGORITHMS IN DISTRIBUTED SYSTEM OF ACTIVE NETWORK MONITORING

Creation issues of distributed systems of active network monitoring that use free resources of corporate network servers are considered. The algorithms of local and multilevel load balancing was proposed, the research results of efficiency of local load balancing algorithm was presented. Dynamic load balancing algorithm for polling in distributed network monitoring system that uses only free resources of network servers is considering. The research of CPU and memory efficiency was carried out.

Key words: corporate network, active monitoring, SNMP, distributed system, load balancing.

Получено 16.09.11