目次 >> AWS >> ParallelClusterの基本設定と起動方法
CfnClusterはバージョン2.0.0よりAWS ParallelClusterという名前に変更になりました。
まず、適当なインスタンス(t3.nano、t3a.nanoあたりもしくはスポットインスタンスのt1.micro、t1.microがおそらく一番安い)をAmazon
Linuxで立ち上げる。このインスタンスは設定を行うだけであるので、安いものでよい。
起動したら、そのインスタンスにSSHで接続し、
sudo easy_install pip
でpipをインストール。
次に
一応
sudo pip install --upgrade awscli
でawscliをアップデート。
その上で
sudo pip install aws-parallelcluster
で、インストールする。
一応、
sudo pip install --upgrade aws-parallelcluster
で念のためアップデートしておく
まず、
aws configure
と打ち、awsの基本的な設定を行う。
AWS Access Key ID []: AKIAIXDXKJ622DG4TJGA
AWS Access Key IDおよび
AWS Secret Access Key ID []: FzStujrqGU95uYwDIHKFG8FN6o3/3ad2ZFfzJSnF
AWS Secret Access Key IDにはあらかじめ作成しておいたものを入力する。
Default region name [None]: eu-north-1
これは使いたいリージョンの値を入力。
Default output format [None]:
ここは特に入れなくてもかまいません。
次に、
pcluster configure
で設定を開始する。[]内はデフォルト値であるが、[]内が空欄の場合は、たとえ候補が一つの場合でも、必ず値を手動で入力しないといけない。
Cluster Template [default]:
これはとりあえずデフォルトのままでOK。
AWS Access Key ID []: AKIAIXDXKJ622DG4TJGA
AWS Access Key IDおよび
AWS Secret Access Key ID []: FzStujrqGU95uYwDIHKFG8FN6o3/3ad2ZFfzJSnF
AWS Secret Access Key IDにはaws configでの値と同じものを入力する。
Acceptable Values for AWS Region ID: us-east-1 cn-north-1 ap-northeast-1 ap-southeast-2 sa-east-1 ap-southeast-1 ap-northeast-2 us-west-2 us-gov-west-1 us-west-1 eu-central-1 eu-west-1 AWS Region ID []: us-west-2
これは、自分の好きな場所でよいが、日本から近いのはap-northeast-1の東京、料金が安いのは、us-west-2のオレゴン(距離は遠くなるが、ヴァージニアのus-east-1も同価格)である。eu-west-1のアイルランドは、スポット価格が比較的安く安定していた。ただし最近は、どちらも価格の動きが不安定になってしまった。eu-central-1のフランクフルトが穴場である場合もある。ここではオレゴンを選択。
VPC Name [public]:public
これはとりあえず、デフォルト値でOK。
Acceptable Values for Key Name: hogehogekeypair Key Name []: hogehogekeypair
Acceptable Values for Key Nameにはあらかじめ作成しておいたキーペアを入力する。リストされているのが1つだけでも、必ずタイプして入力すること。
Acceptable Values for VPC ID: vpc-7c4bb765 VPC ID []: vpc-7c4bb765
これも、リストの中から選びタイプ。
Acceptable Values for Master Subnet ID: subnet-85f34ff2 subnet-ab3f28ed subnet-377bb176 Master Subnet ID []: subnet-85f34ff2
これも、リストの中から選びタイプ。ここでの選択が、アベイラビリティーゾーンを決定する。特にスポットインスタンスを使う場合は、どのアベイラビリティーゾーンが安いか調べてから選択するのが良い。
これで、userdir/.parallelclusterフォルダ内に、configというファイルが作成され
内容は
[aws] aws_region_name = us-west-2 aws_access_key_id = AKIAIXDXKJ622DG4TJGA aws_secret_access_key = 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 [cluster default] vpc_settings = public key_name = hogehogekeypair [vpc public] master_subnet_id = subnet-85f34ff2 vpc_id = vpc-7c4bb765 [global] update_check = true sanity_check = true cluster_template = default
のようになっているはずである。
現在、バグのためspotインスタンスはsanity_checkがtrueになっていると立ち上があらないので、
sanity_check = false
とする。
また、デフォルトの設定では実際の運用時に向いていないので、これを少し編集する。
[cluster default]
以下に次の項目を項目追加する。
まず、計算ノードがデフォルトでは t2.microになっているので、これをより計算能力の高いものに変更する。ここではc5.xlargeを選択した。
ノードの種類や選択については後述。
compute_instance_type = c5.xlarge
マスターノードはジョブを投入したり、プログラムをコンパイルしたりするノードである。計算能力は特に必要はなく、t3.microあたりが最も安い。デフォルトのt2.microで特に変更する必要もないが、必要ならmaster_instance_type値で変更できる。
master_instance_type = t3.micro
次に、クラスターを作成した際の初期ノード数を指定する。デフォルトでは2であるが、すぐに使うわけでなければ0でもよい。
initial_queue_size = 0
逆にクラスター立ち上げ後、すぐに大量のノードを使いたい場合は、この値を必要なノード数にしておくと、待たずにすぐ使える。
ジョブが大量に投入された際に、無制限にノードが立ち上がり課金されるのを防ぐために、同時に立ち上がる最大ノード数を設定する。デフォルトでは10である。ここでは20を指定している。なお、ここでの値とは別にAWSでは別途立ち上げられる最大数がノードの種類ごとにもうけられている。また、スポットインスタンスのAWSのデフォルトの上限値は20である。この上限値を引き上げるには、Amazonにウェブから申請する必要がある。
max_queue_size = 20
次に、インスタンスタイプであるが、デフォルトではオンデマンドインスタンスである。これをスポットインスタンスに変えると半分以下の価格で使える。
cluster_type = spot spot_price = 0.3
この際に、spot_priceで許容可能な最大価格を指定する、最大価格を小さくしすぎると、計算ノードが立ち上がらなかったり、計算途中のノードが強制シャットダウンされる可能性が高くなるので注意。ここでは、1時間当たり最大0.2ドルを上限としている。なお、spot_priceで指定した入札価格はそれ以上にはならないというだけであって、使用中は、入札価格ではなく、時価で課金されるので、この値よりも必ず安くなる。
Gangliaはversion 2.0.0からデフォルトでは設定されなくなった。
Gangliaを有効にするには、
extra_json = { "cluster" : { "ganglia_enabled" : "yes" } }
を追加しておく。なお、外部からGangliaにアクセスするためには、クラスターを立ち上げた後、マスターノードの80ポートをあける必要がある。
そのほかのオプション、例えばディスクサイズの指定などはこちらを参照。また、計算ノードのタイムゾーンを設定する場合やec2-user以外のユーザーアカウントを作成する場合も、このconfigファイルで指定したのち立ち上げる必要がある。
設定が保存し終わったら、
pcluster create mycluster
コマンドで、クラスターを作る。
pcluster createコマンドの書式は
pcluster create クラスター名
で、クラスター名を変えれば複数のクラスターを作ることが可能である。
例えば、
pcluster create mycluster pcluster create mycluster2
と打つと、myclusterというクラスターとmycluster2というクラスターの2つが作成される。(クラスター名に2のような数字を使うと、gangliaがうまく機能しない??)
また、[cluster]項目は複数作ることができる。例えば、configファイルが、
[aws] aws_region_name = us-west-2 aws_access_key_id = AKIAIXDXKJ622DG4TJGA aws_secret_access_key = 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 [cluster default] vpc_settings = public key_name = hogehogekeypair compute_instance_type = t2.micro [cluster hoge] vpc_settings = public key_name = hogehogekeypair compute_instance_type = m4.xlarge [cluster piyo] vpc_settings = public key_name = hogehogekeypair compute_instance_type = m4.large max_queue_size = 100 [vpc public] master_subnet_id = subnet-85f34ff2 vpc_id = vpc-7c4bb765 [global] update_check = true sanity_check = false cluster_template = default
とある場合、
pcluster create mycluster
とした場合、[cluster default]の内容で立ち上がるが、
pcluster create --cluster-template hoge mycluster
とすると、[cluster hoge]の内容で、すなわち計算ノードがm4.xlargeのクラスターが
pcluster create --cluster-template piyo mycluster
とすると、[cluster piyo]の内容で、すなわち計算ノードがm4.largeのクラスターが立ち上がる。
結構時間がかかるが、
Beginning cluster creation for cluster: mycluster
Creating stack named: parallelcluster-mycluster
Status: parallelcluster-mycluster - CREATE_COMPLETE
MasterPublicIP: 54.203.152.200
GangliaPublicURL: http://54.203.152.200/ganglia/
ClusterUser: ec2-user
MasterPrivateIP: 172.31.9.15
GangliaPrivateURL: http://172.31.9.15/ganglia/
と出たら作成されている。マスターノードの80番ポートをあけた後、
http://54.203.152.200/ganglia/
にブラウザでアクセスするとでクラスターの稼働状況がわかる。
最終更新日