XCAT: различия между версиями
Строка 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 файл.