Twitterに投稿 はてなブックマークに追加 Google Bookmarksに追加

目次 >> AWS >> ParallelClusterの基本設定と起動方法

ParallelCluster(旧CfnCluster)の基本設定と起動方法

CfnClusterはバージョン2.0.0よりAWS ParallelClusterという名前に変更になりました。

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/
にブラウザでアクセスするとでクラスターの稼働状況がわかる。


最終更新日


本文中のFC4はFedora ProjectのFedora Core 4を、FC5はFedora Core 5を、FC6はFedora Core 6をopenSUSEはNovellのSUSE Linux OSSを表します。Fedora7以降は、単にFedora7、Fedora8、Fedora9、Fedora10、Fedora11、Fedora12、Fedora13、Fedora14、Fedora15と表示しています。Ubuntuは、必要に応じて20.04、21.04のようにバージョン番号をつけて区別しています。

ここに登場するドメイン名やIPアドレスなどはフィクションです。実在の人物・団体等とは一切関係がありません。
実際に使用する際は、各自の環境に合わせて書き換えてください。
もし何か間違いなどありましたらこちらからご連絡ください
リンクに許可は不要です。
Copyright (C) 2021 Chikuma Engineering Co., Ltd. All Rights Reserved.