2008/02/22

Red Hat Cluster: CentOS 5.1上でRHCSを使ってみる・その3・DomU dcXのインストール

DomU dc[123]をインストールする。既に述べたとおり、以下の通り実行する。
この様に構成すると、すぐにクリーンインストール状態に戻すことが可能。試行錯誤を繰り返しながら検証するような場合に便利。
  • dc[0-3]に対して、設定ファイル/etc/xen/dc[0-3]により、MACアドレス00:16:3e:3a:cb:0[0-3]を与える。
  • DHCPサーバは、00:16:3e:3a:cb:0[0-3]に対して、それぞれ固定IPアドレス192.168.55.[6-9]を与える。
  • DNSサーバは、これらの正引き・逆引きを提供する。つまり、dc1.xenclusterに192.168.55.7、dc2.xenclusterに172.168.55.8、…といった具合。
  • dc[0-3]は、DNS逆引きを使って自分自身のFQDNを決定する。
この様に構成すると、DomUの設定ファイルを変更し、ネットワークに投入するだけで、設定変更可能。直接dc*にログインする必要がない。

プロトタイプdc0のインストールに使用するKickstart設定ファイルks=http://repository.xencluster/centos/5/dcX-ks.cfgは以下の通り。
logging --host=192.168.55.192 --level=debug

install
url --url http://repository.xencluster/centos/5/os/i386
lang en_US.UTF-8
keyboard jp106
network --device eth0 --bootproto dhcp --hostname=localhost.localdomain
rootpw --iscrypted $1$KAWvpPhY$2pUQEq/OY2NFyUpCq7OWe/
firewall --enabled --ssh --port=snmp:udp
authconfig --enableshadow --enablemd5
selinux --permissive
timezone Asia/Tokyo
bootloader --location=mbr --driveorder=xvda --append="console=xvc0"

services --enabled=ntpd,oddjobd,snmpd --disabled=avahi-daemon,bluetooth,cpuspeed,cups,hidd,lm_sensors,mdmonitor,microcode_ctl,nfslock,pcscd,smartd,yum-updatesd

clearpart --all --drives=xvda
part /boot --fstype ext3 --size=100 --ondisk=xvda
part pv.2 --size=0 --grow --ondisk=xvda
volgroup VolGroup00 --pesize=32768 pv.2
logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=272 --grow --maxsize=544
logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow
repo --name=base --baseurl=http://repository.xencluster/centos/5/os/i386/
repo --name=updates --baseurl=http://repository.xencluster/centos/5/updates/i386/
repo --name=addons --baseurl=http://repository.xencluster/centos/5/addons/i386/
repo --name=extras --baseurl=http://repository.xencluster/centos/5/extras/i386/

reboot

%packages
@admin-tools
@base
@cluster-storage
@clustering
@core
@emacs
@mail-server
@network-server
@ruby
@server-cfg
@system-tools
@text-internet
@web-server
-smartmontools
-OpenIPMI*
-squid
-samba-*
-system-config-samba
lynx
tftp
kmod-gfs-xen
kmod-gnbd-xen
-NetworkManager
-bluez-utils
device-mapper-multipath
-irda-utils
-pcmciautils
net-snmp-utils
net-snmp-libs
net-snmp
-kmod-gfs
-kmod-gnbd
-kernel

%post --log=/mnt/sysimage/root/install-post.log
### network
echo 'NOZEROCONF=yes' >> /etc/sysconfig/network

/bin/cp -p /etc/sysconfig/network-scripts/ifcfg-eth0 /tmp/ifcfg-eth0
/bin/sed 's/^HWADDR=/#HWADDR=/' < /tmp/ifcfg-eth0 > /etc/sysconfig/network-scripts/ifcfg-eth0

### logrotate
/bin/cat > /etc/logrotate.d/00local.conf <<EOL
rotate 20
compress
start 100
EOL
/sbin/restorecon /etc/logrotate.d/00local.conf

### yum update from the local repository
/bin/cp -p /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.dist
/bin/sed 's/mirrorlist=/#mirrorlist=/
s/#baseurl=/baseurl=/
s/mirror.centos.org/repository.xencluster/' < /etc/yum.repos.d/CentOS-Base.repo.dist > /etc/yum.repos.d/CentOS-Base.repo

### For Cluster
##### /etc/cluster/fence_xvm.key
/usr/bin/base64 -di > /etc/cluster/fence_xvm.key <<EOL
Atf+JoYSVwnPqBR8vnbG68EaY/Y4sr570YywcWXUcsZD6BwQAMA0x62YIMSlHArX60JzvNeh95x7
!CUT!
6IA5qNzen6s+XVJnOw8k3zUbll2hDNHeSp4lXDvxu0b1o885eix+9G3PDnIk78pdW7==
EOL
/bin/chmod 600 /etc/cluster/fence_xvm.key
/sbin/restorecon /etc/cluster/fence_xvm.key

##### iptables
/bin/cp -p /etc/sysconfig/iptables /etc/sysconfig/iptables.dist
/bin/cat > /etc/sysconfig/iptables <<EOL
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -s 192.168.55.0/24 -i eth0 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
EOL

### sshd
/bin/cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.dist
/bin/sed 's/^PasswordAuthentication yes/PasswordAuthentication no/' < /etc/ssh/sshd_config.dist > /etc/ssh/sshd_config

/bin/mkdir ~root/.ssh
/bin/chmod 600 ~root/.ssh
/bin/cat > ~root/.ssh/authorized_keys2 <<EOL
ssh-dss AAAA!CUT!N someone@somehost
EOL
/bin/chmod 644 ~root/.ssh/authorized_keys2

### Mail
##### /etc/mail/sendmail.cf
/usr/bin/patch /etc/mail/sendmail.mc <<EOL
26c26
< dnl define(\`SMART_HOST', \`smtp.your.provider')dnl
---
> define(\`SMART_HOST', \`mx.xencluster')dnl
EOL
(cd /etc/mail; /usr/bin/make sendmail.cf)

##### /etc/aliases
/usr/bin/patch /etc/aliases <<EOL
96c96
< #root: marc
---
> root: root@xencluster
EOL
/usr/bin/newaliases

### SNMP
/bin/cat > /etc/snmp/snmpd.conf <<EOL
com2sec localhost localhost COMMUNITY_STRING
com2sec localnet 192.168.55.0/24 COMMUNITY_STRING

group gOpLocalhost v1 localhost
group gOpLocalhost v2c localhost
group gOpLocalnet v1 localnet
group gOpLocalnet v2c localnet

view all included .1
view systemview included REDHAT-CLUSTER-MIB:RedHatCluster

access gOpLocalhost "" any noauth exact all none all
access gOpLocalnet "" any noauth exact all none all

syslocation Unknown
syscontact root@xencluster

disk / 100000

load 10

# for cluster
dlmod RedHatCluster /usr/lib/cluster-snmp/libClusterMonitorSnmp.so
EOL

/bin/cat > /etc/snmp/snmp.conf <<EOL
mibs +REDHAT-MIB:REDHAT-CLUSTER-MIB
EOL

### NTP on Xen DomU
/bin/cat >> /etc/sysctl.conf <<EOL

# For ntpd on Xen DomU.
xen.independent_wallclock = 1
EOL

### cron
/bin/cp -p /etc/crontab /etc/crontab.dist
/bin/sed 's/^\(..\) 4 /\1 5 /' < /etc/crontab.dist > /etc/crontab

### grub
log_mesg "grub"
/bin/cp -p /boot/grub/grub.conf /boot/grub/grub.conf.dist
/bin/sed 's/ rhgb quiet//' < /boot/grub/grub.conf.dist > /boot/grub/grub.conf

### /etc/bashrc
log_mesg "bashrc"
/bin/cp -p /etc/bashrc /etc/bashrc.dist
/bin/sed 's/xterm\*)/xterm*|vt100*)/' < /etc/bashrc.dist > /etc/bashrc
%postスクリプトについては、以下の点に注意。
  • 仮想マシンフェンスを行うためのキーファイル/etc/cluster/fence_xvm.keyを作成する。これは、ノードfs1と共有される。
  • ファイアウォール(iptables)の設定ファイルを変更している。これは、クラスタ関係の通信を妨げないため。具体的には、192.168.55/24からの通信をすべて許可している(これは緩過ぎるのだが…)
  • DomUで、Dom0と独立して時刻を管理できるよう、/etc/sysctl.confを修正する(『XenのDomUでNTPを使う』参照)
  • Cronの実行時刻がDom0 fs1と競合しないよう、/etc/crontabを修正する(『日次実行時刻の変更』参照)

プロトタイプdc0のインストール作業は、fs1上で以下の様に実行する。
[root@fs1 ~]# lvcreate --name=LogVolDc0 --size=4G /dev/VolGroupXX
Logical volume "LogVolDc0" created
[root@fs1 ~]# virt-install --name=dc0 --ram=256 --file=/dev/VolGroupXX/LogVolDc0 --location=http://repository.xencluster/centos/5/os/i386 --nographics --paravirt --bridge=xenbr4000 --extra-args='ks=http://repository.xencluster/centos/5/dcX-ks.cfg' --mac=00:16:3e:3a:cb:00


Starting install...
Retrieving CentOS... 557 kB 00:00
Retrieving vmlinuz... 100% |=========================| 2.0 MB 00:00
...
インストールが完了したら、dc0を停止し、dc[123]に対するスナップショットLV LogVolDc[123]を作成する。
[root@fs1 ~]# lvcreate --snapshot --name=LogVolDc1 --size=1G /dev/VolGroupXX/LogVolDc0
Logical volume "LogVolDc1" created
[root@fs1 ~]# lvcreate --snapshot --name=LogVolDc2 --size=1G /dev/VolGroupXX/LogVolDc0
Logical volume "LogVolDc2" created
[root@fs1 ~]# lvcreate --snapshot --name=LogVolDc3 --size=1G /dev/VolGroupXX/LogVolDc0
Logical volume "LogVolDc3" created
[root@fs1 ~]#
DomUの設定ファイルを生成する。
[root@fs1 ~]# sed 's/LogVolDc0/LogVolDc1/
s/"dc0"/"dc1"/
s/00:16:3e:3a:cb:00/00:16:3e:3a:cb:01/
s/uuid = ".*"/uuid = "'`uuidgen`'"/
s/memory = .*/memory = 64/' < /etc/xen/dc0 > /etc/xen/dc1

[root@fs1 ~]# sed 's/LogVolDc0/LogVolDc2/
s/"dc0"/"dc2"/
s/00:16:3e:3a:cb:00/00:16:3e:3a:cb:02/
s/uuid = ".*"/uuid = "'`uuidgen`'"/
s/memory = .*/memory = 64/' < /etc/xen/dc0 > /etc/xen/dc2

[root@fs1 ~]# sed 's/LogVolDc0/LogVolDc3/
s/"dc0"/"dc3"/
s/00:16:3e:3a:cb:00/00:16:3e:3a:cb:03/
s/uuid = ".*"/uuid = "'`uuidgen`'"/
s/memory = .*/memory = 64/' < /etc/xen/dc0 > /etc/xen/dc3

[root@fs1 ~]#
以上でdc[123]を起動する準備が完了した。コマンドラインから、xm create -c dc1の様に起動する。

その1・概要
その2・Dom0 fsXのインストール
その3・DomU dcXのインストール
その4・DomU bs1のインストール
その5・Luciの準備
その6・クラスタcDom0sの生成
その7・クラスタcDomUsの生成
その8・クラスタ動作の試験

0 件のコメント: