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

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

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

Проект 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[править]

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

/etc/ganglia/gmetad.conf

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

/usr/sbin/gmetad

gmond[править]

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

/etc/ganglia/gmond.conf

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

man 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[править]

Основная статья: 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

Литература[править]

Ссылки[править]

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