万人のためのハイパフォーマンスコンピューティング

HPC Do It Yourself Club

      HOMEE5-2600v3製品情報お役立ち情報購入案内お問い合わせ会社案内
      ムービーダウンロードドキュメント最新トピックスおもしろLinkHPCノウハウ

2015年の年末特価セールはこちら

ノマド+コピペでできる、バーチャルHPC Linuxクラスター構築

(5)NFSとNISを設定する

 クラスターは複数台のコンピュータの集まりである。別々のままでは使いにくいので、よく使われるファイルは共有して、どのコンピュータからも同じ名前で参照できるようにする。これを実現するには、NFS(Network File System)を使う。また、クラスターを使うユーザーは、全部のコンピュータに同じ名前で登録されてはじめて、全コンピュータと共有ファイルを使うことができる。これを実現するには、NIS(Network Information System)を使う。
 ユーザーのホームディレクトリは/homeに作られるので、hpc01をNFSのサーバーにして、hpc01の/homeを全コンピュータで共有する。NFSのクライアント(現時点ではhpc02だけ)側は、自動マウントを使い、hpc01の/homeを必要な時にだけマウントする。
 NISの設定では、hpc01をサーバーに、その他はクライアントにする。NISでの新規ユーザーの登録は、サーバー上で行う。NISを使って新規ユーザーを登録した場合、全コンピュータで有効にするには、パスワードを設定後、/var/ypに移動しmakeを実行しなければならない。さらに、パスワードなしでsshを使うために、ssh-keygenを行い、生成されたファイルのコピーを行わなければならない。全部を覚えるのも大変だし、間違いなしに実行するのも、気を使う。この記事では、誰でも簡単に間違いなくできるよう、これを一回で行うための新規コマンドも追加する。
 それでは実際の作業に移ろう。まず最初に、2台の仮想マシンhpc01とhpc02を立ち上げる。hpc01にrootでLog Inする。ターミナルを立ち上げ、hpc02とsshで通信できるのを、ssh hpc02 hostnameコマンドを入力して確認する。hpc02と表示されるはずである。Firefoxでこの記事を表示して、最後にある青い文字の部分を全部コピーする。ターミナルに移り、コントロールキーとシフトキーを同時に押しながらvキーを押してペーストする。すると設定が始まり、少しするとFinished.と表示され、設定が終わる。
 今追加したcuseraddコマンドを使い、新規ユーザーを追加して、動作確認を行う。新規ユーザー名はnewにしよう。以下の赤色の文字がキーボードからの入力である。やっていることは次の通りである。cuseraddコマンドでnewというユーザーを登録する。newというユーザー名でhpc02にsshでLog Inする。hpc01上で登録したユーザー名とパスワードが、hpc02上でも有効なことが確かめられる。pwdコマンドを入力し、/home/newにいることを確かめる。dfコマンドを入力し、hpc02の/homeがhpc01の/homeであることを確かめる。その後hpc02からhpc01にsshでLog Inする。パスワードなしでもLog Inできることが確かめられる。これで、NFSとNISの動作は確認されたので、exitコマンドを2回実行し、元の状態に戻る。
[root@hpc01 ~]# cuseradd new
Changing password for user new.
New password: <ーパスワードに設定する文字列を入力する
BAD PASSWORD: it is based on a dictionary word
Retype new password: <ー同じ文字列を再入力する
passwd: all authentication tokens updated successfully.
[root@hpc01 ~]# ssh new@hpc02
new@hpc02's password: <ー先ほど設定したパスワードを入力する
Last login: Fri Feb 22 05:31:15 2013 from hpc01
[new@hpc02 ~]$ pwd
/home/new
[new@hpc02 ~]$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 20121844 5339064 13760648 28% /
tmpfs 506352 136 506216 1% /dev/shm
hpc01:/home 20136832 11277184 7836672 60% /home
[new@hpc02 ~]$ ssh hpc01
Warning: Permanently added 'hpc01,192.168.1.1' (RSA) to the list of known hosts.
[new@hpc01 ~]$ exit
logout
Connection to hpc01 closed.
[new@hpc02 ~]$ exit
logout
Connection to hpc02 closed.
[root@hpc01 ~]# 

次回に続く



##################################################
# NFSの設定開始
##################################################
# サーバー側の設定
##################################################
# NFSサービスをスタートし、リブートしても有効にする
#
service nfs start
chkconfig nfs on
##################################################
# /homeをNFSで共有するよう/etc/exportsに書き込む
#
cat >/etc/exports <<.
/home 192.168.1.0/255.255.255.0(rw,async,no_root_squash)
.
##################################################
# /etc/exportsの内容を有効にする
#
exportfs -a
##################################################
# クライアント側の設定
##################################################
# /etc/auto.masterにダイレクトマウント用に
# /etc/auto.directを使うと書き込む
#
ssh hpc02 cp /root/backup/etc/auto.master /etc
ssh hpc02 ed /etc/auto.master <<%
/^\/misc/
a
/- /etc/auto.direct
.
w
q
%
##################################################
# /etc/auto.directを作る
#
ssh hpc02 "cat >/etc/auto.direct" <<.
/home hpc01:/home
.
##################################################
# autofsサービスをリスタートしnfsで/homeを共有する
#
ssh hpc02 service autofs restart
##################################################
# NFSの設定終了
##################################################
##################################################
# NISの設定開始
##################################################
# サーバー側の設定
##################################################
# /etc/sysconfig/networkにNISDOMAIN名をhpcdiycと設定
#
ed /etc/sysconfig/network <<%
/NISDOMAIN=/d
w
q
%
cat >>/etc/sysconfig/network <<.
NISDOMAIN=hpcdiyc
.
##################################################
# /etc/yp.confにドメイン名とサーバー名を設定
#
cp /root/backup/etc/yp.conf /etc
cat >>/etc/yp.conf <<.
domain hpcdiyc server hpc01
.
##################################################
# /etc/nsswitch.confにNISを使うファイルを設定
#
cp /root/backup/etc/nsswitch.conf /etc
ed /etc/nsswitch.conf <<%
/^passwd:/s/files/files nis/
/^shadow:/s/files/files nis/
/^group:/s/files/files nis/
/^hosts:/s/files/files nis/
w
q
%
##################################################
# ypservとyppasswddを起動しリブート後も有効にする
#
service ypserv start
chkconfig ypserv on
service yppasswdd start
chkconfig yppasswdd on
##################################################
# NISの初期化を行う
#
/usr/lib64/yp/ypinit -m <<.
.
##################################################
# NISを有効にする
#
service ypbind start
chkconfig ypbind on
##################################################
# クライアント側の設定
##################################################
# /etc/sysconfig/networkにNISDOMAIN=hpcdiycを付加
#
ssh hpc02 ed /etc/sysconfig/network <<%
/NISDOMAIN=/d
w
q
%
ssh hpc02 "cat >>/etc/sysconfig/network" <<.
NISDOMAIN=hpcdiyc
.
##################################################
# 修正済のyp.conf, nsswitch.confをコピー
#
scp /etc/yp.conf hpc02:/etc
scp /etc/nsswitch.conf hpc02:/etc
##################################################
# ypbindをスタートさせ、リブート後も有効にする
#
ssh hpc02 service ypbind start
ssh hpc02 chkconfig ypbind on
##################################################
# NISの設定終了
##################################################
##################################################
# cuseradd(クラスター用新規ユーザー登録)コマンドの追加
##################################################
mkdir -p ~/bin
cat >~/bin/cuseradd <<'%'
#!/bin/bash
if [ $# -ne 1 ]; then
echo Usage: $(basename $0) newuser
exit
fi
useradd $1
if [ $? -ne 0 ]; then
exit
fi
passwd $1
# 2013 Mar 5 10:40 右の行を次の行に修正 sudo -u $1 ssh-keygen &>/dev/null <<.
sudo -u $1 ssh-keygen -N "" &>/dev/null <<.



.
sudo -u $1 cp /home/$1/.ssh/id_rsa.pub /home/$1/.ssh/authorized_keys
cd /var/yp
make &>/dev/null
%
chmod +x ~/bin/cuseradd
##################################################
# cuserdel(クラスター用ユーザー削除)コマンドの追加
##################################################
cat >~/bin/cuserdel <<'.'
#!/bin/bash
if [ $# -ne 1 ]; then
echo Usage: $(basename $0) user
exit
fi
userdel -f -r $1
cd /var/yp
make &>/dev/null
.
chmod +x ~/bin/cuserdel
##################################################
echo "Finished."
#


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Copyright (C) HPCシステムズ株式会社. All Rights Reserved.