Настройка GridWay для регистрации узлов кластера.

Для регистрации информации о состояния узлов в файл $GLOBUS_LOCATION/etc/globus_wsrf_mds_index/hierarchy.xml необходимо добавить строку:

<upstream>https://member-host:8443/wsrf/services/DefaultIndexService</upstream>

где member-host – имя хоста на котором осуществляется регистрация состояния. Соответственно на этом узле должен быть запущены сервис GridFTP и контейнер GRID служб:

globus:/usr/local/globus-4.2.1/etc/globus_wsrf_mds_index$ netstat -na | grep LIST
tcp        0      0 0.0.0.0:2811                0.0.0.0:*                   LISTEN
tcp        0      0 :::8443                    	 :::*                       LISTEN

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

  • Static Discovery and Monitoring (SS mode);
  • Static Discovery and Dynamic Monitoring (SD mode);
  • Dynamic Discovery and Monitoring (DD mode);
  • Separate Storage and Computing Element (Mixed mode).

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

IM_MAD = mds4:gw_im_mad_mds4_thr:-l etc/gridway/host.list:gridftp:ws

Файл host.list, расположенный в $GLOBUS_LOCATION/etc/gridway содержит имена хостов и указания на файлы, описывающие параметры этих хостов, например:

nnn1.pnpi.nw.ru etc/host.nnn1.pnpi.nw.ru
nnn2.pnpi.nw.ru etc/host.nnn2.pnpi.nw.ru
nnn4.pnpi.nw.ru etc/host.nnn4.pnpi.nw.ru

Файл $GLOBUS_LOCATION/etc/host.nnn1.pnpi.nw.ru может быть как пустым, так и содержать ряд параметров, например:

[globus@nnn1 gridway]$ more ../host.nnn2.pnpi.nw.ru
HOSTNAME="nnn2.pnpi.nw.ru" ARCH="i686" OS_NAME="Linux" OS_VERSION="2.6.4"
  CPU_MODEL="Intel(R) Pentium(R) 4 CPU 2" CPU_MHZ=2539 CPU_FREE=098 CPU_SMP=1
  NODECOUNT=4 SIZE_MEM_MB=503 FREE_MEM_MB=188 SIZE_DISK_MB=55570
  FREE_DISK_MB=39193
  QUEUE_FREENODECOUNT[0]=4 QUEUE_MAXTIME[0]=0 QUEUE_MAXCPUTIME[0]=20
  QUEUE_MAXCOUNT[0]=4 QUEUE_MAXRUNNINGJOBS[0]=0 QUEUE_MAXJOBSINQUEUE[0]=1
  QUEUE_STATUS[0]="enabled" QUEUE_DISPATCHTYPE[0]="batch"

Описание параметров хостов представлено в документации по GridWay

Необходимо также модифицировать файл /etc/sudoers, добавив в него следующие строки:

# GridWay entries

Runas_Alias GW_USERS =  ALL, !root
globus ALL=(GW_USERS) NOPASSWD: /usr/local/globus-4.2.1/bin/gw_em_mad_ws  *
globus ALL=(GW_USERS) NOPASSWD: /usr/local/globus-4.2.1/bin/gw_tm_mad_ftp *
globus ALL=(GW_USERS) NOPASSWD: /usr/local/globus-4.2.1/bin/gw_im_mad_mds4_thr *

Defaults>GW_USERS env_keep="GW_LOCATION GLOBUS_LOCATION"

После внесения указанных изменений перезапускаем метапланировщик GridWay.

Настройка Ganglia

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

yum install ganglia
yum install ganglia-gmond

Далее редактируем файл конфигурации /etc/gmond.conf:

udp_send_channel {
  mcast_join = 212.193.96.53
  port = 8649
  ttl = 1
}

udp_recv_channel {
  port = 8649
}

В параметре mcast_join указываем IP машины на которой запускается gmond.

На каждой машине запускается демон gmond, который собирает системную информацию (скорость процессора, использование памяти и т.д.) и посылает ее на определенную машину. Машина, получающая информацию, может отображать ее, а также передавать некоторую обобщенную форму данных вверх по иерархии.

Запускаем сервис Запускаем сервис gmond:

service gmond start

Запустив telnet localhost 8649 наблюдаем результаты работы:

<GANGLIA_XML VERSION="3.0.7" SOURCE="gmond">
<CLUSTER NAME="unspecified" LOCALTIME="1247643365" OWNER="unspecified" LATLONG="unspecified" URL="unspecified">
<HOST NAME="nnn2.pnpi.nw.ru" IP="212.193.96.53" REPORTED="1247643358" TN="7" TMAX="20" DMAX="0" LOCATION="unspecified" GMOND_STARTED="1247426283">
<METRIC NAME="disk_total" VAL="236.860" TYPE="double" UNITS="GB" TN="745" TMAX="1200" DMAX="0" SLOPE="both" SOURCE="gmond"/>
<METRIC NAME="cpu_speed" VAL="2500" TYPE="uint32" UNITS="MHz" TN="745" TMAX="1200" DMAX="0" SLOPE="zero" SOURCE="gmond"/>
<METRIC NAME="part_max_used" VAL="25.6" TYPE="float" UNITS="%" TN="21" TMAX="180" DMAX="0" SLOPE="both" SOURCE="gmond"/>
<METRIC NAME="swap_total" VAL="5406712" TYPE="uint32" UNITS="KB" TN="745" TMAX="1200" DMAX="0" SLOPE="zero" SOURCE="gmond"/>
<METRIC NAME="os_name" VAL="Linux" TYPE="string" UNITS="" TN="745" TMAX="1200" DMAX="0" SLOPE="zero" SOURCE="gmond"/>
<METRIC NAME="cpu_user" VAL="0.1" TYPE="float" UNITS="%" TN="50" TMAX="90" DMAX="0" SLOPE="both" SOURCE="gmond"/>
<METRIC NAME="cpu_system" VAL="0.0" TYPE="float" UNITS="%" TN="50" TMAX="90" DMAX="0" SLOPE="both" SOURCE="gmond"/>
<METRIC NAME="cpu_aidle" VAL="100.0" TYPE="float" UNITS="%" TN="50" TMAX="3800" DMAX="0" SLOPE="both" SOURCE="gmond"/>
<METRIC NAME="load_five" VAL="0.00" TYPE="float" UNITS=" " TN="20" TMAX="325" DMAX="0" SLOPE="both" SOURCE="gmond"/>
<METRIC NAME="proc_run" VAL="0" TYPE="uint32" UNITS=" " TN="821" TMAX="950" DMAX="0" SLOPE="both" SOURCE="gmond"/>
<METRIC NAME="mem_free" VAL="14278764" TYPE="uint32" UNITS="KB" TN="1" TMAX="180" DMAX="0" SLOPE="both" SOURCE="gmond"/>
<METRIC NAME="mem_buffers" VAL="199116" TYPE="uint32" UNITS="KB" TN="1" TMAX="180" DMAX="0" SLOPE="both" SOURCE="gmond"/>
<METRIC NAME="swap_free" VAL="5406712" TYPE="uint32" UNITS="KB" TN="1" TMAX="180" DMAX="0" SLOPE="both" SOURCE="gmond"/>
<METRIC NAME="bytes_in" VAL="1652.88" TYPE="float" UNITS="bytes/sec" TN="1" TMAX="300" DMAX="0" SLOPE="both" SOURCE="gmond"/>
<METRIC NAME="pkts_out" VAL="17.17" TYPE="float" UNITS="packets/sec" TN="1" TMAX="300" DMAX="0" SLOPE="both" SOURCE="gmond"/>
<METRIC NAME="cpu_num" VAL="8" TYPE="uint16" UNITS="CPUs" TN="745" TMAX="1200" DMAX="0" SLOPE="zero" SOURCE="gmond"/>
<METRIC NAME="disk_free" VAL="221.268" TYPE="double" UNITS="GB" TN="21" TMAX="180" DMAX="0" SLOPE="both" SOURCE="gmond"/>
<METRIC NAME="mem_total" VAL="15469680" TYPE="uint32" UNITS="KB" TN="745" TMAX="1200" DMAX="0" SLOPE="zero" SOURCE="gmond"/>
<METRIC NAME="cpu_wio" VAL="0.0" TYPE="float" UNITS="%" TN="50" TMAX="90" DMAX="0" SLOPE="both" SOURCE="gmond"/>
<METRIC NAME="boottime" VAL="1247426234" TYPE="uint32" UNITS="s" TN="745" TMAX="1200" DMAX="0" SLOPE="zero" SOURCE="gmond"/>
<METRIC NAME="machine_type" VAL="x86" TYPE="string" UNITS="" TN="745" TMAX="1200" DMAX="0" SLOPE="zero" SOURCE="gmond"/>
<METRIC NAME="os_release" VAL="2.6.18-128.1.10.el5xen" TYPE="string" UNITS="" TN="745" TMAX="1200" DMAX="0" SLOPE="zero" SOURCE="gmond"/>
<METRIC NAME="cpu_nice" VAL="0.0" TYPE="float" UNITS="%" TN="50" TMAX="90" DMAX="0" SLOPE="both" SOURCE="gmond"/>
<METRIC NAME="cpu_idle" VAL="99.9" TYPE="float" UNITS="%" TN="50" TMAX="90" DMAX="0" SLOPE="both" SOURCE="gmond"/>
<METRIC NAME="load_one" VAL="0.00" TYPE="float" UNITS=" " TN="20" TMAX="70" DMAX="0" SLOPE="both" SOURCE="gmond"/>
<METRIC NAME="load_fifteen" VAL="0.00" TYPE="float" UNITS=" " TN="20" TMAX="950" DMAX="0" SLOPE="both" SOURCE="gmond"/>
<METRIC NAME="proc_total" VAL="274" TYPE="uint32" UNITS=" " TN="821" TMAX="950" DMAX="0" SLOPE="both" SOURCE="gmond"/>
<METRIC NAME="mem_shared" VAL="0" TYPE="uint32" UNITS="KB" TN="1" TMAX="180" DMAX="0" SLOPE="both" SOURCE="gmond"/>
<METRIC NAME="mem_cached" VAL="564820" TYPE="uint32" UNITS="KB" TN="1" TMAX="180" DMAX="0" SLOPE="both" SOURCE="gmond"/>
<METRIC NAME="gexec" VAL="OFF" TYPE="string" UNITS="" TN="144" TMAX="300" DMAX="0" SLOPE="zero" SOURCE="gmond"/>
<METRIC NAME="bytes_out" VAL="1382.90" TYPE="float" UNITS="bytes/sec" TN="1" TMAX="300" DMAX="0" SLOPE="both" SOURCE="gmond"/>
<METRIC NAME="pkts_in" VAL="18.80" TYPE="float" UNITS="packets/sec" TN="1" TMAX="300" DMAX="0" SLOPE="both" SOURCE="gmond"/>
</HOST>
</CLUSTER>
</GANGLIA_XML>

Для отображения результатов работы gmond в gridway необходимо выполнить:

mds-gluerp-configure none ganglia $GLOBUS_LOCATION/etc/globus_wsrf_mds_index/ganglia-config.xml
mds-gluerp-configure fork ganglia $GLOBUS_LOCATION/etc/globus_wsrf_gram_Fork/gluerp-config.xml
mds-gluerp-configure pbs ganglia $GLOBUS_LOCATION/etc/gram-service-PBS/gluerp-config.xml