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

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

cfnclusterの基本設定と起動方法

cfnclusterの初期設定とインストール

まず、適当なインスタンス(t2.microかt2.nanoあたりもしくはスポットインスタンスのt1.micro、t1.microがおそらく一番安い)をAmazon Linuxで立ち上げる。このインスタンスは設定を行うだけであるので、安いものでよい。
起動したら、そのインスタンスにSSHで接続し、

sudo easy_install cfncluster

で、インストールする。

次に、

cfncluster 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にはあらかじめ作成しておいたものを入力する。

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/.cfnclusterフォルダ内に、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


のようになっているはずである。このままの設定でも立ち上がることは立ち上がるのだが、これを少し編集する。
[cluster default]
以下に次の項目を項目追加する。

まず、計算ノードがデフォルトでは t2.microになっているので、これをより計算能力の高いものに変更する。ここではc4.xlargeを選択した。
ノードの種類や選択については後述。

compute_instance_type = c4.xlarge

マスターノードはジョブを投入したり、プログラムをコンパイルしたりするノードである。計算能力は特に必要はなく、t2.microが最も安いので、デフォルトのt2.microで特に変更する必要はないが、必要ならmaster_instance_type値で変更できる。

master_instance_type = t2.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で指定した入札価格はそれ以上にはならないというだけであって、使用中は、入札価格ではなく、時価で課金されるので、この値よりも必ず安くなる。

そのほかのオプション、例えばディスクサイズの指定などはこちらを参照。また、計算ノードのタイムゾーンを設定する場合やec2-user以外のユーザーアカウントを作成する場合も、このconfigファイルで指定したのち立ち上げる必要がある。

クラスターの立ち上げ

設定が保存し終わったら、

cfncluster create mycluster

コマンドで、クラスターを作る。
cfncluster createコマンドの書式は
cfncluster create クラスター名
で、クラスター名を変えれば複数のクラスターを作ることが可能である。
例えば、

cfncluster create mycluster
cfncluster 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 = true
cluster_template = default

とある場合、

cfncluster create mycluster

とした場合、[cluster default]の内容で立ち上がるが、

cfncluster create --cluster-template hoge mycluster

とすると、[cluster hoge]の内容で、すなわち計算ノードがm4.xlargeのクラスターが

cfncluster create --cluster-template piyo mycluster

とすると、[cluster piyo]の内容で、すなわち計算ノードがm4.largeのクラスターが立ち上がる。

結構時間がかかるが、

Starting: mycluster
Status: cfncluster-mycluster - CREATE_COMPLETE
Output:"MasterPrivateIP"="172.31.30.76"
Output:"MasterPublicIP"="52.11.108.2"
Output:"GangliaPrivateURL"="http://172.31.30.76/ganglia/"
Output:"GangliaPublicURL"="http://52.11.108.2/ganglia/"

と出たら作成されている。
http://52.11.108.2/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は、必要に応じて17.04、18.04のようにバージョン番号をつけて区別しています。

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