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 まとめ 抜けた部分: ユーザの一元管理 リソースの管理 並列処理の必要性?
© Copyright 2024 ExpyDoc