PCクラスター構築 -OpenMPIのインストール-

PCクラスター構築
-OpenMPIのインストール2011年1月22日(土)
発表:dannna
目次










趣旨
概要:クラスターってなに
手順1:ネットワークの設定 [資料無し]
手順2:ユーザの作成 [資料無し]
手順3:リモートログインの設定
手順4:OpenMPIのインストール [資料無し]
手順5:OpenMPIの設定 [資料無し]
手順6:共有ディレクトの設定 [資料無し]
まとめ
宿題
趣旨
趣旨(1)

良くありそうな話
ちょっと前までは、
並列処理の勉強で講義や参考書を買っても、
自宅やオフィスに実行環境があるのは稀でした。
マルチコアが一般化し、“並列処理”も敷居がなりました。
ついでにマシン1台当たりも安いので、クラスタPCに取り
組んでみようと思ったけど…

⇒なぜか、上手くいかない
趣旨(2)

そもそも、


クラスタ≒並列処理
クラスタの技術≒マルチコアの技術
“並列処理”という言葉に踊らされて、
“いろいろな技術”と“必要な知識”が混同してませんか?
クラスタPCの構築を通して、
絡まった考えを少しだけ紐解ければと願っております
概要:クラスターってなに
クラスタってなに?

2つ以上の“システム”を“インターコネクト”で接続し、
“一連の処理を共同で行わせる”を目的とした集合構成



システム : PC
インターコネクト: LAN
分散コンピューティングの一種
クラスタの範囲


Global Network(広域)

グリッド・コンピューティング(Grid Computing)

クラウド・コンピューティング(Cloud Computing)
Local Network(局所)

クラスタ・コンピューティング(Cluster Computing)
クラウド ≒ グリッド ≧ クラスタ
クラスタの目的と種類

高性能処理(HPC Cluster)

HPC:High Performance Computing

種類:



並列処理
並行処理
高可用性(HA Cluster)

HA:High Availability
まとめ:クラスタってなに?

意識してほしいこと
“単体のシステム”
“2つ以上のシステム”
“インターコネクト”
“効果・性能”



と
を
で接続し
を得る
システム: PC
インターコネクト: Ethernet (LAN)
目的 : 高性能な計算
手順1:ネットワークの設定
1-1ネットワークの設定

グローバルIPとローカルIP

固定IPアドレスの設定

ホスト名の設定

ホスト名とIPアドレスの名前解決
手順2:ユーザの作成
2-1 ユーザの追加

プロセスについて

ユーザについて

デーモンについて

ユーザの追加方法
手順3:リモートログインの設定
3-1 リモートログインについて


クラスタを構成する”各ノードはマシンとして独立”してる。
コマンドまたはプログラムを実行するために、
遠隔(リモート)操作が必要となる。
“実行ユーザ”がリモートでログインする必要がある
複数台あるため自動でリモートログインがしたい
1.
2.

⇒パスワードを手で入力しない方式
3-2 リモートの種類

telnet



rsh (remote shell)




通信に暗号化はナシ、コマンドプロンプトからも実行可能
パスワード認証
通信に暗号化はナシ
パスワード認証
.rhosts認証 (クライアントホストの登録)
ssh (secure shell)




通信に暗号化アリ(secure:安全)
パスワード認証
公開鍵暗号方式の認証[+パスフレーズ]⇒空のパスフレーズ
公開鍵暗号付きrhosts認証(shosts)
3-3 公開鍵暗号について


暗号化された2つの鍵ファイルが一致したとき、
平文化(復元)する。
2つの鍵ファイルは



イメージし
づらい
暗号鍵 ( secret-key )
公開鍵 ( public-key )
特徴として、片方の鍵が他者にわかってもよい。

⇒ 公開鍵を暗号化されていない通信で渡すことが多い
3-4 公開鍵暗号について(イメージ)


個人的な発想ですが、読み方を変えてイメージ化
2つの鍵ファイルは

暗号鍵 ⇒

公開鍵 ⇒
公開錠 又は 公開鍵穴
鍵は1つ
で良い

自分が入ってよいマシンのドアに錠前をつけてもらうイメージ
3-5 OpenSSHについて


特徴
基本Linuxに標準搭載




OSSベースである
2つの鍵暗号方式に対応



RSA (Rivest Shamir Adlman)
DSA (Digital Signature Algorithm)
SSHプトロコルのバージョン1、バージョン2に対応


インストールや設定は、ほぼ皆無
セキュリティ等のポリシに沿った細かな変更も可能
今回は重要なポイントではないです。
ポート番号:22
3-6 設定のポイント

公開鍵によるパスフレーズなし認証のポイントは2つ

ログインを行う“クライアント”側の設定、
ログインされる“ホスト”側の設定、
どちらの設定かを明確にする

公開鍵の登録 (ドアに錠前をつける作業)

パーミッションの設定について確認
3-7 演習問題

空のパスフレーズでRSAの秘密鍵と公開鍵を生成します。

3人一組(A,B,C)になって、次のように公開鍵を渡し、
パスワードなしでSSHのログインが可能な組合せを
確認します。
B

A->B , B->C , C->A

クライアント:________
ホスト:________

A
C
3-8 RSA鍵の生成(1) [クライアント]


認証したい”ユーザ”でログインします
次のコマンドを実行
$ ssh-keygen –t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/danna/.ssh/id_rsa): 生成先の指定
[ Enter ] キー
Created directory '/home/danna/.ssh'.
Enter passphrase (empty for no passphrase): “空のパスフレーズ”のため
そのまま [ Enter ] キー
Enter same passphrase again:
パスフレーズの確認入力 [Enter]キー
Your identification has been saved in /home/danna/.ssh/id_rsa.
Your public key has been saved in /home/danna/.ssh/id_rsa.pub.
The key fingerprint is:
99:f9:d0:76:d1:23:6c:6c:6f:3a:bf:52:3c:e8:2b:b5 danna@vmcent
3-9 RSA鍵の生成(2)

[クライアント]
Homeディレクトリで、次のコマンドを実行

2つのファイルが生成されていることを確認
$ ls
id_rsa
.ssh/
id_rsa.pub
拡張子( .pub ) ありが
“公開鍵 ( public-key )”
拡張子なしが
“秘密鍵 ( secret-key )”
3-10 公開鍵の受け渡し(1)

試しに次のコマンドを実行
$ ssh


localhost
パスワード入力を要求される
鍵(秘密鍵)と錠前(公開鍵)はあるのに?


[クライアント-ホスト]
ドアに錠前がまだ付けていない状態
「ホスト側のドア」に「クライアントの錠前」をつける

公開鍵をホスト側に何かしらの方法で渡す
3-11 公開鍵の受け渡し(2)

[クライアント-ホスト]
scpコマンドについて

ssh通信を利用してホスト間でファイルのコピーを行う
$ scp [OPT] <ユーザ>@<送信元ホスト>:<ファイル> <ユーザ>@<受信ホスト>:<ファイル>



操作する”ユーザ”が同じ場合は、<ユーザ>省略可
操作する”ホスト”が同じ場合は、<ホスト>省略可
リモートログインしたとき、<ユーザ>のhomeディレクトリへログインさ
れる


⇒相対pathを使うときは注意
Homeディレクトリから、次のコマンドを実行
$ scp

.ssh/id_rsa.pub
<相手ユーザ>@<相手ホスト>:~/
このときは、まだパスワードの入力が必要になります
3-12 RSA鍵の登録 (1)

[ホスト]
Homeディレクトリで、順にコマンドを実行
①
ログインを許可する相手の公開鍵を確認
$ ls
~
id_rsa.pub
~
②
登録する相手の“公開鍵 ”
公開鍵を”authorized_keys2”へ登録
$ cat ./id_rsa.pub
>>
.ssh/authorized_keys2
“authorized_keys2 ”が
ドアもしくはドアノブに該当するファイル
3-13 RSA鍵の登録 (2)

[ホスト]
続き
③
公開鍵が登録されているかを確認
$ less ./id_rsa.pub
$ less .ssh/authorized_keys2
④
”authorized_keys2”のパーミッション変更
$ chmod
600
.ssh/authorized_keys2
“authorized_keys2 ”は、
ホスト側のユーザ以外に権限があるとエラーとなります。
⑤
相手(クライアント)の公開鍵は削除します
$ rm ./id_rsa.pub
3-14 sshログインの確認

Homeディレクトリから、次のコマンドを実行
$ ssh


[クライアント]
<相手ユーザ>@<相手ホスト>
このときは、まだパスワードの入力が不要になっているはず
失敗したとき(特にやりがちなこと)

“authorized_keys2”のスペルミス
“authorized_keys2”のパーミッション
そもそも”root”でのログインをsshが許可してない

クライアント側で鍵を再生成してしまった。


3-15 known_hostsファイルについて [クライアント]

クライアント側でsshを実行すると、
次のファイルが作成されます
$ ls .ssh/known_hosts

これは、応答が返ってくる際の公開鍵が登録されています


ホスト側でOS入れ替えなどが会った場合、過去の履歴との不整合から
エラーとなることがあります


参照: “/etc/ssh/ssh_host_rsa_key.pub”
known_hostsの該当箇所を削除
追加設定
$ echo StrictHostKeyChecking=no >>.ssh/config

セキュリティは低下しますが、余計な問い合わせが減ります
手順4:OpenMPIのインストール
4-1 MPIについて

MPI種類 [実装規格]



version1
version2 (version1.x)
主な実装(非商用)

SCore


mpich


MPI ver.1までの実装
mpich2


http://www.pccluster.org/ja/
MPI ver.2へ対応するために、作成し直したもの
OpenMPI

LAMなどが複数が統合?されたもの
4-2 OpenMPIについて

主なディストリにはパッケージとして提供されている

Ubuntu 10.04にはOSインストール時に設定済み

CentOSでもyumインストール可
# yum

install
openmpi
開発元・入手先


http://www.open-mpi.org/
最新の安定版はver.1.4.3
4-3 一連の流れ

ソース群(source)のダウンロード

ダウンロードしたソースの展開

Configureコマンド実行

Makeコマンド実行

Make installのコマンド実行

環境変数の設定
手順5:OpenMPIの設定
5-1 OpenMPIを使うための設定

“mpiexec”のPATH確認

OpenMPIでの通信等の設定

Machinefileの用意

実行テスト
手順6:共有ディレクトの設定
6-1共有ディレクトの設定

ファイルシステムとマウント

NFSについて

サーバ(公開側)の設定

クライアントの設定
まとめ
6-1 まとめ

抜けた部分:



ユーザの一元管理
リソースの管理
並列処理の必要性?