2012年3月15日木曜日

Master & Slaveノードの設定方法(Ubuntu)

・ネットワーク設定
(参考) : http://clown-do.ddo.jp/index.php?id=523

・計算機/クラスタUbuntu
(参考) : http://meme.biology.tohoku.ac.jp/klabo-wiki/index.php?%B7%D7%BB%BB%B5%A1%2F%A5%AF%A5%E9%A5%B9%A5%BFUbuntu

・Master Nodeの設定
1.1. ネットワークの現状確認
>ifconfig -a
(ifconfig説明):http://www.atmarkit.co.jp/fnetwork/netcom/ifconfig/ifconfig.html

1.2. ネットワークインタフェースの設定
/etc/network/interfacesを設定する。

・ネットワークの設定確認
>cat /etc/network/interfaces

※interfacesファイルは唯一無二なのでそれぞれで必ず指定すること!



(設定前)
auto lo
iface lo inet loopback
   ↓
(設定後)
+
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address 192.168.1.1               #IPアドレス
        netmask 255.255.255.0          #ネットマスク
        network 192.168.1.0              #ネットワークアドレス
        broadcast 192.168.1.255       #ブロードキャストアドレス
#192.168.*の「*」はサブネットを認識する番号なので通常は0か1を用いて、
#複数使う場合は、2以降を使うことも可能

#今回はeth01を足さなくてもよい
#auto eth1
#iface eth1 inet static
#        address YYY.YYY.YYY.XXX     #IPアドレス
#        netmask 255.255.255.0         #ネットマスク
#        network YYY.YYY.YYY.0         #ネットワークアドレス
#        broadcast YYY.YYY.YYY.255  #ブロードキャストアドレス
#        gateway YYY.YYY.YYY.1         #デフォルトゲートウェイ
#        # dns-* options are implemented by the resolvconf package, if installed
#        dns-nameservers YYY.YYY.YYY.XXX
#        dns-search test.intranet
※YYYの同じ色には同じ値が入る。(ifconfigの値で指定する。)
※XXXは自分で好きに指定する。 

※上の変更後は、eth0がローカル側の設定で、eth1がグローバル側の設定の場合の例。
 |         ←eth1側          eth0側→   
 | [グローバル] ---- [ゲートウェイPC(Linux)] ---- [ローカルPC] 

(重要)eth0を高速に通信したいので、eth0をローカルに指定する。


※OSインストール時にWAN側設定は済んでいるかもしれないが、今回はeth0がLAN側なのでeth0を設定する。
(参考) : http://www.debian.org/doc/manuals/debian-reference/ch05.ja.html#_the_basic_syntax_of_etc_network_interfaces

2.1. ネームサーバ(DNS)の設定確認
/etc/resolv.confを設定する。

# Generated by NetworkManager
domain xxxx.intranet
search xxxx.intranet
nameserver XXX.XXX.XXX.XXX
nameserver XXX.XXX.XXX.XXX

2.2. DNSの確認方法
>nslookup  xxxx.intranet

Server:        XXX.XXX.XXX.XXX
Address:    XXX.XXX.XXX.XXX#53

Non-authoritative answer:
Name:    xxxx.intranet
Address: XXX.XXX.XXX.XXX
(参考) : http://it.jfe-tec.jp/column/tech_column/column_linuxn/000078.html

3.1. hostsの設定方法
/etc/hostsを設定する。
(設定前)
127.0.0.1    localhost
127.0.1.1    host1
#
# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
   ↓
(設定後)
127.0.0.1    localhost
#default setting
#127.0.1.1    host1
XXX.XXX.XXX.XXX    host1(ifconfigで調べたIPアドレスを記入) 
#
#****-subnet
#master node
192.168.1.1   ****01    ****01.xxxx.intranet   ****01-gw   ****01-gw.xxxx.intranet
#slave node
192.168.1.2   ****02    ****02.xxxx.intranet
192.168.1.3   ****03    ****03.xxxx.intranet
...
...
...
#
# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
#
#IPv6を使う場合は下にnodeを書くようにする
(参考) : http://markun.cs.shinshu-u.ac.jp/learn/linux/h_07-02.html

3.2. ネットワークの再起動
>/etc/init.d/networking restart

3.3. ネットワークの動作確認
>nslookup xxxx.intranet

4.1. sshでログインできるようにする。
ログインしたサーバーマシーンにsshをインストールする。
>sudo apt-get install ssh
インストール完了後、再起動する。
>sudo reboot

4.2. sshできるか確認する
 a. ログインしたいhostでifconfigをかけて、IPアドレス(XXX.XXX.XXX.XXX)を取得して、
     >ssh XXX.XXX.XXX.XXX
 b. DNSが割り振られている場合は
     >ssh hostname.xxxx.intranet

・Slave Nodeの設定
1. ネットワークインタフェースの設定
/etc/network/interfacesを設定する。
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address 192.168.1.X               #IPアドレス
        netmask 255.255.255.0          #ネットマスク
        network 192.168.1.0              #ネットワークアドレス
        broadcast 192.168.1.255       #ブロードキャストアドレス
#192.168.*の「*」はサブネットを認識する番号なので通常は0か1を用いて、
#複数使う場合は、2以降を使うことも可能
※Xが1ならば01の親ノード(Master node)となるので、この場合は02なら2、03なら3・・・といったように割り当てていく。
※Xのとこだけ変えれば後はみんな同じでよい。

2. hostsの設定方法
/etc/hostsを設定する。
127.0.0.1    localhost
#default setting
#127.0.1.1    host1
XXX.XXX.XXX.XXX    host1(ifconfigで調べたIPアドレスを記入) 
#
#****-subnet
#master node
192.168.1.1   ****01    ****01.xxxx.intranet   ****01-gw   ****01-gw.xxxx.intranet
#slave node
192.168.1.2   ****02    ****02.xxxx.intranet
192.168.1.3   ****03    ****03.xxxx.intranet
...
...
...
# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
#
#IPv6を使う場合は下にnodeを書くようにする
※ifconfigをするとそれぞれXXXの部分がことなるはずなのでそこを変更する。

※cf.
一つずつ記入してもよいが、hostsファイルは同じでもいいので、
Masterでhostsを作り、Slaveにばらまいてもよい。
その場合はすべてのhostのIPアドレスをhostsファイルに記入しないといけない。
この方法の方が楽だと思います。
(例)
#default setting
#127.0.1.1   host1
XXX.XXX.XXX.XXX    host1(ifconfigで調べたIPアドレスを記入)
XXX.XXX.XXX.XXX    host2(ifconfigで調べたIPアドレスを記入)
XXX.XXX.XXX.XXX    host3(ifconfigで調べたIPアドレスを記入)
XXX.XXX.XXX.XXX    host4(ifconfigで調べたIPアドレスを記入)
XXX.XXX.XXX.XXX    host5(ifconfigで調べたIPアドレスを記入)
XXX.XXX.XXX.XXX    host6(ifconfigで調べたIPアドレスを記入)
・・・
#
#***1-subnet
・・・

こうして作ったものを下のスクリプトで作ったRCPでばらまいてもよい。
> RCP /etc/hosts /etc/hosts

・SSH鍵の設定
suでs系コマンドはできないのでそれをできるように設定する。

1. Master nodeでauthorized_keysを作る。
    >su
    >cd
    >ssh-keygen -b 2048 -t rsa

    ※何回か聞かれるがすべて「Enter」を押していればよい。
    Generating public/private rsa key pair.
    Enter file in which to save the key (${HOME}/.ssh/id_rsa): #そのままリターン
    Created directory '${HOME}/.ssh'.
    Enter passphrase (empty for no passphrase): #そのままリターン
    Enter same passphrase again: #そのままリターン
    Your identification has been saved in ${HOME}/.ssh/id_rsa.
    Your public key has been saved in ${HOME}/.ssh/id_rsa.pub.

2. 作成された ~/.ssh/id_rsa.pub を authorized_keys にrenameする。
    >cd .ssh
    >mv  id_rsa.pub authorized_keys

    既に存在するauthorized_keysに追記する場合は
    >cat id_rsa.pub >> authorized_keys
    >rm id_rsa.pub

3. これをSlave nodeにコピーする。
しかし、suではコピーできないので、一般ユーザーでコピーするようにする。
(参考) : http://oshiete.goo.ne.jp/qa/4676874.html

まずは、suのままで、
>cd
>tar -cvf ssh.tar .ssh/
>mv ssh.tar /home/(usrname)/
>exit

一般ユーザーに戻り、
送りたいslave nodeにsftpする。
>cd
>sftp XXX.XXX.XXX.XXX
>put ssh.tar
>exit

ssh.tarを送ったslave nodeで、
>su
>cp /home/(usrname)/ssh.tar /root
>cd
>rm -rf .ssh/     ※あれば消しておいた方がいいかも
>tar -xvf ssh.tar
そうすると、/rootの下に.ssh/ができてその中にauthorized_keysがあるので、
suでs系コマンドなどができるはずです。
>ssh 192.168.1.2


・Slaveを一括操作するためのスクリプト
1. scriptを作成(scriptは参考例です・・・)
※非常に危険なので考えて使ってください。
Master nodeで、
>su
>cd
>mkdir sbin
>cd sbin

(1). RSH
#!/bin/bash for n in `seq 2 XX`
do
     rsh 192.168.1.$n "$*"
done
exit

(2). RCP
#!/bin/bash for n in `seq 2 XX`
do
    rcp $1 192.168.1.$n:$2
done
exit

(3). PING
#!/bin/bash for n in `seq 2 XX`
do
    ping 192.168.1.$n
done
exit

※XXはノードの数。1がマスターノードなので、2のスレイブノードから始める。
※仮に20までならXXは20となる。

2. scriptのパスを通す
.tcshrcの場合なら、マスターノードのsuの.tcshrcに書き足す。
set path = ($path /root/sbin)

>source .tcshrc
>which RCP    など


・IP Masquerade
Slave nodeはMaster nodeを経由してインターネットに接続することになる。
Master nodeに NAT の設定をする必要がある。 

1. /etc/sysctl.conf
>su
>emacs -nw /etc/sysctl.conf
この中の
net.ipv4.ip_forward=1
行がコメント分になってるので、コメントをはずす。

2. リロードする。(有効化)
>sysctl -p
net.ipv4.ip_forward=1
正しくリロードされれば、上記のように返ってくるはずです。

3.1. IPtablesの設定
>iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
>iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
>iptables -A FORWARD -d 192.168.0.0/24 -m state --state ESTABLISHED,RELATED -j ACCEPT

3.2.  確認
>iptables -nL -t nat
 

4.  Ubuntuを起動する度に実行しなければならないので、 /etc/rc.local に記述しておく。
※exit 0の上に必ず書くこと。 
>emacs -nw  /etc/rc.local
(例)
#IP Masquerade setting fos Slave node  記入した日付 記入した人の名前
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
iptables -A FORWARD -d 192.168.0.0/24 -m state --state ESTABLISHED,RELATED -j ACCEPT 
#
exit 0
(参考) : http://d.hatena.ne.jp/zenmaikiko/20100510/1273513354


・NIS
(参考) : http://www.geocities.co.jp/SiliconValley-Cupertino/9120/nis.html

1. Master node(NIS Server)
(1). NISをインストールする
>su
>apt-get install portmap nis
途中、NISのドメインを聞かれるので、「****01.xxxx.intranet」のようにしておけばよい。
※このドメイン名はhostsファイルで指定した名前にしておくようにする。(****01.xxxx.intranet)
仮に違う名前を入れてしまった場合は「/proc/sys/kernel/domainname」にNISのドメイン名が入っているのでここを変更すればよい。
※インストール中にypbindしようとするので時間がかかるが待てばよい。

(2).
>emacs -nw /etc/hosts.allow 
portmap ypserv ypbind : 192.168.1.0/24を追加する。

(3).
>emacs -nw /etc/default/nis
NISSERVER=false
  ↓
NISSERVER=masterに変更する。

(4).
>emacs -nw /etc/yp.conf
domain ****01.xxxx.intranet server 192.168.1.1
を追加する。
※serverのとこは自分のMasterのeth0のIPアドレスに指定すればよい。

(5).
>emacs -nw /etc/ypserv.securenets
(変更前)
# Always allow access for localhost
255.0.0.0    127.0.0.0
# This line gives access to everybody. PLEASE ADJUST!
0.0.0.0        0.0.0.0

↓
(変更後)
# Always allow access for localhost
255.0.0.0         127.0.0.0
# This line gives access to everybody. PLEASE ADJUST!
#0.0.0.0           0.0.0.0             #この行をコメントアウト
255.255.255.0  192.168.1.0    #この行を追加する(netmask getway)

(6). 設定を反映させる
>/usr/lib/yp/ypinit -m
※B
※C
>service portmap restart
>service nis restart
>make -C /var/yp
※B
ここで、
「failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating passwd.byuid...」
というエラーを受けた場合は、
ypservが動いていないということなので起動させる。
起動させかたは以下の通り。(ubuntu11.10の場合)
>/usr/sbin/ypserv start
※バージョンによって場所が違うようなので注意。
起動させたらまた「/usr/lib/yp/ypinit -m」をかければ動くはずです。
(参考) :  http://search.luky.org/fol.2000/msg04601.html

※C
Bでのエラーとは関係なく、/etc/yp.confが反映した名前のディレクトリーが出来ない場合は、
再起動すれば直るはず(私はとりあえず再起動したら直りましたw)

2. Slave node(NIS Client)
(1). NISをインストールする
ドメイン名を聞かれるので、先ほどと同じものを入力する。(****01.xxxx.intranet)
>sudo apt-get install -y portmap nis

(2). ユーザー情報などをNISから取り込むよう、各ファイル末尾に + で始まる行を追加する。
※非常に危険なファイルを書き換えるので、あえてemacsで編集して~ファイルを残すようにするとよい。
何かあった場合は名前を変えて元ファイルに変更するようにする。
>su
>emacs -nw /etc/passwd
+::::::
>emacs -nw /etc/group
+:::
>emacs -nw /etc/shadow
+::::::::

※「:」の数が非常に大事なので数を間違えないように

(3). 設定を反映させる
>service nis restart
  * Stopping NIS services                                                 [ OK ]
  * Starting NIS services
>make -C /var/yp

(4). 確認する
>ypcat passwd

0 件のコメント:

コメントを投稿