
著者:飯坂剛一(いいさかごういち)
Revision 1.0: 2007/12/05
この資料はNPACI Rocks 4.3 をscsbaseロールと共にインストールしたときに、 scsbaseロールが提供する機能を説明するためのもです。
scsbaseロールを使わないでシステムを構築したときでも、 この資料を参考にすることで同様の操作処理ができるようになります。
scsbaseロールが提供するツールについて説明している章についてはSCSBASEと表記し、 NPACI Rocks本来の手順についてはROCKSとして区別します。
インストール時に入力が求められるホスト情報については、 後から変更できますので任意のもので構いません。
ここでは、 ホスト名のFQDNは cluster.hpc.org とします。
もちろん、あらかじめ決まっているのであれば それを入力する方が単純です。
scsbaseロールがインストールされていれば、 クラスタ情報はrocks-config-certコマンドで変更できます。
NPAIC Rockの本来の方法では rocksコマンドで変更します。
# rocks list var service=info SERVICE COMPONENT VALUE Info Born 2007-10-18 04:57:41 Info CertificateCountry US Info CertificateLocality San Diego Info CertificateOrganization SDSC Info CertificateState California Info ClusterContact admin@place.org Info ClusterLatlong N32.87 W117.22 Info ClusterName Our Cluster Info ClusterURL http://www.place.org/ Info RocksRelease Mars Hill Info RocksVersion 4.3
# rocks set var Info ClusterName "新しいクラスタ名" # rocks set var Info CertificateOrganization "新しい組織名" # rocks set var Info CertificateLocality "新しい市町村" # rocks set var Info CertificateState "新しい都道府県" # rocks set var Info CertificateCountry JP # rocks set var Info ClusterContact "新しいメールアドレス" # rocks set var Info ClusterURL "新しいURL" # rocks set var Info ClusterLatlong "新しい緯度経度"
![]() |
ClusterName とFQDN Hostnameの他は unspecified などしても構いません。 |
NPACI Rocks では eth0 がプライベートネットワーク、 eth1 がパブリックネットワークになります。
クラスタ情報と同様に、あらかじめ決まっているのであれば それを入力する方が単純ですが、 これも後から変更するので次の情報で設定します。
IPAddress 192.168.10.1
Netmask 255.255.255.0
IPAddress 172.16.10.1
Netmask 255.255.255.0
Gateway 172.16.10.1
DNS 172.16.10.1
NTP 172.16.10.1
フロントエンドノードインストール後に、 パブリックネットワークの情報を修正する場合は、 scsbaseロールがインストールされていれば、 rocks-config-networks を実行するだけで変更できます。
NPAIC Rockの本来の方法では rocksコマンドで各項目を変更してゆきます。
パブリック側のインタフェースのネットワーク情報を 次のように変更する例について説明してゆきます。
IPAddress 10.30.24.254
Netmask 255.255.248.0
NetmaskCIDR 21
Subnet 10.30.24.0
Gateway 10.30.24.254
Barodcast 10.30.31.255
DNS Server 10.101.108.9
NTP Server 10.101.26.18
現在のサブネットの内容を確認には、 rocks list network とコマンド実行します。
[root@cluster ~]# rocks list network NETWORK SUBNET NETMASK private: 192.168.10.0 255.255.255.0 public: 172.16.10.0 255.255.255.0 gigaeth: 192.168.11.0 255.255.255.0 infiniband: 192.168.12.0 255.255.255.0
次のようにコマンドを実行します。
[root@cluster ~]# rocks set network subnet public 10.30.24.0 [root@cluster ~]# rocks set network netmask public 255.255.248.0
指定したノードのインタフェースの情報を確認するには、 次のようにコマンドを実行します。
# rocks list host interface ホスト名のリスト
フロントエンドノード cluster での実行例:
[root@cluster ~]# rocks list host interface cluster SUBNET IFACE MAC IP NETMASK GATEWAY MODULE NAME private eth0 00:1b:78:9d:ef:b6 192.168.10.1 255.255.255.0 ------------ bnx2 cluster public eth1 00:1b:78:9d:ef:b4 17.16.10.1 255.255.255.0 172.16.10.1 bnx2 cluster.hpc.org
フロントエンドノード cluster の パブリック側(eth1) インタフェース情報を修正する例:
[root@cluster ~]# rocks set host interface iface cluster 00:1b:78:9d:ef:b4 10.30.26.19 [root@cluster ~]# rocks set host interface gateway cluster eht1 10.30.24.254
[root@cluster ~]# rocks list var | grep Public Kickstart PublicAddress 172.16.10.1 Kickstart PublicBroadcast 172.16,10.255 Kickstart PublicDNSDomain hpc.org Kickstart PublicDNSServers 172.16.10.1 Kickstart PublicGateway 172.16.10.1 Kickstart PublicHostname cluster.hpc.org Kickstart PublicKickstartBasedir install Kickstart PublicKickstartHost central.rocksclusters.org Kickstart PublicNetmask 255.255.255.0 Kickstart PublicNetmaskCIDR 24 Kickstart PublicNetwork 172.16.10.0 Kickstart PublicNTPHost 172.16.10.1 Kickstart PublicRootPassword acgClbQjEKfV6
[root@cluster ~]# rocks set var kickstart PublicGateway 10.30.24.254 [root@cluster ~]# rocks set var kickstart PublicAddress 10.30.26.19 [root@cluster ~]# rocks set var kickstart PublicBroadcast 10.30.31.255 [root@cluster ~]# rocks set var kickstart PublicDNSServers 10.101.108.9 [root@cluster ~]# rocks set var kickstart PublicGateway 10.30.24.254 [root@cluster ~]# rocks set var kickstart PublicNetmask 255.255.248.0 [root@cluster ~]# rocks set var kickstart PublicNetmaskCIDR 21 [root@cluster ~]# rocks set var kickstart PublicNetwork 10.30.24.0 [root@cluster ~]# rocks set var kickstart PublicNTPHost 10.30.26.18
[root@cluster ~]# grep GATEWAY /etc/sysconfig/network GATEWAY=192.168.65.2
[root@cluster ~]# dbreport ifcfg eth1 `hostname -s ` > /etc/sysconfig/network-scripts/ifcfg-eth1 [root@cluster ~]# dbreport resolv > /etc/resolv.conf [root@cluster ~]# dbreport hosts > /etc/hosts [root@cluster ~]# ifdown eth1 [root@cluster ~]# ifup eth1 [root@cluster ~]# insert-ether --update [root@cluster ~]# /etc/init.d/network restart
Sun GridEngineのための sge ロールがインストールされていると、 insert-ethers —update を実行すると、 GridEngineの構成を再構築します。
このため、 パブリック側のネットワークが変更が有効になる前に insert-ethersを実行するとGridEngineのマスターサーバと通信できなくなり、 1ノードあたりの処理時間が非常に長くなります。
NPACI Rocksではフロントエンドのホスト名はFQDNとして設定され、 MySQLデータベースのアクセス制限や、 認証局情報のキーとして使われています。 このためディスクトップマシンのように単純にはホスト名を 変更することができません。
scsbaseがインストールされていれば、 FQDNで設定されているパブリック側のホスト名を変更したい場合には、 rocks-hostnameコマンドが使えます。
[root@cluster ~]# rocks-hostname Current Hostname: cluster.hpc.org New Hostname: 新しいホスト名を与えます MySQL root passwd: インストール時に設定したrootのパスワードを入力 working... : :
![]() |
/home/install がカレントディレクトリであるときに実行すると autofs の停止に失敗します。 LSF,PBSPro,TORQUEの設定については現時点では個別に修正する必要があります。 |
NPAIC Rockの本来の方法では再インストールします。 手作業でホスト名を修正することも可能ですが、 修正対象が多く、コマンド操作も複雑で人為的なミスを誘発しやすいため、 再インストールで処理する方が結局は工数が少なくなるはずです。
パーティション設定はマニュアルで行ないます。
外付けのRAIDディスクがある構成でしたら、 インストール時には外付けディスクの パーティションを設定しない方が時間が短くてすみます。
これは、インストールが終了して起動した後でも、 パーティション設定やフォーマットができるためです。
マウントポイント | 最小サイズ | 備考 |
---|---|---|
/ | 16GB | ルートファイルシステム |
/var | 4GB | ログ、スプール領域 |
swap | 2GB | スワップ領域 |
/export | 12GB | Rocksで利用する領域。boot後に/rocksにラベル名を変更 |
/rocks | 残り全て | デフォルトのhome領域。boot後に/exportにラベル名を変更 |
/export 領域(ブート後に/rocksなる)の最小サイズは次の指針で決定します。
6GB × 保持するディストリビューションの数 + SDK用 6GB
フロントエンドノードにRHEL, 計算ノードにCentOSなどという場合では、 6GB × 2 + 6GB = 18GB が必要ということになります。
フロントエンドノードのディスクサイズが36GBである場合では、 Rocksで使用するレポジトリ用の/exportを割り当てると、 ほとんど残りがなくってしまいます。
この場合は、 /export,/rocksと分割する方法を取らずに /exportを残り全部を割り当ててください。
ただし、実際のユーザホーム領域はほとんどないことに留意してください。
scsbaseがインストールされていれば、 起動後に実行される /etc/init.d/rocks-firstboot によりパーティションのラベル変更と再マウント、 および各種設定ファイルの修正が自動的に行われます。
インストール時には/export が必要なので、 一旦/exportとして領域を確保しますが、 実際は/rocksとして運用されます。
つまりディスクのラベル名を変更して、 マウントポイントを入れ替えます。
インストール中: /export rocksのデータが格納されている /rocks 空 ブートしたあとに置き換える: /rocks rocksのデータが格納されている /export 空 ユーザホーム領域として使われる
これにより、 システム領域を確保できることになり、 ユーザホーム領域の増加に影響されません。
システムとしてバックアップを取得する領域についても ルートファイルシステム(/)、/var、/rocks の約40GBで済み、 バックアップおよびリストアに必要な時間が短くなります。
ユーザ領域と区別できるためシステムのバックアップが単純になだけでなく、 バックアップについての責任範囲も明確にできるようになります。
また、scsbaseがインストールされていないシステムで、 納入後にホスト名を変更しなければならなくなった場合では、 ユーザ領域(/export)とNPACI Rocksの使用する領域(/rocks)を 分離しておかないと対応できなくなります。
外付けのRAIDディスク(デバイス/dev/cciss/c1d0)がある構成で、 インストール後に /rocks パーティション(/dev/cciss/c1d0p1) を設定する場合は次のような手順になります。
# fdisk /dev/cciss/c1d0 # mkfs.ext3 /dev/cciss/c1d0p1 # e2label /dev/cciss/c1d0p1 /rocks # /etc/init.d/rocks-firstboot stop # /etc/init.d/rocks-firstboot reconfig
scsbaseがインストールされていないシステムで、 手作業で処理する場合は次の手順になります。
前述の手順で次のようにパーティションが設定された scsbaseがインストールされていないシステムがあるとします。
デバイス | ラベル | ブート直後のマウントポイント |
---|---|---|
/dev/sda5 | /export | /export |
/dev/sda6 | /rocks | /export |
# e2label /dev/sda5 /rocks
ラベル変更に加えて、次のファイルを修正する必要があります。
/etc/fstab
/etc/exports
/etc/auto.share
/etc/auto.home
# mkdir /export/home # cd /export/home # ln -s /rocks/home/install .
# cat /etc/exports /export 192.168.10.0/255.0.0.0(rw,async) /rocks 182.168.10.0/255.0.0.0(rw,no_root_squash,async) # exportfs -r # /etc/init.d/nfs restart
# cat /etc/auto.home install cluster.local:/rocks/home/& scs cluster.local:/rocks/home/& # cat /etc/auto.share apps cluster.local:/rocks/& install cluster.local:/rocks/home/&
ブート後に初回だけ呼び出される /etc/init.d/rocks-firstboot では パーティションラベルの変更だけでなく次のような処理も行なっています。
rootユーザでログインしていることを明確にさせるため、 ディスクトップの背景色を「赤く」変更しています。
ディスクトップのメニューから設定してください。
NPACI RocksではCentOSあるいはRedHat Enterprise Linux 4 の ディストリビューションを保持しています。
これを有効利用して、yumコマンドを使ってパッケージ管理を 容易にするための設定を行なっています。
rocks-fistboot ではyumの設定のほとんどを自動的に行なっています。
インストールされているOSに応じてシンボリックリンクが設定されます。
/home/install/share/lan 以下
/home/install/distro/CentOS 以下
/home/install/distro/RedHat 以下
手作業で設定する場合は次の設定例を参考にしてください。
/home/install/share/lan の設定例:
[root@cluster lan]# cd /home/install/share/lan/ [root@cluster lan]# ls -l | cut -c40- CentOS -> /export/home/install/distro/CentOS/4.5 RedHat -> /export/home/install/distro/RedHat/4.5 rocks-contrib -> /export/home/install/contrib/4.3
/home/install/distro/ の設定例:
[root@cluster i386]# cd /home/install/distro/CentOS/4.5/main/i386 [root@cluster i386]# ls -l RPMS | cut -c40- RPMS -> /export/home/install/rolls/CentOS-4_i386/4.3/i386/RedHat/RPMS
NPACI Rocksは登録しているミラーホストからUpdate/Errataパッケージを ダウンロードするようになっています。 scsbaseロールがインストールされていると使えるrocks-fistboot ではこれを修正して、 /home/install/share/lan以下からダウンロードするように変更しています。
手作業で行う場合は次のように修正してください。
/opt/rocks/etc/rocks-mirrorrc を修正
オリジナル:
<option name="default-mirror-path" value="http://ftp.osuosl.org/pub/centos/4/updates"/>
変更後:
<option name="default-mirror-path" value="http://localhost/install/share/lan/CentOS/updates"/>
RedHat Enterprise Linux ではRedHat Networksからのダウンロードとなるため、 ここでCentOSを例にとって説明します。
scsbaseロールがインストールされていると使えるMakefileが 用意されていますので次のように実行するだけです。
[root@cluster ~]# cd /home/install/distro [root@cluster ~]# make update
手作業で行う場合は次の手順に従って設定してください。
[root@cluster ~]# cd /home/install/distro/CentOS/4.5/updates/i386/RPMS [root@cluster ~]# wget -m -nH -nv --passive-ftp --cut-dirs=7 \ ftp://ftp.riken.jp/Linux/caos/centos/4.5/updates/i386/RPMS/
この例ではi386となっていますが、 クラスタを構築したシステムのアーキテクチャに応じたものを指示します。
後述するyumで使用するRPMのヘッダ情報を収集します。 scsbaseロールがインストールされていると使えるMakefileが 用意されていますので次のように実行するだけです。
[root@cluster ~]# cd /home/install/distro [root@cluster ~]# make repo
手作業で行う場合は次の手順に従って設定してください。
[root@cluster ~]# cd /home/install/share/lan/CentOS/main/ [root@cluster main]# yum-arch i386 [root@cluster main]# createrepo i386 [root@cluster main cd /home/install/share/lan/CentOS/update/ [root@cluster update]# yum-arch i386 [root@cluster update]# createrepo i386 [root@cluster update]# cd /home/install/share/lan/rocks-contrib [root@cluster contrib]# yum-arch i386 [root@cluster contrib]# createrepo i386
この例ではi386となっていますが、 クラスタを構築したシステムのアーキテクチャに応じたものを指示します。
scsbaseロールでインストールされる /etc/init.d/rocks-firstbootでは、 設定したディストリビューションをダウンロードできるようにyumを設定します。
手作業を設定する場合は次の設定例を参考にしてください。
CentOSでの例:
[root@cluster i386]# more /etc/yum.repos.d/CentOS-Base.repo # CentOS-Base.repo for frontend # [centos-base] name=CentOS-$releasever - centos-base baseurl=http://localhost/install/share/lan/CentOS/main/$basearch/ gpgkey=http://localhost/install/share/lan/CentOS/RPM-GPG-KEY-centos4 gpgcheck=1 enabled=1 #released updates [centos-updates] name=CentOS-$releasever - centos-updates baseurl=http://localhost/install/share/lan/CentOS/updates/$basearch/ gpgkey=http://localhost/install/share/lan/CentOS/RPM-GPG-KEY-centos4 gpgcheck=1 enabled=1 #packages used/produced in the build but not released [centos-addons] name=CentOS-$releasever - centos-addons baseurl=http://localhost/install/share/lan/CentOS/addons/$basearch/ gpgkey=http://localhost/install/share/lan/CentOS/RPM-GPG-KEY-centos4 gpgcheck=1 enabled=0 #additional packages that may be useful [centos-extras] name=CentOS-$releasever - centos-extras baseurl=http://localhost/install/share/lan/CentOS/extras/$basearch/ gpgkey=http://localhost/install/share/lan/CentOS/RPM-GPG-KEY-centos4 gpgcheck=1 enabled=0 #additional packages that extend functionality of existing packages [centosplus] name=CentOS-$releasever - centosplus baseurl=http://localhost/install/share/lan/CentOS/centosplus/$basearch/ gpgkey=http://localhost/install/share/lan/CentOS/RPM-GPG-KEY-centos4 gpgcheck=1 enabled=0 #contrib - packages by Centos Users [centos-contrib] name=CentOS-$releasever - centos-contrib baseurl=http://localhost/install/share/lan/CentOS/contrib/$basearch/ gpgkey=http://localhost/install/share/lan/CentOS/RPM-GPG-KEY-centos4 gpgcheck=1 enabled=0 [rocks-contrib] name=CentOS-$releasever - rocks-contrib baseurl=http://localhost/install/share/lan/rocks-contrib/$basearch/ gpgcheck=0 enabled=0
RedHat Enterprise Linux 4 での例:
[root@cluster i386]# more /etc/yum.repos.d/RHEL-Base.repo # RHEL-Base.repo # [RHEL-base] name=RHEL4-U5-$releasever - Base baseurl=http://localhost/install/share/lan/RHEL/main/$basearch/ gpgkey=http://localhost/install/share/lan/RHEL/RPM-GPG-KEY gpgcheck=1 enabled=0 #released updates [RHEL-update] name=RHEL4-U5-$releasever - Updates baseurl=http://localhost/install/share/lan/RHEL/updates/$basearch/ gpgkey=http://localhost/install/share/lan/RHEL/RPM-GPG-KEY gpgcheck=1 enabled=0
この設定で、フロントエンドノードがyumサーバとして機能できるようになります。 計算ノードはフロントエンドからパッケージをダウンロードできるようにします。
yumコマンドはパッケージの依存関係の調査、含まれているファイルの調査、 フロントエンドノード自身のアップグレードなどが簡単に行なえるようになります。
scsbsaeがインストールされていると不要なサービスは停止してくれます。
/sbin/chkconfig isdn off /sbin/chkconfig smartd off /sbin/chkconfig rocks-grub off
scsbsaeがインストールされているとカーネルパラメタを設定します。
手作業で設定する場合は次の行を /etc/sysctl.conf に追加し、 システムをリブートしてください。
net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.core.rmem_default = 262144 net.core.wmem_default = 262144 net.core.optmem_max = 20480
scsbsaeがインストールされているとNFSデーモンの最大数を デフォルトの8から32へと変更しています。
手作業で設定する場合は次のように設定します。
[root@cluster ~]# cat /etc/sysconfig/nfs RPCNFSDCOUNT=32
scsbsaeロールがインストールされているとUTCの設定は無効になって起動します。
scsbaseを使わない場合は、設定ファイルを修正後、 手作業で時間を設定しリブートしてください。
[root@cluster ~]# cat /etc/sysconfig/clock ZONE=Asia/Tokyo UTC=false ARC=false
scsbsaeロールがインストールされていると CentOSあるいはRedHat Enterprise Linuxs 4 での日本語入力メソッドに scim-anthy を追加し、デフォルトを iiimf から scim-anthy に変更しています。
これにより日本語文章を記述するときのストレスが軽減されます。
必要なパッケージは次になります。
kasumi scim scim-libs scim-anthy scim-devel scim-doc anthy
ビルドや設定などで煩雑になるため iiimf で利用するものとしてください。
scsbsaeロールがインストールされていると起動直後の クラスタデータベースをバックアップしています。
計算ノードのインストールで試行錯誤した場合でも、 いつでもフロントエンドのインストール直後の状態に データベースを戻せるようにするためです。
次のような手順でバックアップを取得してください。
[root@cluster ~]# mkdir -p /home/install/backups [root@cluster ~]# mysqldump -u apache cluster | \ sed -e 's/),/), \\\ /g' > /home/install/backups/cluster-initial.mysql
NPACI Rocksでは次のURLで参照されるロールドキュメントは ディレクトリが表示されるだけです。 ロール名がディレクトリとなっているのでこれでもよいのですが、 scsbsaeロールがインストールされていると目次を作成されます。
この目次はロールを追加した場合でも自動的に更新されます。
/var/www/html/roll-documentsへ次のファイルを置きます。
00-header.html ヘッダ情報やCCSを設定
<head> <title>Roll Documentations</title> <meta http-equiv="Content-Type" content="text/html; charset=utf8"/> <style type="text/css"> body { background-color: #FFFFFF; color: #000000; font-family: arial, helvetica, sans-serif; font-size: 1.0em; font-style: normal; font-weight: normal; margin: 0; } #header { background-color: #EAEAEA; border-bottom: solid 1px #505050; color: #505050; font-family: arial, helvetica, sans-serif; font-size: 2.0em; letter-spacing: 0.05em; margin: 0 0 15px 0; padding: 10px 0 10px 15px; } </style> </head> <body> <div id="header"> Roll Documentations </div>
99-footer.html フッター
</BODY> </HTML>
index.php 目次の自動生成
<? // Quick Indexer -- Generate index from current directory. // @AUTHOR@ Gouichi Iisaka <iisaka51@hotmail.com> // @VERSION@ 1.1 require_once('File/Util.php'); include('00-header.html'); define (BASEDIR, dirname(__FILE__)); print '<font size="+3">'; print "<ul>"; if ($handle = opendir('.')) { while (($file = readdir($handle)) !== false) { if ($file != "." && $file != ".." && is_dir($file)) { $mydirs[] = $file; } } } sort($mydirs); foreach ($mydirs as $file) { print '<li><a href="'. $file . '/4.3/">' . $file . '</a>'; } print "</ul>"; print '</font>'; include('99-footer.html'); ?>
ここで使用しているPEARパッケージはCentOSおよびRedHat Enterprise Linuxでは インストールされないので次のURLからダウンロードして設定します。
File: Common file and directory routines, also CSV handling
scsbsaeロールがインストールされていると /home/install/documentsにおいたドキュメントを簡単に公開することができます。
はじめに、/var/www/html に /home/install/documentsへの シンボリックリンクを設定します。
[root@cluster 4.5]# ls -l /var/www/html/documents | cut -c40- /var/www/html/documents -> /export/home/install/documents
次のようなindex.phpを置くことで、 ファイル名ソートでの目次を自動生成してくれるようになります。
[root@cluster documents]# cat index.php <? // Quick Indexer -- Generate index from current directory. // @AUTHOR@ Gouichi Iisaka <iisaka51@hotmail.com> // @VERSION@ 1.1 require_once('File/Util.php'); define (BASEDIR, dirname(__FILE__)); $files = glob(BASEDIR.'/*.html' ); foreach ($files as $f) { readfile($f); print '</BR></BR>'; } ?>
このポータルのセキュリティーは次の設定となります。
[root@cluster 4.5]# more /etc/httpd/conf.d/scsdocs.conf <Directory "/var/www/html/documents"> Options FollowSymLinks Indexes ExecCGI AllowOverride All Order deny,allow Allow from 192.168.10.0/255.255.255.0 Allow from 127.0.0.1 Deny from all </Directory>
scsbsaeロールがインストールされていると Wikiプログラムである moinmoin がインストール設定されます。
このmoinmoin のマクロやパーサー機能を使って、 クラスタデータベースから読み取ってインストール設定資料を 自動生成するようにしています。
moinmoin は次のところからダウンロードすることができます。
MoinMoin公式サイト: http://moinmo.in/
合わせてこのサイトのPaserMarketから MySQL2-1.0.py をダウンロードします。 このMySQLパーサは次のようにSQL文を記述するとその結果を テーブルとしてWikiドキュメントに展開するものです。
NFSおよび管理用ネットワーク {{{ #!MySQL2 DBDATA localhost,cluster,adminwiki, QUERY select name,ip,netmask,device from networks where node!='1' and device='eth0' HEADLINE ホスト名,IPAddress,Netmask,Device HEADATTR bgcolor=#E0E0FF ODDATTR bgcolor=#EEEEF0 }}}
MySQLにadminwiki ユーザを登録します。
# cat > /tmp/junk <<_EOF_ grant select on cluster.* to adminwiki@localhost; grant select on cluster.* to adminwiki@cluster; _EOF_ # mysql mysql < /tmp/junk
moinmoinでは APCHEの拡張モジュール mod_python が必要になりますので、 インストールします。
[root@cluster nodes]# cd /home/install/rolls/CentOS-4_i386/4.3/i386/RedHat/RPMS [root@cluster nodes]# rpm -Uvh --force mod_python-3.1.3-5.1.i386.rpm
moinmoinの設定をAPAHCEに登録します。
Alias /wiki/ "/usr/share/moin/htdocs/" ScriptAlias /adminwiki "/var/www/html/install/adminwiki/moin.cgi" <Location /mywiki> SetHandler python-program PythonOption Location /adminwiki PythonPath "['/var/www/html/install/adminwiki/'] + sys.path" PythonHandler MoinMoin.request::RequestModPy.run </Location> <Directory "/var/www/html/install/adminwiki/"> Options FollowSymLinks Indexes ExecCGI AllowOverride None Order deny,allow Allow from 192.168.10.1/255.255.255.0 Allow from 127.0.0.1 Deny from all </Directory> <Directory "/usr/share/moin/htdocs/"> Options Indexes FollowSymLinks AllowOverride None Order deny,allow Allow from 192.168.10.1/255.255.255.0 Allow from 127.0.0.1 Deny from all </Directory>
scsbaseロールではクラスタデータベース中のaliasesテーブルへの 登録、修正、削除、ダンプを行うための add-alias が使えるようになります。
[root@cluster ~]# add-aliases --help Add Aliases - version 4.3 Usage: add-aliases [-hv] [-p password] [-u host] [-d database] [--help] [--list-rcfiles] [--list-project-info] [--verbose] [--add] [--delete] [--list] [--dryrun] [--dump] [--rcfile arg] [--host host] [--password password] [--db database] [--user host] [--nodename <nodename>] [--alias <aliasname>]
[root@cluster ~]# add-aliases --list
mysql> select * from aliases; +----+------+------------+ | ID | Node | Name | +----+------+------------+ | 1 | 2 | compute00 | | 2 | 2 | compute000 | +----+------+------------+ 2 rows in set (0.00 sec)
Nodeフィールドの 2 はノードIDで、nodes テーブルのIDの値になります。
こうした設定が/etc/hostsに反映します。
root@cluster 4.5]# dbreport hosts > /etc/hosts root@cluster 4.5]# grep compute00 /etc/hosts 192.168.10.254 compute-0-0.local compute-0-0 c0-0 compute00 compute000
add-aliases を使ってalias名を追加するには次のように実行します。
[root@cluster ~]# add-aliases --add --nodename=compute-0-0 --alias compute00
データベースが変更になった場合は、 insert-ethers —update コマンドを実行して 実際の/etc/hosts に反映させます。
[root@cluster ~]# insert-ethers --update [root@cluster ~]# grep compute00 /etc/hosts 192.168.10.254 compute-0-0.local compute-0-0 c0-0 compute00
scsbaseがインストールされていないシステムでaliasテーブルへのアクセスには 直接SQL文を使用します。
[root@cluster ~]# mysql -u apache cluster mysql> INSERT INTO aliases VALUES (0,2,'compute00');
このときに指示している2つの数値、0と2ですが、 はじめの0はaliasテーブル中でのIDになります。 自動的に増加されるためインサートの場合は0でかまいません。 2 はノードIDで、nodes テーブルで定義されています。
[root@cluster ~]# mysql -u apache cluster mysql> select * from nodes where id=2; +----+------+-------------+------------+------+------+------+---------+ | ID | Site | Name | Membership | CPUs | Rack | Rank | Comment | +----+------+-------------+------------+------+------+------+---------+ | 2 | 0 | compute-0-0 | 6 | 4 | 0 | 0 | NULL | +----+------+-------------+------------+------+------+------+---------+ 1 row in set (0.00 sec)
add-aliases を使ってalias名を追加するには次のように実行します。
[root@cluster ~]# add-aliases --delete --nodename=compute-0-0 --alias compute00
scsbaseがインストールされていないシステムでaliasテーブルへのアクセスには 直接SQL文を使用します。
mysql> select * from aliases; +----+------+------------+ | ID | Node | Name | +----+------+------------+ | 1 | 2 | compute00 | | 2 | 2 | compute000 | +----+------+------------+ 2 rows in set (0.00 sec) mysql> delete from aliases where id=2 limit 1; mysql> delete from aliases where id=2 limit 1; Query OK, 1 row affected (0.00 sec) mysql> select * from aliases; +----+------+-----------+ | ID | Node | Name | +----+------+-----------+ | 1 | 2 | compute00 | +----+------+-----------+ 1 row in set (0.00 sec)
scsbaseロールではクラスタデータベース中のroutesテーブルへの 登録、修正、削除、ダンプを行うための add-static-routes が使えるようになります。
/etc/sysconfig/static-routesテーブルはこの情報から生成されます。
[root@cluster ~]# add-static-routes --help Add Static Routes - version 4.3 Usage: add-static-routes [-hv] [-p password] [-u host] [-d database] [--help] [--list-rcfiles] [--list-project-info] [--verbose] [--global] [--add] [--delete] [--list] [--dryrun] [--dump] [--rcfile arg] [--host host] [--password password] [--db database] [--user host] [--nodename <nodename>] [--membership <membership>] [--netmask <maskbit length>] [--network <network>] [--gateway <gateway ip>] [--device <device>] [--comment <comment>]
NPACI Rocksでは各ノードのstatic-routesの設定についても データベース中の情報から生成されます。
add-static-routes コマンドでデータベースの内容を参照します。
[root@cluster ~]# add-static-routes --list Owner ID Network Netmask Gateway Device Comment node 0 224.0.0.0 4 None eth0 None node 0 255.255.255.255 32 None eth0 None node 0 172.16.10.1 32 192.168.10.1 None None
このテーブルのOwnerのフィールドはその値に応じて、 次のIDフィールドのさしているものが変わります。
フィールドの内容 | 対象とするID |
---|---|
node | nodesテーブルのID |
membership | membershipsテーブルのID |
つまり、NPACI Rockaは特定のノードやメンバーシップテーブルで区分される グループ単位でルーティングを異なるように設定でるようになっています。
この情報を使ってRocksは/etc/sysconfig/static-routes を生成しています。
[root@cluster ~]# dbreport static-routes compute-0-0 # # Do NOT Edit (generated by dbreport) # # Global routes any net 224.0.0.0/4 dev eth0 any host 255.255.255.255 dev eth0 any host 172.16.10.1 gw 192.168.10.1 # Member routes # Node Routes
デフォルトGATEWAYを変更する場合の例:
[root@cluster ~]# add-static-routes --global --add \ --network="10.30.26.19" \ --netmask=32
計算ノード全体のデフォルトGATEWAYを変更する場合の例:
[root@cluster ~]# add-static-routes --membership compute --add \ --network="10.30.24.254" \ --netmask=21
特定の計算ノードのデフォルトGATEWAYを変更する場合の例:
[root@cluster ~]# add-static-routes --nodename compute-0-0 --add \ --network="10.30.24.254" \ --netmask=21
scsbaseがインストールされていないシステムでroutesテーブルへのアクセスには 直接SQL文を使用します。
mysql> select * from routes; +-------+----+-----------------+---------+--------------+--------+---------+ | Owner | ID | Network | Netmask | Gateway | Device | Comment | +-------+----+-----------------+---------+--------------+--------+---------+ | node | 0 | 224.0.0.0 | 4 | NULL | eth0 | NULL | | node | 0 | 255.255.255.255 | 32 | NULL | eth0 | NULL | | node | 0 | 172.16.10.1 | 32 | 192.168.10.1 | NULL | NULL | +-------+----+-----------------+---------+--------------+--------+---------+ 3 rows in set (0.00 sec)
フロントエンドがインストールされた後で ロールを追加したい場合、 NPACI Rocksの本来の方法では rocksコマンドを使います。
# rocks add roll
# rocks add roll foo.iso
scsbaseロールがインストールされていると、rocks-copyroll が 使えるようになります。
rocks-copyroll はインストール後に登録されるロール名を指定し、 CD/DVDから読み込んで、あるいは直接ISOイメージから読み込んで レポジトリにコピーします。
[root@cluster ~]# rocks-copyroll Rocks Copyroll -- 4.3 Usage: rocks-copyroll [-e][-d][-c][-n] [-r OldName] RollName [iso1,iso2...] Options: -D, --dryrun debug mode -e, --enable Set enable -c, --clean clean and copy -n, --noexec dryrun -r OldName, --rename OldName Rename
RedHat Enterprise Linux 4 AS をOSロールの代わりに使ってインストールを行なうと そのロール名は"Red_Hat_Enterprise_Linux_4"となります。 通常はこれで問題ないのですが、 計算ノード側に RedHat Enterprise Linux 4 ES を使ってインストールするような 場合は同じロール名になってしまうのでよくありません。
このときに次のようにロール名を修正することができます。
[root@baystars ~] rocks-copyroll -r RedHat_Enterprise_Linux_4 RHEL4-AS
また、フロントエンドノードのインストール後にCentOSやRedHat Enterprise Linux4 などのOSをロールとして読み込ませる場合では、 rocks コマンドではCD/DVD中のbase/comps.xmlなどをコピーしないため、 計算ノードのインストールが失敗するという不具合があります。
NPACI Rocks ではインストール時に設定した パスワードがデータベース中や phpMyAdminのbasic認証などいろいろな ところで使われています。
このため、通常のpasswdコマンドでは、 システムのrootユーザのパスワードしか変更されません。
NPACI Rocks で使用するすべてのパスワードを rootのパスワードと同じにして運用する場合は、 rocks-passwd コマンドを使ってください。
システムのrootユーザのパスワードしか変更されないことと理解してください。
どうしても手作業で修正する必要があれば次のよう
# htpasswd -m /etc/httpd/conf/passwd-mysql root
[root@cluster 4.5]# rocks list var |grep Pass Kickstart PrivateMD5RootPassword ac1bb9fa8b385bdd5368aca6a1fc0ac4 Kickstart PrivateRootPassword acgClbQjEKfV6 Kickstart PrivateSHARootPassword e2785d4398cefbe6c243aba3f43c3b869e6c28b5 Kickstart PublicRootPassword acgClbQjEKfV6
PrivateMD5RootPassword パスワード文字列をMD5暗号化
PrivateRootPassword パスワード文字列をMD5暗号化した後、crypt()で暗号化
PrivateSHARootPassword パスワード文字列をSHA暗号化した後、再度SHA暗号化
PublicRootPassword パスワード文字列をMD5暗号化した後、crypt()で暗号化
障害などでノードのマザーボードが交換されるとオンボードのネットワーク インタフェースも異なるものとなりMACアドレスが変わってしまいます。
RocksではPXEによる起動制御や、計算ノードのインストールを行うため、 このデータベース中の該当ノードのMACアドレスの情報を修正する必要があります。
このときは rocks-replace-mac コマンドを使います。
[root@cluster ~]# rocks-replace-mac --help Rocks Replace Mac - version 4.3 Usage: rocks-replace-mac [-hv] [-p password] [-u host] [-d database] [--help] [--list-rcfiles] [--list-project-info] [--verbose] [--list] [--dryrun] [--rcfile arg] [--host host] [--password password] [--db database] [--user host] [--nodename <nodename>] [--device <device>] [--mac <mac address>]
ノードを指定して実行すると現在のデータベースの情報を表示して、 入力待ちとなりますので 新しいMACアドレスの情報を入力してください。
[root@cluster ~]# rocks-replace-mac --nodename="compute-0-0" Current MACAddress: compute-0-0 eth0 = 00:1c:c4:aa:6c:7c eth1 = 00:1c:c4:aa:6c:de ib0 = None Input New MACAddress eth0 =
![]() |
IPoIBによるInfiniband へインタフェースを設定するような場合では MACアドレスは正しく扱えないためNoneと表示されます。 この状態で新しいMACアドレスを設定する場合は、 MACアドレスにNoneと入力してください。 |
コマンドラインでそれぞれのパラメタをオプションと指示しても設定できます。
[root@cluster ~]# rocks-replace-mac --nodename="compute-0-0" \ --device="eth0" --mac="00:1B:78:9D:EF:B6"
ミスを防ぐためデータベースをダンプして修正、反映する方が 手順が簡単です。
[root@cluster ~]# mysqldump -u apache cluster | \ sed -e 's/),/), \\\ /g' > /tmp/jiunk
[root@cluster ~]# vi /tmp/junk
[root@cluster ~]# mysqladmin -f -u root -pパスワード drop cluster [root@cluster ~]# mysqladmin -f -u root -pパスワード creaye cluster [root@cluster ~]# mysql -u root -pパスワード cluster < /tmp/junk
[root@cluster ~]# insert-ethers --update
NPACI Rocksのフロントエンドで立ち上がるDNSでは、 管理する子ノードの情報を保持しているため、 プライベート側ネットワークつまりeth1に割り当てられるアドレスの 逆引きについてだけ記述されます。
通常はこれでよいのですが、子ノードへNICを追加したような場合で、 追加したNICのアドレスから逆引きを行うような場合は問題となります。
scsbaseロールがインストールされていると、 このDNSの記述処理を拡張しているので、 追加されたNIにアサインされるアドレスについても逆引きできるようになります。
また、次のRocksでの手順にある回避策についても自動的に設定されるため、 逆引きについて配慮する必要はありません。
scsbaseロールがインストールされていない環境では 次の処置を行なってください。
/etc/hosts を 411へ登録
# 411put /etc/hosts
自動更新されるように設定
[root@cluster ~]# tail /var/411/Files.mk # If you alter this list, you must do a 'make clean; make'. FILES = $(AUTOMOUNT) \ /etc/passwd \ /etc/shadow \ /etc/group \ /etc/services \ /etc/rpc # FILES += /my/file FILES += /etc/hosts
scsbaseロールがインストールされていると、 電源制御のためのpowerctlが使えるようになります。 このコマンドは電源制御のコマンド制御のための テキストユーザインタフェースを提供するものです。
計算ノードがインストールされると設定ファイルにも 自動的に追加されるようになっています。
既存マシンのサブネットが192.168.10.0で、 電源制御用のサブネットが192.168.20.0であるとすると、 次の処理を行なうだけで設定は終わります。
[root@cluster ~]# powerctl-hostconv 192.168.10.0 192.168.20.0 >> /etc/hosts.local
次のパッケージをインストールします。
freeipmi
perl-IO-Socket-SSL
perl-Net-SSLeay
powerctl
ilopower
/etc/powerctl/powerctl.conf を環境に応じて設定します。
[DEFAULT] type = IPMI username = foo password = hogehoge [compute-0-0] ip = 172.16.3.1
詳細な設定方法については次の資料を参照してください。
powerctlユーザガイド
NAPCI Rocks クラスタシステムにscsbaseロールを追加することで、 誰でも簡単にホスト名やクラスタ情報を変更することができるなど、 管理工数を大幅に削減することができるようになります。