(自ブログからの転載です)
はじめに
前回の記事で、AWSのインスタンス上にFolding@Homeを乗せて新型コロナの解析を試みたのですが、インスタンスの制約上あまりうまくいきませんでした。
本記事は、同様のことをGoogle Cloud Platformの無料トライアル枠でやってみたものです。
今回は、 トライアルに申し込むともらえる 12か月使える$300分のクレジット を活用していきます。
やったこと①: アカウント作成
今回はアカウントを作るところから。
- [https://cloud.google.com/] にアクセスし、「無料トライアル」をクリック
- Googleアカウントでログイン
- 利用規約への同意、個人情報の入力
- ここでクレジットカードの情報を求められるが、あくまで個人確認のためのもの。無料枠クレジットを超過しても、インスタンスを止められるだけで追加料金は発生しない。
やったこと②: プロジェクトの作成
今回の用途のために、プロジェクトを新しく作成。
- 画面右上の"My First Project"と書かれた部分をクリック。ポップアップした画面内の「新しいプロジェクト」をクリック
- 適当にプロジェクト名を入力して作成。
- 自動では切り替わらないので、もう一度"My First Project"をクリックし、ポップアップ画面から作ったプロジェクトを選択し、「開く」。
やったこと③: VPC環境の作成
AWSで試したとき同様、VPC環境をまず構築し、その中にインスタンスを立てる。
③-1. VPC+サブネット作成
- 画面左のメニューから、「VPCネットワーク」->「VPCネットワーク」を選択
- 初回だと、画面が表示されるまで時間がかかるので注意。
- 画面上部の「VPCネットワークを作成」をクリック
- VPCの名前を適当に決める。
- サブネットの作成もここで行える。今回は以下の画像のような設定にした。
- ここで、リージョンはこの後建てるインスタンスにそろえるために、us-west1を選択。
- 「作成」を押して完了。
③-2. ファイアウォール設定
- 画面下部に、作成したVPCが表示されるので、VPC名をクリック
- 「ファイアウォール ルール」 -> 「ファイアウォールルールを追加」の順にクリック
- 以下のように入力し、「作成」。
- 自分だけアクセスできればよいので、「ソースIPの範囲」には、自分自身のIPアドレスを入力(例:
100.101.102.103/32
)
- 自分だけアクセスできればよいので、「ソースIPの範囲」には、自分自身のIPアドレスを入力(例:
-
上記の要領で、以下2つのポートについても設定。
- tcp: 7396 (Folding@HomeのWebコントローラ用)
- tcp: 49152~65535の範囲の好きな数字 (SSH接続用)
-
最終的に以下のようになる。(tcp:22はこの後の手順で削除する)
- 補足; AWSではユーザが作成していたルートテーブルやインターネットゲートウェイは、GCPでは勝手に設定してくれる。
やったこと④: VPC上にVMインスタンス構築
③で作ったVPC環境上に、VMインスタンス(AWSで言うEC2)を作成。
④-1. インスタンス作成
- 画面左のメニューから、「Compute Engine」->「VMインスタンス」を選択し、「作成」をクリック
- 以下のように設定する。(スクショ省略。まだ作成はしない。)
- 記載のないものはデフォルトのまま。
- 今回はマシンとして、完全無料の
f1-micro
ではなく、CPUをまるまる1コア使えるn1-standard-1
を選んだ。記事執筆時点では、下記設定で月額$24.67なので、1年間回しても無料クレジットが枯渇しない計算になる。
項目 | 設定値 |
---|---|
リージョン | us-west1 |
ゾーン | us-west1-b |
マシン | n1-standard-1 |
CPUプラットフォーム | 自由 |
ブートディスク | Debian GNU/Linux9(stertch) 10GBの標準永続ディスク |
ファイアウォール | どちらもチェックを外す |
- 画面下部の「管理、セキュリティ、ディスク、ネットワーク、単一テナンシー」をクリック
- 「ネットワーキング」タブの「ネットワークインターフェース」で、③で作成したVPC環境を選択し「完了」。
- 「作成」をクリックすると、VMが作成され、起動する。
④-2. root権限を持ったユーザの新規作成
- VMインスタンスの一覧画面で、作成したVMインスタンスの名前部分をクリック
- 詳細画面が出るので、画面上部の「編集」をクリック
- 画面下部に、「SSH 認証鍵が0 個あります」と書かれた箇所があるので、その下の「表示して編集する」をクリック
- 以下のようなボックスが出るので、公開鍵ファイルの中身をコピペする。
- うまくいくと、ボックスの左側にユーザ名が表示される。 この名前がLinuxに新規登録されるユーザ名になる。
- 「保存」を押して完了
やったこと⑤: Linuxの設定
SSHのポート番号変更
-
④-2で登録した公開鍵に対応する秘密鍵と、登録時に表示されたユーザ名で、VMにSSHログイン
- アクセス先のIPアドレスは、VMインスタンス一覧の「外部IP」に表示されているもの。
- まだ設定を変えていないので、ポート番号22でアクセスする。
-
/etc/ssh/sshd_config
を編集し、以下の1行を追加する- *****には、③でファイアウォールに指定したSSH用ポート番号を入れる
Port *****
- ファイル更新後、以下のコマンドを実行
$ sudo service sshd reload
- ここで、「上記で指定したポート番号でSSHログインできること」「ポート番号22でSShログインができなくなっていること」を確認する。
- 確認できたら念のため、③-2で作成した、tcp:22に対するファイアウォールルールを削除する。
やったこと⑥: Folding@Homeの導入
最低限必要なFAHClient
のみ導入。
インストール
$ wget https://download.foldingathome.org/releases/public/release/fahclient/debian-stable-64bit/v7.6/fahclient_7.6.9_amd64.deb
$ sudo dpkg -i --force-depends fahclient_7.6.9_amd64.deb
- 以下のような画面がでてくるので、ユーザ名等を対話式で入力。
設定
-
/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://<VMインスタンスの外部IPアドレス>:7396
にアクセスする。- 以下のような画面が出たらOK。すでにタスクを取得している場合、進捗状況等表示される。
結果
- 今のところ不具合もなく、1タスク10時間程度でこなせている。
まとめ
- 「新型コロナウイルスの解析に貢献しつつ、Google Cloud Platformの環境構築を実践してみよう」とした話でした。
- 結果、無料クレジットの範囲内でも、そこそこのスペックのVMを組むことができました。
- 今回作った環境はしばらく起動させっぱなしにしてみます。1か月後あたりにもろもろどうなったかを報告できれば、とも考えてます。
更新履歴
- 2020/4/20 FAHClient最新版(Ver7.6.9-1)に対応