Распределенные и параллельные вычисления/Ganglia

Ganglia (Шаблон:Transcription) — масштабируемая распределенная система мониторинга кластеров[1] параллельных и распределенных (англ. grid) вычислений и облачных систем с иерархической структурой. Позволяет наблюдать статистику и историю (загруженность процессоров, сети) вычислений в реальном времени для каждой из наблюдаемых машин.[2]

Ganglia
Страница статистики серверов Викимедия, сформированная системой Ganglia
Тип Мониторинг параллельных вычислений
Написана на C, Perl, PHP, Python
ОС Кроссплатформенное программное обеспечение
Язык интерфейса Английский
Последняя версия 3.1.7 (Шаблон:Date)
Лицензия Лицензия BSD
Сайт www.ganglia.info
График системы Ganglia, отображающий количество правок статей в Википедии. Отчетливо виден интервал когда сервер Викимедиа перестал отвечать.

Проект Ganglia был создан в 1998 году в Калифорнийском университете в Беркли как продолжение проекта Millennium, который был инициирован Национальным научным фондом США.[3][4]

Назначение и применение

править

Система построена по иерархическому принципу для интеграции кластеров. Для мониторинга состояния кластеров и их объединения используется древовидная система основанная на P2P соединениях и широковещательных протоколах. Система использует широко известные технологии: XML для представления данных, XDR для сжатия данных, RRDtool для хранения и визуализации данных. Она построена на базе тщательно спроектированных алгоритмов и структур данных, что обеспечивает надежность, позволяет свести к минимуму накладные расходы на каждом из узлов и достичь высокой степени параллелизма. Для отображения страниц статистики используется шаблонизатор TemplatePower.[5]

Система была портирована на широкий спектр операционных систем и процессорных архитектур, и в настоящее время используется на более чем 500 кластеров по всему миру. Существует возможность установки Ganglia на следующие операционные системы: Linux (i386, ia64, sparc, alpha, powerpc, m68k, mips, arm, hppa, s390), FreeBSD, NetBSD, OpenBSD, DragonflyBSD, MacOS X, Solaris, AIX, IRIX, Tru64, HPUX и Windows NT/XP/2000/2003/2008.[6] Ganglia используется для связи кластеров в университетских кампусах по всему миру и может масштабироваться для обработки кластеров имеющих до 2000 узлов в своем составе.

Установка

править

Необходимые пакеты для установки системы Ganglia присутствуют в большинстве современных репозиториев операционных систем, построенных на базе Шаблон:Abbr GNU Linux. Поэтому процесс установки не представляет особых сложностей. В Ubuntu необходимо выполнить команду:

sudo apt-get install ganglia-monitor ganglia-webfrontend chkconfig

Мы устанавливаем программу chkconfig для того чтобы иметь возможность управлять автоматическим запуском демонов при старте системы. В Fedora chkconfig как правило уже есть в системе, поэтому команда установки сокращается до:

sudo yum install ganglia
sudo yum install ganglia-gmond

Предполагается, что веб-сервер уже установлен. После установки вы можете открыть страницу статистики Ganglia, для это перейдите по адресу:

http://localhost/ganglia/

Если открыть страницу не удалось, то необходимо скопировать конфигурационный файл пакета ganglia-webfrontend в папку кофигурации виртуальных хостов Apache:

cp /etc/ganglia-webfrontend/apache.conf /etc/apache2/conf.d/ganglia-webfrontend.conf
service apache2 restart

Демоны gmetad и gmond должны запускаться автоматически при старте системы, для того чтобы проверить так ли это необходимо выполнить команду:

chkconfig --list|grep '^gm[etaon]*d'

gmetad 0:off 1:off 2:on 3:on 4:on 5:on 6:off

gmond 0:off 1:off 2:off 3:off 4:off 5:off 6:off

В результате выполнения команды мы должны увидеть gmetad и/илиgmond с опциями загрузки «on». Если на всех уровнях выставлено значение «off», то можно включить сервисы командой:

chkconfig --level 2345 gmetad on
chkconfig --level 2345 gmond on

это сработает только в том случае если демоны зарегистрированы как сервисы. Если нет, то можно прописать старт демона вручную, скопировав скрипт запуска из директории с исходным кодом Ganglia в директорию инициализации системы:[6]

% cp ./gmond/gmond.init /etc/rc.d/init.d/gmond

% chkconfig --add gmond
% chkconfig --list gmond
gmond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
% /etc/rc.d/init.d/gmond start

Starting GANGLIA gmond: [ OK ]

Однако в Ubuntu вы увидите сообщение об ошибке, потому что в этой ОС используется отличная от других систем структура директорий инициализации системы. Поэтому иногда может понадобится создать несколько символических ссылок, для подмены не существующих директорий, которые использует Ganglia:[7]

mkdir /etc/rc.d

mkdir /etc/rc.d/init.d

ln -s /lib/lsb/init-functions /etc/rc.d/init.d/functions


Настройка

править

Имя кластера прописывается в файле /etc/ganglia/gmond.conf. Если необходимо назначить кластеру имя clustername, то нужно прописать:

cluster { 
  name = "clustername" 
  owner = "unspecified" 
  latlong = "unspecified" 
  url = "unspecified" 
}

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

route add -host 239.2.11.71 dev eth1

Источники данных указываются в конфигурационном файле демона gmetadgmetad.conf:

 data_source "Кластер 1" 127.0.0.1  1.2.3.4:8655  1.2.3.5:8625
 data_source "Кластер 2" 1.2.4.4:8655

Для того чтобы увидеть в каком виде Ganglia получает данные с хостов необходимо выполнить в терминале команду:

telnet localhost 8649

где 8649 стандартный порт Ganglia.

 
Загрузка серверов Викимедия, октябрь 2010 года
 
Отказ европейских серверов Викимедия, второе сентября 2010 года

gmetad (Ganglia метадемон) Для сбора информации и её отображения на стороне пользователя в системе Ganglia используется gmetad.[8] По умолчанию для получения данных от других клиентов используется 8651 порт. Конфигурационный файл можно найти в директории:

/etc/ganglia/gmetad.conf

Исполняемый файл самого демона находится в директории:

/usr/sbin/gmetad

gmond (англ. Ganglia monitoring daemon) — демон который запускается на всех узлах для которых необходимо собирать статистику. Конфигурационный файл можно найти в директории:

/etc/ganglia/gmond.conf

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

man gmond.conf

Исполняемый файл находится в директории:

/usr/sbin/gmond

Модули

править

gstat (англ. Ganglia Cluster Status Tool) — утилита командной строки, позволяющая импортировать информацию из Ganglia в другие приложения.[9]

/usr/bin/gstat

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

 gstat --help

Для отображение полной справочной информации можно воспользоваться командой man:

man gstat

Шаблон:Заготовка раздела

Используется для ввода данных из сторонних источников в Ganglia.[10]

/usr/bin/gmetric

Шаблон:Заготовка раздела

gexec (gexecd) — это масштабируемая система удаленного выполнения задач (программ) в кластерах, которая может работать совместно с системой Ganglia. Для удаленного выполнения параллельных (распределенных) заданий используется RSA аутентификация (демон authd).[11] Система прозрачно перенаправляет программные потоки (stdin, stdout, stderr) и события между распределенными процессами, что позволяет создавать распределенную среду переменных окружения и масштабировать систему до более чем 1000 узлов в составе, без потери надежности. Механизм работы основывается на создании древовидного массива всех TCP сокетов между узлами и распространении управляющей информации по всему дереву. С помощью иерархической системы управления, gexec распределяет как и вычислительные задания, так и ресурсы. Это позволяет устранить проблемы, связанные с ограничениями каждого из узлов, например, ограничение на количество открытых дескрипторов файлов.[12]

Для получения списка хостов в кластере gexec опрашивает узел на котором установлен модуль gmond:

# export LD_ASSUME_KERNEL="2.2.5"
# export GEXEC_GMOND_SVRS="host1 host2"
# gexec -n 0 hostname
1 host1
4 host4
3 host3
0 host0
2 host2

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

В gexec интегрирована возможность распределения нагрузки в кластере. Информация о степени загружености узлов запрашивается у gmond. Для балансировки нагрузки задание запускается на наименее загруженных узлах:

gexec -n 5 program

т.е. вышеописанная команда запустит на исполнение программу program на пяти наименее загруженных узлах кластера.[9]

Для включения поддержки gexec в Ganglia необходимо установить соответствующую переменную в конфигурационном файле gmond.conf:

globals{
•••
gexec = yes
•••
}

этот параметр означает, что каждая машина на которой запущен демон gmond будет рассылать специальное сообщение о том, что на машине установлена gexec.

Если вы компилируете Ganglia из исходных кодов, то необходимо явно включить поддержку gexec на стадии конфигурирования:

% ./configure --enable-gexec

gexec можно использовать для выполнения параллельных задач:[13]

gexec -n 12 parprog -in indata.${GEXEC_MY_VNN} -out outdata.${GEXEC_MY_VNN}

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

Основная статья: RRDtool

Хранение и визуализация данных (графики) осуществляется в Ganglia с помощью инструментария RRDtool.

Примечания

править
  1. Материалы Девятой международной конференции-семинара ВЫСОКОПРОИЗВОДИТЕЛЬНЫЕ ПАРАЛЛЕЛЬНЫЕ ВЫЧИСЛЕНИЯ НА КЛАСТЕРНЫХ СИСТЕМАХ / С.М. Аракелян (ответственный редактор). — Владимир: Издательство Владимирского государственного университета, 2009. — С. 65. — 437 с. — 150 экз. экз. — ISBN 978-5-89368-958-7
  2. Ganglia:: Wikimedia Wikimedia Cloud Report (англ.)
  3. Ganglia Monitoring System
  4. start [UC Berkeley Clustered Computing]
  5. Official TemplatePower Website
  6. а б Ganglia 3.1.x Installation and Configuration – ganglia
  7. How to Install Altiris Agent on Ubuntu | Symantec Connect
  8. Ubuntu - Подробная информация о пакете gmetad в natty
  9. а б ganglia_readme – ganglia
  10. Ganglia и Nagios: Часть 1. Мониторинг коммерческих кластеров с помощью Ganglia
  11. authd
  12. gexec
  13. http://www.cecalc.ula.ve/HPCLC/slides/day_06/Monitoring/Exercises_Monitoring/Ganglia_Cluster_Toolkit.pdf

Литература

править

Ссылки

править

Шаблон:ПО для распределенных вычислений