PCクラスター構築 -OpenMPIのインストール-
Download
Report
Transcript 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 まとめ
抜けた部分:
ユーザの一元管理
リソースの管理
並列処理の必要性?