PC クラスター構築 -OpenMPI のインストール 年 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
まとめ:クラスタってなに? 意識してほしいこと システム: PC インターコネクト: Ethernet (LAN) 目的 : 高性能な計算 “ 単体のシステム ” と “ 2つ以上のシステム ” を “ インターコネクト ” で接続し “ 効果・性能 ” を得る
手順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 のログインが可能な組合せを 確認します。 A->B, B->C, C->A クライアント:________ ホスト:________ B 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): Created directory '/home/danna/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: 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 生成先の指定 [ Enter ] キー “ 空のパスフレーズ ” のため そのまま [ Enter ] キー パスフレーズの確認入力 [Enter] キー
3-9 RSA 鍵の生成 (2) [ クライアント ] Home ディレクトリで、次のコマンドを実行 2 つのファイルが生成されていることを確認 $ ls.ssh/ id_rsa id_rsa.pub 拡張子なしが “ 秘密鍵 ( secret-key )” 拡張子 (.pub ) ありが “ 公開鍵 ( public-key )”
試しに次のコマンドを実行 パスワード入力を要求される 鍵(秘密鍵)と錠前(公開鍵)はあるのに? ドアに錠前がまだ付けていない状態 「ホスト側のドア」に「クライアントの錠前」をつ ける 公開鍵をホスト側に何かしらの方法で渡す 3-10 公開鍵の受け渡し (1) [ クライアント - ホスト ] $ ssh localhost
3-11 公開鍵の受け渡し (2) [ クライアント - ホスト ] scp コマンドについて ssh 通信を利用してホスト間でファイルのコピーを行う 操作する ” ユーザ ” が同じ場合は、 省略可 操作する ” ホスト ” が同じ場合は、 省略可 リモートログインしたとき、 の home ディレクトリへ ログインされる ⇒相対 path を使うときは注意 Home ディレクトリから、次のコマンドを実行 このときは、まだパスワードの入力が必要になります $ scp : $ : ~/
3-12 RSA 鍵の登録 (1) [ ホスト ] Home ディレクトリで、順にコマンドを実行 ① ログインを許可する相手の公開鍵を確認 ② 公開鍵を ”authorized_keys2” へ登録 $ ls ~ id_rsa.pub ~ “authorized_keys2 ” が ドアもしくはドアノブに該当するファイ ル 登録する相手の “ 公開鍵 ” $ cat./id_rsa.pub >>.ssh/authorized_keys2
3-13 RSA 鍵の登録 (2) [ ホスト ] 続き ③ 公開鍵が登録されているかを確認 ④ ”authorized_keys2” のパーミッション変更 ⑤ 相手 ( クライアント)の公開鍵は削除します $ less./id_rsa.pub $ less.ssh/authorized_keys2 “authorized_keys2 ” は、 ホスト側のユーザ以外に権限があるとエラーとなりま す。 $ chmod 600.ssh/authorized_keys2 $ rm./id_rsa.pub
3-14 ssh ログインの確認 [ クライアント ] Home ディレクトリから、次のコマンドを実行 このときは、まだパスワードの入力が不要になっているはず 失敗したとき(特にやりがちなこと) “authorized_keys2” のスペルミス “authorized_keys2” のパーミッション そもそも ”root” でのログインを ssh が許可してない クライアント側で鍵を再生成してしまった。 $
3-15 known_hosts ファイルについて [ クライアント ] クライアント側で ssh を実行すると、 次のファイルが作成されます これは、応答が返ってくる際の公開鍵が登録されています 参照: “/etc/ssh/ssh_host_rsa_key.pub” ホスト側で OS 入れ替えなどが会った場合、過去の履歴との不整合 からエラーとなることがあります known_hosts の該当箇所を削除 追加設定 セキュリティは低下しますが、余計な問い合わせが減り ます $ ls.ssh/known_hosts $ echo StrictHostKeyChecking=no >>.ssh/config
手順4: OpenMPI のインストール
4-1 MPI について MPI 種類 [ 実装規格 ] version 1 version 2 ( version1.x) 主な実装(非商用) SCore mpich MPI ver.1 までの実装 mpich2 MPI ver.2 へ対応するために、作成し直したもの OpenMPI LAM などが複数が統合?されたもの
4-2 OpenMPI について 主なディストリにはパッケージとして提供されてい る Ubuntu には OS インストール時に設定済み CentOS でも yum インストール可 開発元・入手先 最新の安定版は ver # yum install openmpi
4-3 一連の流れ ソース群( source) のダウンロード ダウンロードしたソースの展開 Configure コマンド実行 Make コマンド実行 Make install のコマンド実行 環境変数の設定
手順5: OpenMPI の設定
5-1 OpenMPI を使うための設定 “mpiexec” の PATH 確認 OpenMPI での通信等の設定 Machinefile の用意 実行テスト
手順6:共有ディレクトの設定
6-1 共有ディレクトの設定 ファイルシステムとマウント NFS について サーバ(公開側)の設定 クライアントの設定
まとめ
6-1 まとめ 抜けた部分: ユーザの一元管理 リソースの管理 並列処理の必要性?