XCAT: различия между версиями

Материал из ALT Linux Wiki
Строка 137: Строка 137:
  # git checkout pathces
  # git checkout pathces
  # git merge -s subtree master
  # git merge -s subtree master
Исправляем конфликты.
При наличии конфликтов, исправляем их:
# git add конфликтыный_файл
# git commit
Втягиваем ветку patches в каждую ветку, отвечающую за отдельный RPM пакет. Например:
# git checkout perl-xCAT.rpm
# git merge patches # должно проходить гладко
Обновляем SPEC файл.

Версия от 12:00, 11 января 2010


xCAT stateless

Убедится что во время установки xCAT правильно определил имя сервера на котором он будет работать:

# openssl x509 -text -in /etc/xcat/cert/server-cert.pem -noout | grep Sub
Subject: CN=mn.cluster

Если имя определено не правильно тогда:

  • настроить /etc/sysconfig/network, перезагрузить компьютер.
  • Проверить правильно идет ли распознавание имени:
# gethostip mn.cluster
mn.cluster 172.16.2.2 AC100202
  • Перегенерить все сертификаты для новго имени (все настройки будут сброшены):
# xcatconfig -f

Добавляем сети с которыми будет работать xCAT:

# chtab net="172.16.2.0" networks.netname="clusterNet" networks.gateway="172.16.2.1" networks.dhcpserver="172.16.2.2" networks.tftpserver="172.16.2.2" networks.nameservers="172.16.2.2" networks.dynamicrange="172.16.2.200-172.16.2.250"

Посмотрим все сети о которых знает xCAT:

# lsdef -t network -l
Object name: clusterNet
   dhcpserver=172.16.2.2
   dynamicrange=172.16.2.200-172.16.2.250
   gateway=172.16.2.1
   mask=255.255.255.0
   mgtifname=eth0
   nameservers=172.16.2.2
   net=172.16.2.0
   tftpserver=172.16.2.2

Добавим узел:

# nodeadd node1 groups=real,all
# chtab node=node1 hosts.ip="172.16.2.11"

Часть параметров для узла хранятся в таблице `hosts':

# tabdump hosts
#node,ip,hostnames,otherinterfaces,comments,disable
"node1","172.16.2.11",,,,

Без механизма Discovery необходимо знать MAC:

# chtab node="node1" mac.mac="2a:2a:2a:2a:2a:2a"

Необходимо выполнить следующую команду:

# makehosts

Эта команда пропишет соответствия `имя - IP' в файл для всех узлов заданных в xCAT:

# cat /etc/hosts
127.0.0.1       localhost.localdomain localhost
172.16.2.2      mn.cluster mn
172.16.2.11 node1 node1.cluster

Необходимо задать IP где работает bind который будет обслуживать имена в рамках xCAT. Обычно такой bind работает на managment node:

# chtab key=nameservers site.value="172.16.2.2"

Все другие запросы по разрешению имя-IP будут перенаправляться внешнему nameserver-у:

# chtab key=forwarders site.value="10.2.0.1"

Проверим:

# tabdump site | grep -E 'name|forw'
"nameservers","172.16.2.2",,
"forwarders","10.2.0.1",,

В ALT Linux bind работает в chroot окружении, поэтому:

# chtab key=binddir site.value="/var/lib/bind/zone/"
# chtab key=bindzones site.value="/zone/"

Обновим настройки BIND:

# makedns

Смотрим /etc/named.conf Смотрим /var/lib/bind/zone/db.*

# service bind restart

Для DHCP сервера скажем, что все неопознанные узлы должны пройти discovery:

# makedhcp -n
# grep dynamic /etc/dhcp/dhcpd.conf

range dynamic-bootp 172.16.2.200 172.16.2.250;

# service dhcpd restart

XXX: discovery не работает

# chtab node=compute chain.chain="runcmd=bmcsetup,standby" chain.ondiscover=nodediscover

XXX: пока /tftpboot находится в корне необходимо изменить настройки для atftpd: edit /etc/sysconfig/atftpd : ATFTPD_EXTRA_ARGS="/tftpboot"

# service atftpd restart
# chkconfig atftpd on

Конфигурацией ISC DHCP сервера можно управлять без перезагрузки, что и делает xCAT. Обновим конфигурацию DHCP сервера информацией о узеле:

# makedhcp node1
# cat /var/lib/dhcp/dhcpd/state/dhcpd.leases

Укажем какая ОС должна выполняться на узле:

# chtab node=node1 nodetype.os=alt nodetype.arch=x86_64 nodetype.profile=compute nodetype.nodetype=osi
# chtab node=node1 noderes.netboot=pxe noderes.tftpserver=172.16.2.2 noderes.nfsserver=172.16.2.2 noderes.installnic=eth1 noderes.primarynic=eth1

Скопируем установочный CD. На основе этого CD будет создаваться statefull или stateless система:

# copycds -n alt -a x86_64 /build/lioka/skif/altlinux-skif-x86_64-20091204.iso

XXX: отредактируем /usr/share/xcat/netboot/alt/mkimage/sources.list Создадим stateless rootfs:

# genimage -i eth1 -n e1000e -o alt -p compute

Упакуем этот rootfs:

# packimage -p compute -o alt -a x86_64 -m nfs

Скажем чтобы узел загрузился по сети в stateless режим:

# nodeset node1 netboot

После чего:

# cat /tftpboot/pxelinux.cfg/node1 
#netboot alt-x86_64-compute
DEFAULT xCAT
 LABEL xCAT
 KERNEL xcat/netboot/alt/x86_64/compute/kernel
 APPEND initrd=xcat/netboot/alt/x86_64/compute/initrd.gz fastboot imgurl=nfs://172.16.2.2/install/netboot/alt/x86_64/compute/rootimg 

Можно включит node1 через консоль управления BMC (Server Control Baseboard Management Controller) или вручную.

Проверим в каком режиме работает наш узел после того как загрузится по сети:

# nodestat node1
node1: sshd

xCAT для управления BMC

Write me.

xCAT statefull

На каждом узле заводится локальный аккаунт администратора (root). Пароль можно задать до установки системы:

# chtab key=system passwd.username=root passwd.password=cluster

Возможные значения ключа: blade (management module), ipmi (BMC), system (nodes), omapi (DHCP), hmc, ivm, fsp. Значение ключа system ассоциируется с вычислительными узлами.

Не для всех

Клонируем официальный SVN репозиторий себе на локальную машину

# rsync -av 'xcat.svn.sourceforge.net::svn/xcat/*' .

Исходники для RPM пакетов xCAT ведутся в git репозитории. Импортируем всю историю разработки xCAT в git репозиторий:

# cat .git/config
  [svn-remote "svn"]
       url = file:///home/stanv/xcat.svn
       fetch = xcat-core/trunk:refs/remotes/trunk
# git svn fetch

Ветка remotes/trunk будет указывать на последний коммит в trunk SVN репозитории.

Ветка master соответствует исходному коду разработчиков, без каких либо изменений.

# git checkout master
# git merge remotes/trunk

Ветка patches содержит все наработки по адаптированию xCAT для ALT Linux.

# git checkout pathces
# git merge -s subtree master

При наличии конфликтов, исправляем их:

# git add конфликтыный_файл
# git commit

Втягиваем ветку patches в каждую ветку, отвечающую за отдельный RPM пакет. Например:

# git checkout perl-xCAT.rpm
# git merge patches # должно проходить гладко

Обновляем SPEC файл.