epiの新規ノード追加の作業 (2010/05/21)

2010518

13:22

 

まずvmplayerをインストールしてください.

 

次にepi20100519.zipをハードディスクに展開してください.D:ドライブかC:ドライブのルートにvmwareというフォルダをつくり,その中におくのが良いと思います.つまりD:\vmware\epi20100519というフォルダになります.展開したepi20100519のなかをみると,

 

 

 

画面の領域の取り込み日時: 2010/05/19 12:04

 

こんな感じになっているはずです.epi.vmxというファイルがあるのを確認してください.

 

ところでDVDをみると次のようになっています.

 

画面の領域の取り込み日時: 2010/05/21 14:12

 

このDVDにおいてあるepi.vmxをさっき展開したフォルダepi20100519にドラッグします.つまりコピーして上書きします.epi20100519.zipを作成したあとにepi.vmxに修正が必要になってしまったので,このようになっています.

 

#コメント: なおメモ帳でepi.vmxを開くと分かりますが,修正点は tools.syncTime = "FALSE" という行を tools.syncTime = "TRUE"に直したところだけです.これがないと,仮想マシンの時計が少しずつ遅れてしまいます.

 

--------------------------------------------------

 

ここまでできたらvmplayerを起動して,「仮想マシンを開く」をクリックして、さっきのepi.vmxを開いてください.(下の図ではepiとだけみえています)

 

 

 

画面の領域の取り込み日時: 2010/05/19 12:09

 

「仮想マシンの再生」でパワーオンします。(仮想マシンの設定でメモリやプロセッサの個数が選べますが、あとでやればいいでしょう)

 

 

 

 

画面の領域の取り込み日時: 2010/05/19 12:12

 

 

「コピーしました」を選んで、OKです。

 

 

 

画面の領域の取り込み日時: 2010/05/19 12:13

 

しばらくまつと、次の画面になります。

 

 

 

画面の領域の取り込み日時: 2010/05/19 12:13

 

 

これで第一段階終了。

 

--------------------------------------------

次の作業に移ります。最初はホスト名 nekos1です.IPアドレスはDHCPで取得します.以下の目的は,ホスト名を指定したものにして,固定IPにすることです.自動化するのも面倒なので,手作業です.

 

nekos1 login: にたいして kanri ユーザーでログインする

 

 

 

画面の領域の取り込み日時: 2010/05/19 12:15

 

 

cd /etc/udev/rules.d

cat 70-persistent-net.rules

と打ってみる (出てくる内容は下記と微妙に違いますが、気にせず進めてください)

 

 

 

このファイルの内容を次のように変更したい.

(1) したから2番目の SUBSYSTEM==から始まる行(図でしたから5行目くらい)の一文字目に#を挿入して#SUBSYSTEM==のようにする.

 

(2) 最後のNAME='eth1' NAME='eth0'に変更する

 

ここではemacsを使ってやってみる.

sudo emacs 70-persistent-net.rulesとする.パスワードをうつ.

 

 

すると次の状態

 

 

 

下矢印でカーソルをSUBSYSTEMの一文字目へ移動して#をうつ

 

 

 

さらにさいごのeth11へ移動してDELETEをおし1を消す

 

 

 

そして0をうつ

 

 

 

 

 

ファイルを保存して終了します.Control-X (コントロールキーをおしながら,Xをうつ)として,次にControl-Sとする.これで保存できたはず.終了はControl-X のあとにControl-C

 

ここまでできたら再起動

sudo shutdown -r now としてください. (sudo rebootでも同じです)

 

 

-----------------------------------------------------

 

ふたたびkanriでログインする.そしてifconfigとうつ.

 

 

eth0という行の次の行に注目.

 

 

 

ここでinet addr: 192.168.62.34 となっているところの数字が,DHCPで取得したIPアドレス.数字はこれとは異なるはずです.この数字(今の例なら192.168.62.34のこと)を記録する.

 

パソコンを切らずにそのままにして,システム管理者にIPアドレスを報告する.そうすると,管理者がネットワークからこのパソコンにログインして,このほかの調整を行います.しばらく待っていてください.

 

ユーザーの皆さんの作業は以上でおわり.なお使うとき変なメッセージが出てきたら,このメモの最後のほうにある「注意」を参考にしてください.また仮想マシンのパワーオフのしかたも####ユーザーへのメモ######のとこに書いてありますので,後ろの方をみてください.

 

もし練習してみる気があるなら,このあとの「管理者の作業」も自分でやってみてください.失敗したとしても,またepi20100519.zipを展開するところからやりなおせばいいだけなので,なにも失うものはありません.

 

-----------------------------------------------------------

メモ: PCクラスタのシステム管理者が行うこと.

 

以下の作業では epi00の設定を行います.たとえばepi05にする場合は,epi00epi05に置き換えてください.epi00のままでやらないでください.

 

他のPCのX端末かputty等から ssh kanri@192.168.62.34 としてさっきの仮想PCへリモートログインする.もしくは、ユーザーの机のところへ行ってvmplayerのコンソールから直接作業してもかまいません。わたしは自分のssh公開鍵をkanriアカウントの.ssh/authorized_keysにおいてあるので、sshでパスフレーズ入力してログインしてます。通常のパスワードでログインもできます。

 

 

 

画面の領域の取り込み日時: 2010/05/18 13:48

 

 

sudo面倒なので,sudo surootになる.cd /etcする.

 

 

画面の領域の取り込み日時: 2010/05/18 13:50

 

 

emacs起動してファイルの編集.ファイルの変更したら,保存するのを忘れずに!

 

まず/etc/hostnameの中身をnekos1からepi00に変更

 

 

画面の領域の取り込み日時: 2010/05/18 13:53

 

次に/etc/hostsを開き,2行目の127.0.1.1 nekos1をコメントアウト

 

 

 

 

画面の領域の取り込み日時: 2010/05/18 13:54

 

epi00IPアドレス 192.168.40.140を確認(もしepi05なら192.168.40.145です)

 

 

 

画面の領域の取り込み日時: 2010/05/18 13:55

 

 

/etc/network/interfaces-epi/etc/network/interfacesにコピーしてから,emacs/etc/network/interfacesをひらく.

 

 

画面の領域の取り込み日時: 2010/05/18 13:58

 

 

 

画面の領域の取り込み日時: 2010/05/18 13:58

 

addressのところをさっき調べたepi00IPアドレスにする.

 

これで一度リブートする.shutdown -r nowを実行する. (rebootとしておなじ)

 

-----------------------------------------------------

 

vmware(またはvmplayer)のコンソールを見るとepi00になってるのがわかる.

 

 

 

画面の領域の取り込み日時: 2010/05/18 14:02

 

管理者がリモートでepi00にログインします.(vmplayerのコンソールでもかまいません)

 

 

 

画面の領域の取り込み日時: 2010/05/18 14:06

 

ifconfigしてみるとOK.

 

 

画面の領域の取り込み日時: 2010/05/18 14:07

 

 

これで無事,ホスト名epi00,固定IPになってるのが確認できました.

 

-----------------------------------------------------

 

つぎにパッチをあてます.epi20100519.zipをDVDに焼いた後に,いろいろ細かい修正が必要になってしまったからです.ここだけ該当ノードのホスト名をepi00ではなく,epi02とします.

 

パッチファイル patch-20100520.tgzを他のノードからscpするか,Windowsのファイル共有でepi02:~kanriにおいてください.つまり,すでにepi02ではsambaが稼働してるので,Windowsのエクスプローラーの窓で\\EPI02\kanriと入力し,ユーザー名 kanriでパスワード入力すれば次のようになります.

 

画面の領域の取り込み日時: 2010/05/20 17:58

 

ここにドラッグしてpatch-20100520.tgzをおきます.そのあとepi02にログインしてlsします.

 

 

画面の領域の取り込み日時: 2010/05/20 22:13

 

 

これを次のように展開してinstall_patch.shsudoで実行してください.

 

 

画面の領域の取り込み日時: 2010/05/20 22:14

すると上の図のように一度止まるので,なにかキーをおせばパッチがあたります.

 

 

画面の領域の取り込み日時: 2010/05/20 22:15

 

これでパッチを当てる作業は終わりです.

 

 

---------------------------------------------------------------------

さらに次の作業を行います.クラスタノード間で相互に自由にパスワード無しでログインできるようにするための設定です./etc/hosts.equivに登録されているホスト名は信頼してログインを許す設定なのですが,それだけだと悪い人がPCを持ち込んでその名前を使って勝手にログインしてくるかもしれないです.それで,あらかじめ「鍵」を登録しておき,その鍵を持ってるホストを信頼するようにします.

 

sudo suしてrootになり,cd /etc/sshする.

 

make_host_key.shというのが作ってあるので,実行する.各ホストのキー(固有のID)を生成します.

 

 

画面の領域の取り込み日時: 2010/05/18 14:09

 

# make_host_keys.shの中身 (2010/05/20で修正したバージョン: dbus-uuidgenの行が新しく追加したところ.これを入れておかないと,gnome-terminalが2台目の仮想PCから起動できなくなるなどのトラブルがある).

 

#!/bin/sh

 

echo "Regenerate host keys"

echo "Also regenerate machine-id"

echo "WARNING: This command should NOT be run except for the first time"

echo "Press [enter] to proceed (Press Control-C to stop)"

read aaa

 

rm /etc/ssh/ssh_host_dsa_key*

rm /etc/ssh/ssh_host_rsa_key*

dpkg-reconfigure openssh-server

 

dbus-uuidgen > /var/lib/dbus/macine-id

 

------------------------------------------------------

 

さっきは自分のマシンのノードのキーを作成しました.今度は他のマシンのキーを集めます.これにはmake_known_hosts.shというのを実行します.現在稼働中のすべてのノードから,キーを集めます.

 

 

 

画面の領域の取り込み日時: 2010/05/18 14:12

 

 

新しいPCを追加するたびに,すべてのPCmake_known_hosts.shは実行するか,epi00等からssh_known_hostsファイルを転送してやる必要がある.後ほどepi01, epi02の例を説明します.

 

以上で終了.念のためリブートする.おつかれさまでした。

 

 

 

 

 

----------------------------------------------------------------------

# 追記 2010/05/19

make_known_hosts.shをすこしなおしてbackupをとるようにしました.末尾に~2~とか~1~がついてるのがバックアップされた前のファイル.パワーオンされてないノードのキーはssh_known_hostsから消されちゃうので,バックアップからコピペしてください.普通のテキストファイルなので簡単に編集できます.

 

 

画面の領域の取り込み日時: 2010/05/19 10:51

 

kanri@epi00:/etc/ssh$ cat make_known_hosts.sh

#!/bin/sh

 

echo Collect public keys from /etc/hosts.equiv

 

#ssh-keyscan -f /etc/hosts.equiv > /etc/ssh/ssh_known_hosts

ssh-keyscan -f /etc/hosts.equiv > /etc/ssh/tmp_hosts

mv /etc/ssh/tmp_hosts /etc/ssh/ssh_known_hosts --backup=numbered

cp /etc/hosts.equiv /root/.shosts

# 追記 ここまで

 

---------------------------------------------------------------

この作業の直後にepi01を設定した.最後のmake_known_hosts.shの出力を見ると,epi00がすでに追加されるのがわかる.

 

 

 

画面の領域の取り込み日時: 2010/05/18 14:26

 

そして,epi00でも,もう一回 make_known_hostsを実行する.ただしmake_host_key.shを実行したらダメ.もしやってしまうとepi00keyが作り直されてしまうので,他のノードで登録しなおす(make_known_hostsepi01, epi02,...で実行)必要がある.

 

 

 

画面の領域の取り込み日時: 2010/05/18 14:46

 

-------------------------------------------

このあとさらに epi02を作成した.epi00epi01make_known_hosts.shを実行する必要がある.epi00epi01に順番にログインして実行していくのは面倒なので,少し合理化したい.

 

方法その1: epi00で次のようなシェルスクリプトを用意する.

 

kanri@epi00:~$ cat ./remote_make_known_hosts.sh

#!/bin/sh

 

/etc/ssh/make_known_hosts.sh

ssh epi01 /etc/ssh/make_known_hosts.sh

#ssh epi02 /etc/ssh/make_known_hosts.sh

#ssh epi03 /etc/ssh/make_known_hosts.sh

#ssh epi04 /etc/ssh/make_known_hosts.sh

 

これをepi00で実行すればよい.仮想マシンが増えるにつれて随時更新する.

 

kanri@epi00:~$ sudo ./remote_make_known_hosts.sh

Collect public keys from /etc/hosts.equiv

/etc/ssh/ssh_known_hosts will be updated

Please merge entries of power-downed-machines in backuped files

# kiki SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu1.2

# epi00 SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu3

# epi01 SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu3

# totoro SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu1.2

# epi02 SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu3

read (epi03): No route to host

read (epi04): No route to host

read (epi05): No route to host

read (epi06): No route to host

read (epi07): No route to host

read (epi08): No route to host

...以下略.

 

(2)方法その2 epi00make_known_hosts.shを実行する.これでできたssh_known_hostsファイルをscpで他のノードへ転送する.

 

パワーオンしてないマシンがある場合など,必要に応じてバックアップファイルから手で編集して,epi00には完全版のssh_known_hostsファイルをおくようにしておく.方法1の場合だと,このような臨機応変な対応が面倒ん.

 

次のようなスクリプトを作る.

kanri@epi00:~$ cat scp_known_hosts.sh

#!/bin/sh

 

scp /etc/ssh/ssh_known_hosts epi01:/etc/ssh

scp /etc/ssh/ssh_known_hosts epi02:/etc/ssh

 

これをepi00で実行すればよい.仮想マシンが増えるにつれて随時更新する.

 

kanri@epi00:~$ sudo ./scp_known_hosts.sh

ssh_known_hosts                               100% 1935     1.9KB/s   00:00   

ssh_known_hosts                               100% 1935     1.9KB/s   00:00   

kanri@epi00:~$

 

##ちょっと運用しながら方針考えます.やっぱり,作業を自動化するようなサービスを作るべきだと思ったけど,マシンが増えるのは年に1,2回程度だから,手動で対応するのが結局合理的な気がする.

 

-----------------------------------------

 

############ ユーザーへのメモ ####################

 

 

管理者が実行する作業が終わると次のような状態になります。ここではepi00ですが、たとえばepi05のように違ったホスト名になっているはずです。

 

 

画面の領域の取り込み日時: 2010/05/19 12:28

 

kanriでログインしてみます。ifconfigすると、固定IPになっています。

 

 

画面の領域の取り込み日時: 2010/05/19 12:29

 

仮想マシンをシャットダウンするには、sudo shutdown -h nowを実行してください。

 

 

 

画面の領域の取り込み日時: 2010/05/19 12:30

 

しばらくまつとパワーオフされます。どのユーザーでshutdownを実行してもパスワードが要求されないように設定してあります.

 

 

 

画面の領域の取り込み日時: 2010/05/19 12:31

 

この状態になったのを確認したら、「ファイル」から終了を選んでvmplayerを終了できます。

 

 

------------------------------------------------------------------

最後に「注意」がいくつか.

 

設定した直後にsshすると,次のエラーがでるかも.

 

 

画面の領域の取り込み日時: 2010/05/18 14:29

 

この場合はホームの.ssh/known_hostsを消してください.

 

また最初に追加したノードにログインするとき次のように質問されるかも.このときはyesとしてください.

 

 

 

画面の領域の取り込み日時: 2010/05/18 14:33

 

 

 

以上のようにして一度設定がすむと,クラスタ内ではsshscpがパスワード無しでできるようになります.

 

 

画面の領域の取り込み日時: 2010/05/18 14:33

 

 

 

これでおしまい.