LoginSignup
4
2

More than 3 years have passed since last update.

COVID-19(SARS-CoV-2)の解析プロジェクトへの参加環境を AWS Fargate で構築してみました。

Last updated at Posted at 2020-05-07

前回は、CloudFormation で解析環境を構築しました。
https://qiita.com/hirosys-biz/items/fa19e596c3872059bf2c

今回は、コンテナの勉強もかねて AWS Fargate を利用して構築してみました。
思いの外簡単にできてびっくりしました。

こんな方にお勧めです

  • Amazon ECS や AWS Fargate が好きだ!
  • コンテナ技術を使って新型コロナウイルスの解析に貢献したい!

では、さっそく始めましょう

Amazon ECS の利用開始する

今まで、Amazon ECS を未使用の場合は以下のような画面が表示されると思います。
[いますぐ始める]ボタンをクリックします。
image.png

コンテナを定義する

custom のエリアにある[設定]をクリックします。
image.png

スタンダードの設定

以下のように設定します。

  • コンテナ名
    • 任意のコンテナ名を指定します。本稿では「folding-at-home-ecs」としました。
  • イメージ
    • コンテナイメージを指定します。今回は、john k tims さんが作成されたイメージ[johnktims/folding-at-home] を指定します。
  • ポートマッピング
    • Folding@Home で使用するポート番号 7396 tcp を指定します。

このような設定になります。
image.png

つづけて、詳細コンテナ設定を行います。
画面をスクロールさせ、オープナーを開いてください。

詳細コンテナ設定

動かすだけであれば、環境の箇所を設定すればOKです。
必要に応じてその他の場所も確認してください。

  • CPU ユニット数
    • 1024 で 1vCPU となります。1024 以上かつ 4096 以下の任意の値とすればよいでしょう。
    • Folding@Home は CPU (と GPU)がものを言いますので、本稿では後述する タスク CPU の最大値である 4096 を指定しました。
  • コマンド
    • コンテナに与えるコマンドを指定します。こちらの一番下[Start folding]を参考にしました。
    • --user ユーザー名。本稿の例では標準指定であり匿名を意味する Anonymous としています。
    • --team チームの ID 。222 は 日本(japan) の ID です
    • --power は 解析に使用する CPU パワーをどのくらいにするかの指定です。 full、middle, light があります。
    • Amazon ECS では、スペースではなく、以下のようにカンマ区切りで指定します。
--user=Anonymous,--team=222,--power=full

設定例は以下のようになります。

image.png

つづいて、このコンテナを使うタスクの定義を行います。

タスクを定義する

タスク定義のエリアにある[編集]ボタンをクリックします。
image.png
※詳細コンテナ設定の CPU ユニット数の指定が タスク CPU の標準値より大きいため警告メッセージが表示されています。

タスクメモリならびにタスク CPU の値を設定します。
今回の例では、 コンテナ詳細設定の CPU ユニット数を 4096 としているため、以下のような設定なっています。適宜調整してください。

  • タスクメモリ:8GB (8192)
    • タスク CPU を 4 vCPU (4096) を選択すると タスクメモリの最低値が 8GB (8192) となります。
  • タスク CPU:4 vCPU (4096)

設定例は以下のようになります。

image.png

タスク定義が完了したら、[次]ボタンをクリックします。

サービスを定義する

サービスを定義するために、[編集]ボタンをクリックします。
image.png

必要なタスクの数とセキュリティグループの指定を行います。
必要に応じてサービス名を指定してください。Folding@Home で解析を行う際、ロードバランサーは不要です。

  • 必要なタスク数
    • いくつ同時実行するか(解析を何並列で行うか)を指定します。
    • 以下の画像では 1 となっていますが、5 を指定しました。好きな数を指定してください。
  • セキュリティグループ
    • 前回の記事の事前準備記載の方法でアクセス元 IP アドレスを確認し指定することで、不要なアクセスを防ぐことができます。

設定例は以下のようになります。

image.png

サービス定義が完了したら、[次]ボタンをクリックします。

クラスターの設定

特に設定する箇所はありません。[次]ボタンをクリックして進んでください。

image.png

確認

設定した内容を確認します。
問題なければ、[作成]ボタンをクリックしてください。
image.png

構築実施

自動的に環境構築が始まります。完了するまで少し待ちます。
image.png

構築が完了すると、[サービスの表示]ボタンが活性化されますのでクリックします。
image.png

動作確認

下記の赤枠で囲った箇所の「必要数」と「実行中の数」がサービスの定義で指定した「タスクの数」のとおりになるまで待ちます。
そして、緑枠で囲んだ[タスク]タブを選択します。
image.png

タスクのステータスが「RUNNING」になっていることを確認し、任意のタスクのリンクをクリックします。
image.png

そして、パブリック IP の値を確認します。
image.png

確認した IP アドレスにポート番号7396(例:111.222.333.444:7396 ※あり得ないアドレスです)を付与して、Web ブラウザで開きます。
以下のような表示がされれば動作確認成功です!
image.png

結果

タスク数5個で1日程度回した結果は、 15,889 ポイントでした。
image.png
※使用料はざっくり 25ドル程度/日。

まとめ

使用するコンテナイメージとコマンド、必要なCPU数、並列数(タスク数)を指定するだけで簡単に解析環境が構築できてしまいました。
時間をかけて CloudFormation のテンプレートを何百行も書かなくとも並列解析環境が作れてしまったので、感動を覚えています。
今後も使いどころや他のコンテナサービス含めて学び、得た知見を共有していいけたらと思います。

参考資料

https://hub.docker.com/r/johnktims/folding-at-home
https://qiita.com/aqr_w/items/57834c89ded1d8c7d20c
https://qiita.com/jey0taka/items/24c5590ae9cb2b66d383

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2