構築環境の構造
構成マシン | IP (local) | 役割・コメント |
---|---|---|
Router | 192.168.x.1 | ルーター専用機 DHCPサーバーも兼ねる |
hoge001 | 192.168.x.2 | hoge00nを束ねるマスターサーバー |
hoge002 | 192.168.x.3 | スレーヴサーバー1 |
hoge003 | 192.168.x.4 | スレーヴサーバー2 |
... | ... | ... |
マスターサーバーにルーター機能を担わせようとすると、関連する設定が面倒なので専用機を使って、ローカルネットワークを構築。
ルーターにはグローバル側のIPも振ってあり、ルーターのIPを特定のポートでたたくことでマスターサーバーのあるポートにつながる設定になっている。
注意 この環境自体がローカルネットワークに置いてあるのでセキュリティに関してはかなり甘め。
マスターサーバーがNFSサーバーを担っていて、マスターサーバーのmaster:/home
がスレーヴサーバーのslave:/home
にNFSでマウントされている。
マスターサーバーはNISサーバーも担っていて、アカウントはこちらで管理されている。
IPアドレスの固定
CentOS7では、設定ファイルを直接編集することは非推奨になったらしいので、nmtui
を使って設定する。root権限要。
nmtui
でグラフィカルなアプリが立ち上がるので、カーソルで選んでEnterで対象個所の編集。
例えばeth0の設定を選ぶ場合は<接続の編集>→< eth0 >→<編集...>にすることで、設定の編集ができる。
IPを固定したい場合はIPv4 設定をから<手作業>にし、適宜下記の項目の<追加...>を選ぶ。
設定項目はアドレス、ゲートウェイ、DNS サーバー、検索ドメインの四つ。
アドレスに所望のIPアドレスを記載し、/
の後に数字でネットマスクの値を記入。
ゲートウェイ、DNS サーバー、検索ドメインは属しているネットワークの値を記入。
(大学の研究室等のローカルネットワークであれば、IPアドレス以外は、ゲートウェイとなっているルーターが分かっていればそのアドレスを記載すれば動くはず。)
ネットマスクは独立した項目はなく、IPアドレスの最後部、/
の後に数字で追記。
例えば255.255.255.0であれば、24なので、192.168.x.y/24
みたいな感じで。(~~もしかすると、192.168.x.y/255.255.255.0
でも良いのかも。~~この書き方はnmtuiでは機能しなかった。)
上記の<接続の編集>のみでは設定内容は反映されない。
例えば# service network restart
でネットワークデーモンを再起動する事で設定が反映される。
リモートでアクセスしている際は、この設定反映させたときに切断されてしまうので注意。
設定が不十分な場合、リモートからは入れず、本体に直接ログインしないといけないかも。
NISとNFSをつかったマスターノードのアカウントと/home
データの共有に向けた準備
NFSを使ってマスターノードのmaster:/home
をスレーヴノードのslave:/home
にマウントすることを考える。マウント先のディレクトリは空である必要がある。
一方、スレーヴノードにもルート以外に管理用の一般ユーザーアカウントは置いておきたい。(いつでもルートでログイン という状況を避けたい。)
そこで、スレーヴノードでは、管理用一般ユーザーアカウントを作り、そのユーザーのホームディレクトリを/home
以外の場所にする必要がある。まだ管理用ユーザーを作成していない場合は、adduser
コマンドに適切なオプションをつけてこの目的を達成することができる。
既にアカウントを作ってある場合は、既にあるhomeディレクトリを/home
以下以外に移す必要がある。
このホームディレクトリの以降に関連して具体的な手続きに関して参考にしたページ: ホームディレクトリの移行。 - Linuxの缶詰
まだ存在しないディレクトリに移行しようとしたさいでも、コマンドは通ってしまうので注意。
# 各ユーザーのhomeディレクトリの確認
less /etc/passwd
# user_nameの新たなホームディレクトリの指定
usermod -d /directory/for/new/home user_name
手元の実環境特有の設定メモ1
手元の環境では/home
を空ける為に、/home_hostname
を作って、全てそこに移行した。
/home
用にディスクがマウントされていたので、
-
/home_hostname
の作成 -
/etc/fstab
を編集してマウント先を/home_hostname
に変更 -
umount /home
でアンマウントしてからmount /home_hostname
でマウント -
usermod
コマンドでホームディレクトリの移動
という手続きを取った。
このとき、一般ユーザーでログインしてからsu -
でルートになっていると、/home
以下がビジーになってしまって、umount
もusermod
もできないので、ルートで直接入る必要がある。
手元の実環境特有の設定メモ2
上の設定メモ1では、/home
が特定のディスク(なりパーティション)にマウントされていた状況が念頭にあった。一方で、/
がディスクにマウントされていて、/home
は単にそこにぶら下がっている一ディレクトリのこともある。その際は
-
/home_hostname
の作成 -
/home/user_name
を/home_hostname/user_name
にmv
コマンドで移動 -
usermod
コマンドでホームディレクトリの移動
となる。ディスクのマウント先を変える時と異なって、ファイルの移動は明示的に行わなければいけないことが、先の設定メモ1の状況との大きな差になる。
NFSの設定
NFSサーバー側の設定
# nfs-utilsのインストール
yum install nfs-utils
# NFSサービスの起動と有効化(自動起動設定)
systemctl start nfs-server
systemctl enable nfs-server
設定ファイルは'/etc/exports'にある。
ここに
/home 192.168.x.0/255.255.255.0(rw,async) #読み書き許可、非同期
/backup 192.168.x.0/255.255.255.0(ro) #read-only
を記述。(一先ずオプションは適当)
systemctl resatrt nfs-server
でNFSサービスを再起動して、設定を反映。
exportfs
コマンドで、正しく反映されているかどうかを確認できる。
NFSクライアント側の設定
設定ファイルは/etc/fstab
にある。
ここに
192.168.x.2:/home /home nfs defaults 0 0
192.168.x.2:/home /home nfs defaults,ro 0 0 #read-only(ro)でマウントしたい場合
を記述。(一先ずオプションは適当)
mount /home
で、master:/home
がslave:/home
にマウントされるはず。
(手元の計算機では、足りないアプリは無かったが、NFS関係のアプリケーションが入っていない感じのエラーが出たら、nfs-utils
を入れる必要があるかも)
df -h
などでマウントされているかどうか確認できる。
NISの設定
LDAPの方がNISよりも現代的とのことだけれども、ひとまずLDAPは見送ってNISを使う。
移行とLDAPの概要を紹介している参考ページ: NISの環境からLDAPへの移行 | scwirq's logs
NISサーバー側の設定
参考にしたウェブページ: CentOS 7 NISでユーザ管理 – NISサーバの設定 ← RootLinks Co., Ltd.
# インストール
yum install ypserv
# NISドメイン名を hoge に設定
ypdomainname hoge
NISドメイン名を再起動後も hoge として設定するために/etc/sysconfig/network
に
NISDOMAIN=hoge
を記載。
NISクライアントとして許可する範囲を/var/yp/securenets
に
255.255.255.255 127.0.0.1 #ローカルホスト
255.255.255.0 192.168.x.0 #ローカルネットワークの内側
と記載。
# NISサービスの起動と有効化(自動起動設定)
systemctl start ypserv yppasswdd
systemctl enable ypserv yppasswdd
systemtl status ypserv yppasswdd
で状態を確認できる。
# NISデータベースの更新
/usr/lib64/yp/ypinit -m
対話的に進む。
ホストを追加しないので、ctrl+Dで止め、正しいホスト名が表れていれば y で進む。
NISサーバーにユーザーを追加した場合は、
cd /var/yp
make
systemctl restart ypserv yppasswdd
で新ユーザーが反映される。
NISクライアント側の設定
参考にしたウェブページ: CentOS 7 NISでユーザ管理 – NISクライアントの設定 ← RootLinks Co., Ltd.
# インストール
yum install ypbind yp-tools
# NISドメイン名を hoge に設定
ypdomainname hoge
NISドメイン名を再起動後も hoge として設定するために/etc/sysconfig/network
に
NISDOMAIN=hoge
を記載。
NISサーバーを名前から探索できるように/etc/hosts
に
192.168.x.2 hoge001
と記載。
#NIS認証の設定(よく理解していない)
authconfig --enablenis --nisdomain=hoge --nisserver=hoge001 --enablemkhomedir --update
# NISサービスの起動と有効化(自動起動設定)
systemctl start ypbind
systemctl enable ypbind
systemctl status ypbind
で状態を確認できる。
うまくいっていれば、ypcat passwd
で、紐づいている様子が確認でき、 ypwhich
でNISサーバーの場所が帰ってくるはず。
トラブルシューティング
スレーヴサーバー(NISクライアント)にログインした時のユーザー名/グループ名がおかしい
原因の一つはNISのサーバーとクライアントのユーザー間でUID/GIDが重なっていること。これを解消する事で、期待する挙動を示すようになった。
具体的にはusermod -u
とgroupmod -g
でUID/GIDを変える。CentOS7では、UID/GID共に1000から順に番号が増えていく。これを1000→2000, 1001→2001等としてシフトさせた。
これに対応して、クライアントのローカルアカウントのホームディレクトリのオーナーも変えるべきなので、忘れにchown
コマンドで対応するものに変える。
(正確なソースで確認したわけではないがUID/GIDが両計算機でかぶっていると、どうも後述するような挙動となるよう。ログインした際、UID(と多分GIDも)をNISサーバーからとってくる。そして、そこからUSER環境変数を代入するときには、どうもNISクライアント内の/etc/passwd
を使っているようだった。UID/GIDが重ならないようにすると、USERにはNISサーバーにあるものを使うようになった。)
全ユーザー共通環境設定/etc/profile
がスレーヴサーバーへ反映されない
上記の設定ではマスターサーバーのホームディレクトリをNFSで共有しているので、どこかのサーバーから.bashrc
/.bash_profile
を編集する事で、ログインした計算機に依らず共通の環境設定がなされる。
しかし、/etc
以下はNFSで共有していない(ここには色々込み入ったファイルがあるので共有は難しそう)ので、全ユーザー共通環境設定/etc/profile
は個々のサーバーにあるものが呼ばれる。
つまり、このファイルで設定する環境を共通の何かにしたい場合は、全てのサーバーの/etc/profile
に同じ内容を追記する必要がある。
こうした需要は例えば、アプリを自前で/opt
に入れて、そこへのPATHを通したいときに発生する。各ユーザーが.bashrc
等に追記してもいいかもしれないが、ルートが/etc/profile
にしかるべき書き方で記載したほうが単純。マスターサーバーの/opt
をスレーヴ―サーバーがNFSでマウントすれば、個々の計算機でビルドする必要がなくなる。
authconfig
のところでこける
NISサーバー側の/etc/hosts
にクライアントからauthconfig
をすると、こける。
/etc/hosts
にIPとホスト名を追加。
参考
[3]連載「分子シミュレーション研究者のためのPCクラスタ入門」](https://www.jstage.jst.go.jp/article/mssj/17/4/17_209/_pdf) (pdf注意)
chronyの設定
server 0.jp.pool.ntp.org iburst
server 1.jp.pool.ntp.org iburst
server 2.jp.pool.ntp.org iburst
server 3.jp.pool.ntp.org iburst
#
minsources 2
で、systemctl restart chronyd
で再起動。
設定の確認
chronyc tracking
chronyc sources