3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Google Cloud Platformの無料トライアルを使って、新型コロナ解析に貢献する話

Last updated at Posted at 2020-04-11

(自ブログからの転載です)

はじめに

前回の記事で、AWSのインスタンス上にFolding@Homeを乗せて新型コロナの解析を試みたのですが、インスタンスの制約上あまりうまくいきませんでした。
本記事は、同様のことをGoogle Cloud Platformの無料トライアル枠でやってみたものです。
今回は、 トライアルに申し込むともらえる 12か月使える$300分のクレジット を活用していきます。

やったこと①: アカウント作成

今回はアカウントを作るところから。

  • [https://cloud.google.com/] にアクセスし、「無料トライアル」をクリック
  • Googleアカウントでログイン
  • 利用規約への同意、個人情報の入力
    • ここでクレジットカードの情報を求められるが、あくまで個人確認のためのもの。無料枠クレジットを超過しても、インスタンスを止められるだけで追加料金は発生しない。

20200409212332.png

やったこと②: プロジェクトの作成

今回の用途のために、プロジェクトを新しく作成。

  • 画面右上の"My First Project"と書かれた部分をクリック。ポップアップした画面内の「新しいプロジェクト」をクリック

20200409213346.png

  • 適当にプロジェクト名を入力して作成。

20200409213733.png

  • 自動では切り替わらないので、もう一度"My First Project"をクリックし、ポップアップ画面から作ったプロジェクトを選択し、「開く」。

20200409213821.png

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

AWSで試したとき同様、VPC環境をまず構築し、その中にインスタンスを立てる。

③-1. VPC+サブネット作成

  • 画面左のメニューから、「VPCネットワーク」->「VPCネットワーク」を選択
    • 初回だと、画面が表示されるまで時間がかかるので注意。
  • 画面上部の「VPCネットワークを作成」をクリック

20200409214257.png

  • VPCの名前を適当に決める。
  • サブネットの作成もここで行える。今回は以下の画像のような設定にした。
    • ここで、リージョンはこの後建てるインスタンスにそろえるために、us-west1を選択。

20200409214616.png

  • 「作成」を押して完了。

③-2. ファイアウォール設定

  • 画面下部に、作成したVPCが表示されるので、VPC名をクリック
  • 「ファイアウォール ルール」 -> 「ファイアウォールルールを追加」の順にクリック
  • 以下のように入力し、「作成」。
    • 自分だけアクセスできればよいので、「ソースIPの範囲」には、自分自身のIPアドレスを入力(例:100.101.102.103/32)

20200409225039.png

  • 上記の要領で、以下2つのポートについても設定。

    • tcp: 7396 (Folding@HomeのWebコントローラ用)
    • tcp: 49152~65535の範囲の好きな数字 (SSH接続用)
  • 最終的に以下のようになる。(tcp:22はこの後の手順で削除する)

20200409220731.png

  • 補足; AWSではユーザが作成していたルートテーブルやインターネットゲートウェイは、GCPでは勝手に設定してくれる。

20200409221102.png

やったこと④: 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環境を選択し「完了」。

20200409222836.png

  • 「作成」をクリックすると、VMが作成され、起動する。

④-2. root権限を持ったユーザの新規作成

  • VMインスタンスの一覧画面で、作成したVMインスタンスの名前部分をクリック
  • 詳細画面が出るので、画面上部の「編集」をクリック
  • 画面下部に、「SSH 認証鍵が0 個あります」と書かれた箇所があるので、その下の「表示して編集する」をクリック
  • 以下のようなボックスが出るので、公開鍵ファイルの中身をコピペする。
    • うまくいくと、ボックスの左側にユーザ名が表示される。 この名前がLinuxに新規登録されるユーザ名になる。

20200409223357.png

  • 「保存」を押して完了

やったこと⑤: 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
  • 以下のような画面がでてくるので、ユーザ名等を対話式で入力。
    • ユーザー情報系は設定しなくとも動作はするので、わからなければ空白でOK。
    • Power(どれくらいCPU資源を割くか)の設定でfullを選択すると、マシンのCPUを最大限に用いて計算をする。lightを選ぶとCPU利用率50%前後で動作する。
      20200409225353.png

設定

  • /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。すでにタスクを取得している場合、進捗状況等表示される。

20200409230718.png

結果

  • 今のところ不具合もなく、1タスク10時間程度でこなせている。

まとめ

  • 「新型コロナウイルスの解析に貢献しつつ、Google Cloud Platformの環境構築を実践してみよう」とした話でした。
  • 結果、無料クレジットの範囲内でも、そこそこのスペックのVMを組むことができました。
  • 今回作った環境はしばらく起動させっぱなしにしてみます。1か月後あたりにもろもろどうなったかを報告できれば、とも考えてます。

更新履歴

  • 2020/4/20 FAHClient最新版(Ver7.6.9-1)に対応
3
5
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
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?