LoginSignup
4
2

More than 3 years have passed since last update.

AWSの無料枠でCOVID-19解析に貢献しようとしてうまくいってない話

Last updated at Posted at 2020-04-06

(自ブログに書いた記事の転載です)

追記: 2020/4/17

@hirosys-biz さんが、CloudFormationで環境を自動構築する手順を公開されています。本記事の「うまくいっていない」部分も解決してくださっているので、こちらも是非。
COVID-19(SARS-CoV-2)の解析プロジェクトへの参加環境をCloudFormationで自動構築しました

はじめに

「新型コロナウイルスの解析に貢献しつつ、AmazonWebServiceの環境構築を実践してみよう」とした話です。
結果、「正常に動作はしたが、無料枠ではスペック不足ゆえにあまり貢献できていない」という結論になってしまいましたが、
作業の記録として、残しておきます。

背景

コロナ流行辛い。なんとか解決早めらんないか。

今からでも3分ではじめられるコロナ解析貢献「Folding@home」の使い方」というPC Watchの記事を見つける

即自宅ノートPC(旧世代のGPU搭載)にインストール。1週間程度走らせ続けて25タスクほどこなすが、まだ物足りない感。

スペックは上げられないから、稼働台数増やしたい。でも物理マシンは1台しかもっていない...

そうだAWSアカウント持ってた。これ使ってみよう。無料枠でできるなら記事化すれば真似してくれる人いるかも?

行動。

やったこと①: VPC環境の作成

VPC環境をまず構築し、その中にEC2環境を立てることにした。
基本、こちらのブログ記事の通りに作業。

唯一セキュリティグループだけは、今回の利用目的に合わせて以下のように変更。

  • Webサービスを立てるわけではないので80番ポートはクローズ。
  • 代わりに、Folding@HomeのWebコントローラ用に7396番を開放
  • セキュリティ対策として22番以外のSSH用ポートを開放、初期ログイン用に22番はいったん残す。
  • 今回の環境は「自分だけアクセスできればいい」ので、ソースはすべてマイIPに限定

security.png

やったこと②: VPC上にEC2環境構築

①で作ったVPC環境上に、EC2環境を作成。この作業もこちらのブログ記事を参考にした。

今回は無料利用枠で作れる環境にしたかったので、構成は以下の通り

  • OS: Amazon Linux 2 AMI(x86)
  • インスタンスタイプ:t2.micro
  • ストレージ: 汎用SSD 8GB

やったこと③: Linuxの設定

  • SSHのポート番号変更
$ sudo vi /etc/ssh/sshd_config

### 22行あたりに以下を追加(①で指定したポート番号)
Port 2****

### 保存後
$ sudo service sshd reload
  • EC2作成時とは別のRSA鍵でアカウントを作り、デフォルトの"ec2-user"削除
### ユーザ新規作成(root権限)
# useradd newuser
# passwd newuser

### SSH設定(root権限)
# cd /home/newuser/
# mkdir .ssh
# chmod 700 .ssh
# chown newuser:newuser .ssh
### ここで公開鍵をSCPで送信
# mv /home/ec2-user/id_rsa.pub .ssh/authorized_keys
# chmod 600 .ssh/authorized_keys
# chown newuser:newuser .ssh/authorized_keys

### sudoできる権限を与える
# usermod -aG wheel newuser

### 別窓で"newuser"としてログイン。以降newuser側の画面で操作
$ sudo su -
### rootになれることを確認したら、ec2-user削除
# userdel ec2-user

やったこと④: Folding@Homeの導入

今回は、最低限必要なFAHClientのみ導入。

  • インストール
  • $ wget https://download.foldingathome.org/releases/public/release/fahclient/centos-6.7-64bit/v7.6/fahclient-7.6.9-1.x86_64.rpm
    $ sudo rpm -i --nodeps fahclient-7.6.9-1.x86_64.rpm
    
  • 設定

    • /etc/fahclient/config.xmlを編集。更新にはroot権限必須。
<config>
  <!-- Client Control -->
  <fold-anon v='true'/>

  <!-- Folding Slot Configuration -->
  <!-- v7.6.9-1以降、causeにCOVID-19を指定すれば、コロナ関連タスクを優先的にアサインしてくれるようになる -->
  <cause v='COVID_19'/>
  <gpu v='false'/>

  <!-- Webコントローラへのアクセス権限設定。xxx.xxx.xxx.xxxのところに自分のIPアドレスを記入 -->
  <allow>127.0.0.1 xxx.xxx.xxx.xxx</allow>
  <web-allow>127.0.0.1 xxx.xxx.xxx.xxx</web-allow>

  <!-- どの程度CPU資源を利用するか。light,middle,fullの3択 -->
  <power v='full'/>

  <!-- User Information -->
  <!-- ユーザ情報。ユーザ名を入れておけば個人でどれだけ貢献したか集計される -->
  <user v='deflat'/>
  <!-- 所属したいチームのID。省略可。ちなみに222は"Japan"チーム。 -->
  <team v='222'/>
  <!-- 省略可。公式サイトでメールアドレスを登録して受け取ったキーを設定するともらえるポイントが多くなる -->
  <passkey v='***ここにキーを張り付け***'/>

  <!-- スロット番号とタイプ。今回はCPU1個しかないのでいじらない -->
  <!-- Folding Slots -->
  <slot id='0' type='CPU'/>

</config>
  • 設定反映&サービス再起動
    • タスク処理中にstopしても、次startしたときはちゃんと続きから計算してくれる。
$ sudo /etc/init.d/FAHClient stop
$ sudo /etc/init.d/FAHClient start

結果

  • Webブラウザでhttp://<EC2環境のIPアドレス>:7396にアクセスすると、下記のようにちゃんと動いているのが見える。 ...が、めちゃくちゃ処理が遅い
    • 画像は処理開始から24時間ほどたったときのもの。個人持ちのノートPCでも、このくらいなら3~4時間で終わるはず。 result.png

後から調べて分かったこと

  • EC2のt2インスタンスには、「CPUクレジット残高」という概念があり、これが枯れている状態だと使えるCPU資源が限定される。
    • 今回使用したt2-microだと、CPU使用率10%にしかならないのだとか。
    • インスタンス自体の停止→起動をすれば初期クレジットまで回復するそうなので、今後検討してみる。
    • 参考

まとめと感想

  • 「新型コロナウイルスの解析に貢献しつつ、AmazonWebServiceの環境構築を実践してみよう」とした話。
    • 初めてやる自分でも、全行程完了まで2~3時間で行けた。先人の皆様ありがとうございます。
  • 今後、上記にもあった「インスタンスの停止→起動によるクレジット回復」を定期実行する方法も試してみたい
  • 加えて、ほかのIaaSサービスでも同様のことを試してみたい。

更新履歴

  • 2020/4/20: FAHClient最新版(Ver7.6.9-1)に対応
4
2
1

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