著者:飯坂剛一(いいさかごういち)

Revision 1.0: 2007/12/05

はじめに

この資料はNPACI Rocks 4.3 をscsbaseロールと共にインストールしたときに、 scsbaseロールが提供する機能を説明するためのもです。

scsbaseロールを使わないでシステムを構築したときでも、 この資料を参考にすることで同様の操作処理ができるようになります。

scsbaseロールが提供するツールについて説明している章についてはSCSBASEと表記し、 NPACI Rocks本来の手順についてはROCKSとして区別します。

クラスタ情報

インストール時に入力が求められるホスト情報については、 後から変更できますので任意のもので構いません。

clsuter information

ここでは、 ホスト名のFQDNは cluster.hpc.org とします。

もちろん、あらかじめ決まっているのであれば それを入力する方が単純です。

クラスタ情報の変更(SCSBASE)

scsbaseロールがインストールされていれば、 クラスタ情報はrocks-config-certコマンドで変更できます。

rocks-config-cert実行画面

クラスタ情報の変更(ROCKS)

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 "新しい緯度経度"
Note ClusterName とFQDN Hostnameの他は unspecified などしても構いません。

パブリック側ネットワーク情報

NPACI Rocks では eth0 がプライベートネットワーク、 eth1 がパブリックネットワークになります。

クラスタ情報と同様に、あらかじめ決まっているのであれば それを入力する方が単純ですが、 これも後から変更するので次の情報で設定します。

eth0
  • IPAddress 192.168.10.1

  • Netmask 255.255.255.0

eth1
  • 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)

フロントエンドノードインストール後に、 パブリックネットワークの情報を修正する場合は、 scsbaseロールがインストールされていれば、 rocks-config-networks を実行するだけで変更できます。

インタフェース情報設定画面

rocks-config-network実行画面

サーバ情報設定画面

rocks-config-network実行画面

ネットワーク再起動の確認

rocks-config-network実行画面

パブリックネットワークの変更(ROCKS)

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)

現在のサブネットの内容を確認には、 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)

指定したノードのインタフェースの情報を確認するには、 次のようにコマンドを実行します。

# 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

パブリック側のネットワーク情報を修正(ROCKS)

[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

パブリック側のネットワーク情報を修正(ROCKS)

[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

パブリック側のGATEWAY情報を変更する(ROCKS)

[root@cluster ~]# grep GATEWAY /etc/sysconfig/network
GATEWAY=192.168.65.2

データベース修正内容をシステムに反映させる(ROCKS)

[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)

scsbaseがインストールされていれば、 FQDNで設定されているパブリック側のホスト名を変更したい場合には、 rocks-hostnameコマンドが使えます。

[root@cluster ~]# rocks-hostname
Current Hostname: cluster.hpc.org
New Hostname: 新しいホスト名を与えます
MySQL root passwd: インストール時に設定したrootのパスワードを入力
working...
       :
       :
Warning

/home/install がカレントディレクトリであるときに実行すると autofs の停止に失敗します。

LSF,PBSPro,TORQUEの設定については現時点では個別に修正する必要があります。

フロントエンドノードホスト名の変更(ROCKS)

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 によりパーティションのラベル変更と再マウント、 および各種設定ファイルの修正が自動的に行われます。

/rocks と /export のラベル名を変更する理由

インストール時には/export が必要なので、 一旦/exportとして領域を確保しますが、 実際は/rocksとして運用されます。

つまりディスクのラベル名を変更して、 マウントポイントを入れ替えます。

インストール中:
/export          rocksのデータが格納されている
/rocks           空

ブートしたあとに置き換える:
/rocks          rocksのデータが格納されている
/export          空 ユーザホーム領域として使われる

これにより、 システム領域を確保できることになり、 ユーザホーム領域の増加に影響されません。

システムとしてバックアップを取得する領域についても ルートファイルシステム(/)、/var、/rocks の約40GBで済み、 バックアップおよびリストアに必要な時間が短くなります。

ユーザ領域と区別できるためシステムのバックアップが単純になだけでなく、 バックアップについての責任範囲も明確にできるようになります。

また、scsbaseがインストールされていないシステムで、 納入後にホスト名を変更しなければならなくなった場合では、 ユーザ領域(/export)とNPACI Rocksの使用する領域(/rocks)を 分離しておかないと対応できなくなります。

外付けディスクへの設定(SCSBASE)

外付けの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

手作業で行う場合の手順(ROCKS)

scsbaseがインストールされていないシステムで、 手作業で処理する場合は次の手順になります。

ラベル名の変更(ROCKS)

前述の手順で次のようにパーティションが設定された scsbaseがインストールされていないシステムがあるとします。

デバイス ラベル ブート直後のマウントポイント
/dev/sda5 /export /export
/dev/sda6 /rocks /export

# e2label /dev/sda5 /rocks

ラベル変更に加えて、次のファイルを修正する必要があります。

シンボリックリンクの設定(ROCKS)

# mkdir /export/home
# cd /export/home
# ln -s /rocks/home/install .

/etc/exports を修正(ROCKS)

# 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

autofsの設定を修正(ROCKS)

# 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ユーザのディスクトップを修正(SCSBASE)

rootユーザでログインしていることを明確にさせるため、 ディスクトップの背景色を「赤く」変更しています。

rootユーザのディスクトップを修正(ROCKS)

ディスクトップのメニューから設定してください。

ディストリビューションの設定(SCSBASE)

NPACI RocksではCentOSあるいはRedHat Enterprise Linux 4 の ディストリビューションを保持しています。

これを有効利用して、yumコマンドを使ってパッケージ管理を 容易にするための設定を行なっています。

rocks-fistboot ではyumの設定のほとんどを自動的に行なっています。

ディストリビューションの設定(ROCKS)

手作業で設定する場合は次の設定例を参考にしてください。

/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

ミラーホストの設定(SCSBASE)

NPACI Rocksは登録しているミラーホストからUpdate/Errataパッケージを ダウンロードするようになっています。 scsbaseロールがインストールされていると使えるrocks-fistboot ではこれを修正して、 /home/install/share/lan以下からダウンロードするように変更しています。

ミラーホストの設定(ROCKS)

手作業で行う場合は次のように修正してください。

オリジナル:

<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"/>

Update/Errataの収集(SCSBASE)

RedHat Enterprise Linux ではRedHat Networksからのダウンロードとなるため、 ここでCentOSを例にとって説明します。

scsbaseロールがインストールされていると使えるMakefileが 用意されていますので次のように実行するだけです。

[root@cluster ~]# cd /home/install/distro
[root@cluster ~]# make update

Update/Errataの収集(ROCKS)

手作業で行う場合は次の手順に従って設定してください。

[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となっていますが、 クラスタを構築したシステムのアーキテクチャに応じたものを指示します。

RPMパッケージのヘッダ情報の設定(SCSBASE)

後述するyumで使用するRPMのヘッダ情報を収集します。 scsbaseロールがインストールされていると使えるMakefileが 用意されていますので次のように実行するだけです。

[root@cluster ~]# cd /home/install/distro
[root@cluster ~]# make repo

RPMパッケージのヘッダ情報の設定(ROCKS)

手作業で行う場合は次の手順に従って設定してください。

[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となっていますが、 クラスタを構築したシステムのアーキテクチャに応じたものを指示します。

ディストリビューションに応じたyumの設定(SCSBASE)

scsbaseロールでインストールされる /etc/init.d/rocks-firstbootでは、 設定したディストリビューションをダウンロードできるようにyumを設定します。

ディストリビューションに応じたyumの設定(ROCKS)

手作業を設定する場合は次の設定例を参考にしてください。

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コマンドはパッケージの依存関係の調査、含まれているファイルの調査、 フロントエンドノード自身のアップグレードなどが簡単に行なえるようになります。

不要なサービスの停止(SCSBASE)

scsbsaeがインストールされていると不要なサービスは停止してくれます。

不要なサービスの停止(ROCKS)

/sbin/chkconfig isdn off
/sbin/chkconfig smartd off
/sbin/chkconfig rocks-grub off

カーネルパラメタお設定(SCSBASE)

scsbsaeがインストールされているとカーネルパラメタを設定します。

カーネルパラメタお設定(ROCKS)

手作業で設定する場合は次の行を /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

NFSデーモンの最大数設定(SCSBAE)

scsbsaeがインストールされているとNFSデーモンの最大数を デフォルトの8から32へと変更しています。

NFSデーモンの最大数設定(ROCKS)

手作業で設定する場合は次のように設定します。

[root@cluster ~]# cat /etc/sysconfig/nfs
RPCNFSDCOUNT=32

時刻設定のUTCを無効にする(SCSBAE)

scsbsaeロールがインストールされているとUTCの設定は無効になって起動します。

時刻設定のUTCを無効にする(ROCKS)

scsbaseを使わない場合は、設定ファイルを修正後、 手作業で時間を設定しリブートしてください。

[root@cluster ~]# cat /etc/sysconfig/clock
ZONE=Asia/Tokyo
UTC=false
ARC=false

日本語入力メソッドの追加(SCSBASE)

scsbsaeロールがインストールされていると CentOSあるいはRedHat Enterprise Linuxs 4 での日本語入力メソッドに scim-anthy を追加し、デフォルトを iiimf から scim-anthy に変更しています。

これにより日本語文章を記述するときのストレスが軽減されます。

日本語入力メソッドの追加(ROCKS)

必要なパッケージは次になります。

kasumi
scim
scim-libs
scim-anthy
scim-devel
scim-doc
anthy

ビルドや設定などで煩雑になるため iiimf で利用するものとしてください。

クラスタデータベースのバックアップ(SCSBASE)

scsbsaeロールがインストールされていると起動直後の クラスタデータベースをバックアップしています。

計算ノードのインストールで試行錯誤した場合でも、 いつでもフロントエンドのインストール直後の状態に データベースを戻せるようにするためです。

クラスタデータベースのバックアップ(ROCKS)

次のような手順でバックアップを取得してください。

[root@cluster ~]# mkdir -p /home/install/backups
[root@cluster ~]# mysqldump -u apache cluster | \
        sed -e 's/),/), \\\
/g' > /home/install/backups/cluster-initial.mysql

ロールドキュメントの目次を追加(SCSBASE)

NPACI Rocksでは次のURLで参照されるロールドキュメントは ディレクトリが表示されるだけです。 ロール名がディレクトリとなっているのでこれでもよいのですが、 scsbsaeロールがインストールされていると目次を作成されます。

この目次はロールを追加した場合でも自動的に更新されます。

ロールドキュメントの目次を追加(ROCKS)

/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

http://pear.php.net/package/File

ドキュメントポータルの追加(SCSBASE)

scsbsaeロールがインストールされていると /home/install/documentsにおいたドキュメントを簡単に公開することができます。

ドキュメントポータルの追加(ROCKS)

はじめに、/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>

管理者向けWikiの追加(SCSBASE)

scsbsaeロールがインストールされていると Wikiプログラムである moinmoin がインストール設定されます。

このmoinmoin のマクロやパーサー機能を使って、 クラスタデータベースから読み取ってインストール設定資料を 自動生成するようにしています。

管理者向けWikiの追加(ROCKS)

moinmoin は次のところからダウンロードすることができます。

合わせてこのサイトの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 が使えるようになります。

エイリアス名の参照(SCSBASE)

[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

エイリアス名の参照(ROKS)

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

エイリアス名の追加(SCSBASE)

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

エイリアス名の追加(ROCKS)

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)

エイリアス名の削除(SCSBAE)

add-aliases を使ってalias名を追加するには次のように実行します。

[root@cluster ~]# add-aliases --delete --nodename=compute-0-0 --alias compute00

エイリアス名の削除(ROCKS)

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)

static-routes の設定方法

scsbaseロールではクラスタデータベース中のroutesテーブルへの 登録、修正、削除、ダンプを行うための add-static-routes が使えるようになります。

/etc/sysconfig/static-routesテーブルはこの情報から生成されます。

routes の参照(SCSBASE)

[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

routes の参照(ROCKS)

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)

ロールの追加方法(ROKCS)

フロントエンドがインストールされた後で ロールを追加したい場合、 NPACI Rocksの本来の方法では rocksコマンドを使います。

CD/DVDをセットしコピーする場合 =====

# rocks add roll

ISOイメージからコピーする場合

# rocks add roll foo.iso

ロールの追加方法(SCSBASE)

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などをコピーしないため、 計算ノードのインストールが失敗するという不具合があります。

roortパスワードの変更(SCSBASE)

NPACI Rocks ではインストール時に設定した パスワードがデータベース中や phpMyAdminのbasic認証などいろいろな ところで使われています。

このため、通常のpasswdコマンドでは、 システムのrootユーザのパスワードしか変更されません。

NPACI Rocks で使用するすべてのパスワードを rootのパスワードと同じにして運用する場合は、 rocks-passwd コマンドを使ってください。

roortパスワードの変更(ROCKS)

システムのrootユーザのパスワードしか変更されないことと理解してください。

どうしても手作業で修正する必要があれば次のよう

APACHEに基礎認証のためのパスワード

# htpasswd -m /etc/httpd/conf/passwd-mysql root

クラスタデータベースの app_globals テーブル

[root@cluster 4.5]# rocks list var |grep Pass
Kickstart PrivateMD5RootPassword  ac1bb9fa8b385bdd5368aca6a1fc0ac4
Kickstart PrivateRootPassword     acgClbQjEKfV6
Kickstart PrivateSHARootPassword  e2785d4398cefbe6c243aba3f43c3b869e6c28b5
Kickstart PublicRootPassword      acgClbQjEKfV6

ノード障害でのマザーボード交換時の対応

MACアドレスの置換(SCSBASE)

障害などでノードのマザーボードが交換されるとオンボードのネットワーク インタフェースも異なるものとなり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 =
Warning

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"

MACアドレスの置換(ROCKS)

ミスを防ぐためデータベースをダンプして修正、反映する方が 手順が簡単です。

データベースのダンプ

[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

DNS逆引き設定(SCSBASE)

NPACI Rocksのフロントエンドで立ち上がるDNSでは、 管理する子ノードの情報を保持しているため、 プライベート側ネットワークつまりeth1に割り当てられるアドレスの 逆引きについてだけ記述されます。

通常はこれでよいのですが、子ノードへNICを追加したような場合で、 追加したNICのアドレスから逆引きを行うような場合は問題となります。

scsbaseロールがインストールされていると、 このDNSの記述処理を拡張しているので、 追加されたNIにアサインされるアドレスについても逆引きできるようになります。

また、次のRocksでの手順にある回避策についても自動的に設定されるため、 逆引きについて配慮する必要はありません。

DNS逆引き設定(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)

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

電源制御コマンドの設定(ROCKS)

次のパッケージをインストールします。

/etc/powerctl/powerctl.conf を環境に応じて設定します。

[DEFAULT]
type = IPMI
username = foo
password = hogehoge

[compute-0-0]
ip    = 172.16.3.1

詳細な設定方法については次の資料を参照してください。

powerctlユーザガイド

http://www.venus.dti.ne.jp/~iisaka/Rocks/powerctl.html

まとめ

NAPCI Rocks クラスタシステムにscsbaseロールを追加することで、 誰でも簡単にホスト名やクラスタ情報を変更することができるなど、 管理工数を大幅に削減することができるようになります。