Распределенные и параллельные вычисления/Ganglia
Ganglia (Шаблон:Transcription) — масштабируемая распределенная система мониторинга кластеров[1] параллельных и распределенных (англ. grid) вычислений и облачных систем с иерархической структурой. Позволяет наблюдать статистику и историю (загруженность процессоров, сети) вычислений в реальном времени для каждой из наблюдаемых машин.[2]
Ganglia | |
Страница статистики серверов Викимедия, сформированная системой Ganglia
| |
Тип | Мониторинг параллельных вычислений |
Написана на | C, Perl, PHP, Python |
ОС | Кроссплатформенное программное обеспечение |
Язык интерфейса | Английский |
Последняя версия | 3.1.7 (Шаблон:Date) |
Лицензия | Лицензия BSD |
Сайт | www.ganglia.info |

Проект 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 необходимо выполнить команду:
Мы устанавливаем программу chkconfig для того чтобы иметь возможность управлять автоматическим запуском демонов при старте системы. В Fedora chkconfig как правило уже есть в системе, поэтому команда установки сокращается до:
sudo yum install ganglia-gmond
Предполагается, что веб-сервер уже установлен. После установки вы можете открыть страницу статистики Ganglia, для это перейдите по адресу:
http://localhost/ganglia/
Если открыть страницу не удалось, то необходимо скопировать конфигурационный файл пакета ganglia-webfrontend в папку кофигурации виртуальных хостов Apache:
service apache2 restart
Демоны gmetad и gmond должны запускаться автоматически при старте системы, для того чтобы проверить так ли это необходимо выполнить команду:
gmetad 0:off 1:off 2:on 3:on 4:on 5:on 6:off
В результате выполнения команды мы должны увидеть gmetad и/илиgmond с опциями загрузки «on». Если на всех уровнях выставлено значение «off», то можно включить сервисы командой:
chkconfig --level 2345 gmond on
это сработает только в том случае если демоны зарегистрированы как сервисы. Если нет, то можно прописать старт демона вручную, скопировав скрипт запуска из директории с исходным кодом Ganglia в директорию инициализации системы:[6]
% 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
Однако в Ubuntu вы увидите сообщение об ошибке, потому что в этой ОС используется отличная от других систем структура директорий инициализации системы. Поэтому иногда может понадобится создать несколько символических ссылок, для подмены не существующих директорий, которые использует Ganglia:[7]
mkdir /etc/rc.d/init.d
Настройка Править
Имя кластера прописывается в файле /etc/ganglia/gmond.conf. Если необходимо назначить кластеру имя clustername, то нужно прописать:
cluster {
name = "clustername"
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
В качестве IP адреса по умолчанию используется 239.2.11.71, его можно прописывать как дополнительный для интерфейса который соединен с кластером.
Источники данных указываются в конфигурационном файле демона gmetad — gmetad.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 получает данные с хостов необходимо выполнить в терминале команду:
где 8649 стандартный порт Ganglia.
Демоны Править
gmetad Править
gmetad (Ganglia метадемон) Для сбора информации и её отображения на стороне пользователя в системе Ganglia используется gmetad.[8] По умолчанию для получения данных от других клиентов используется 8651 порт. Конфигурационный файл можно найти в директории:
/etc/ganglia/gmetad.conf
Исполняемый файл самого демона находится в директории:
/usr/sbin/gmetad
gmond Править
gmond (англ. Ganglia monitoring daemon) — демон который запускается на всех узлах для которых необходимо собирать статистику. Конфигурационный файл можно найти в директории:
/etc/ganglia/gmond.conf
Для получения справки о параметрах конфигурационного файла, можно использовать команду:
Исполняемый файл находится в директории:
/usr/sbin/gmond
Модули Править
gstat Править
gstat (англ. Ganglia Cluster Status Tool) — утилита командной строки, позволяющая импортировать информацию из Ganglia в другие приложения.[9]
/usr/bin/gstat
Для того чтобы отобразить список основных команд, используется комманда:
gstat --help
Для отображение полной справочной информации можно воспользоваться командой man
:
man gstat
gmetric Править
Используется для ввода данных из сторонних источников в Ganglia.[10]
/usr/bin/gmetric
gexec Править
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.
Примечания Править
- ↑ Материалы Девятой международной конференции-семинара ВЫСОКОПРОИЗВОДИТЕЛЬНЫЕ ПАРАЛЛЕЛЬНЫЕ ВЫЧИСЛЕНИЯ НА КЛАСТЕРНЫХ СИСТЕМАХ / С.М. Аракелян (ответственный редактор). — Владимир: Издательство Владимирского государственного университета, 2009. — С. 65. — 437 с. — 150 экз. экз. — ISBN 978-5-89368-958-7
- ↑ Ganglia:: Wikimedia Wikimedia Cloud Report (англ.)
- ↑ Ganglia Monitoring System
- ↑ start [UC Berkeley Clustered Computing]
- ↑ Official TemplatePower Website
- ↑ а б Ganglia 3.1.x Installation and Configuration – ganglia
- ↑ How to Install Altiris Agent on Ubuntu | Symantec Connect
- ↑ Ubuntu - Подробная информация о пакете gmetad в natty
- ↑ а б ganglia_readme – ganglia
- ↑ Ganglia и Nagios: Часть 1. Мониторинг коммерческих кластеров с помощью Ganglia
- ↑ authd
- ↑ gexec
- ↑ http://www.cecalc.ula.ve/HPCLC/slides/day_06/Monitoring/Exercises_Monitoring/Ganglia_Cluster_Toolkit.pdf
Литература Править
- Трёхуровневая система мониторинга расширенной функциональности
- Lambert M. Surhone Ganglia (software). — VDM Verlag Dr. Mueller AG & Co. Kg, 2000. — 120 с. — (Betascript). — ISBN 978-6-1319-6802-0
- Ganglia how-to (англ.)