Amazon WorkSpacesとSAMBAで研究環境を構築する

記事タイトルとURLをコピーする

はじめに

2015年4月入社の白鳥です。ほぼ10年ぶりの、晴れたすがすがしい冬を満喫している今日この頃です。
私は、サーバーワークスに入社する前は、北の試される大地にて、博士課程の学生として研究をしていました。この記事では、私が使っていた研究環境と同等以上の環境を、AWS上に構築してみます。まず、私が研究中にどのような用途でPCを使っていたかを説明します。研究をどんな手順で進めていたか、その過程でどんなソフトを使っていたかなどについて具体的に述べます。次に、AWS上に構築する研究環境の構成を示します。AWS上の仮想デスクトップであるAmazon WorkSpacesを使い、SAMBAでLinuxのEC2と連携させる構成を提案します。この構成の長所や短所についても述べます。最後に、この環境を構築する手順を示します。構築中のスナップショットや使用したコマンドを使いながら手順を示します。

私が使っていた研究環境

私が行っていた研究は、高分子水溶液や液状食品などの特殊な液体が、どのように流れるかという研究です(参考:LTで研究の話をしたときの資料)。研究のざっくりとした手順としては、

  • 特殊な液体の流れを計測する実験を行う
  • 解析プログラムをかく
  • 解析プログラムを実行して実験結果を解析する
  • 解析結果をグラフや図にして見てみる
  • 学会発表のスライドや論文の原稿(研究の成果物)をつくる

といった感じで進めていました。よって、研究環境となるPCは

  • 実験でとったデータを格納するストレージ
  • エディタなどのコーディング用ソフト
  • コード実行環境
  • グラフソフトなどの解析結果可視化ツール
  • スライドや文書を作成するソフト

を備えている必要があります。実際に私が使っていたPCのスペックと、インストールしていたソフトウェアの一部を表に示します。

OSWindows7エディタNotepad++
CPUIntel Core i7-4771コード実行環境Cygwin, Visual Studio
メモリ8GB×2グラフソフトPlots32, GraphR
ハードディスク3TB×2画像編集ソフトImageJ
ディスプレイ数2スライド・文書作成Microsoft Office

これと同等以上の環境をAWS上に構築するにはどうしたらよいか、考えてみた結果をこれから示していきます。

研究環境の構成

考えてみた研究環境の構成を図に示します。
WSandSamba
この構成では、ユーザーはAWS上の仮想デスクトップサービスであるAmazon WorkSpacesを使います。これでユーザーは、インターネット環境さえあれば、いつでもどこでもWindows7相当の仮想マシンを使うことができます。Microsoft Officeがインストール済みのプランもあります。AWS Directory Serviceは、WorkSpacesを構築する上で必要になるサービスです。
WorkSpacesは便利ではありますが、研究用に使うにはCPUの性能やストレージ容量が物足りない感じがします。そこでAmazon EC2を、SAMBAを使ってマウントさせます。こうすることで、WorkSpaces上のエクスプローラの操作で、EC2(にマウントされたEBS)内のファイルを操作できるようになります。つまり、普通にWindowsを操作する感覚で、WorkSpaces上のエディタでかいたコードをEC2内に保存できます。書いたコードは、クライアント端末からEC2に直接SSHして実行します。
図ではWorkSpacesとEC2を別のAvailability Zone(AZ)に立てていますが、同じAZ内に立てることももちろんできます。今回はあえて別々のAZに立てることで、WorkSpacesとEC2の間の通信のレイテンシーを気にせずに使えるか、確かめてみます。
このように研究環境をAWS上に構築することで、次のようなメリットを期待できます。

  • コード実行時だけ計算能力を上げることができる

通常はEC2のインスタンスタイプ(サーバーのCPUとメモリの性能)を抑えておき、いざ重いコードを実行するときだけ引き上げることができます。

  • 学生数や研究者数に合わせてリソースの増減ができる

留学生や近隣の学校からの学生の受け入れにより、研究室の学生数が一時的に増えることはよくあります。AWS上の環境であれば、一時的に学生数が増えた場合でもそれに合わせてリソースを増やすことができます。WorkSpacesは構築時にOSの言語を選択できるので、外国人留学生を受け入れる場合も便利です。

  • バックアップの取得が容易

研究データをEC2上に保存し、AMIやスナップショットを定期的に取っておけば、万が一ファイルが消失した場合でも簡単に復元できます。論文提出間際や学会直前にハードディスクの中身が吹っ飛ぶ心配がなくなります。

  • どこでも研究できる

Pocket Wi-Fiや公衆無線LANを使うことで、カフェ、空港、新幹線の中などでも研究可能になります。また長期海外出張時などにも、いつもと同じ研究環境を使えるようになります。 一方で、以下の点は実際に使用する上でハードルとなりうるので、改善が必要と考えています。

  • データのアップロードが必要

研究で実際に使用するとなると、実験で取得したデータをAWS上にアップロードする必要があります。私の場合、液体の流れを高速度カメラで撮影していたので、1度の実験で取得したデータ(主に画像データ)が数百GBにのぼることがありました。これだけのデータをアップロードするとなると、かなりの時間を要してしまいます。

  • お値段がちょっと高いかも

月額利用料はだいたい8500円程度になると見積もられます(WorkSpaces Standard Plus $62.0/mon + EC2 t2.micro 1日10時間稼働 EBS 8GB $7.96/mon, $1.00 = 121 と仮定して計算)。負荷の大きい計算をするための一時的なインスタンスタイプ引き上げや、EBS増設などをすると、その分利用料も上がります。1年間利用すると利用料が10万円を超え、それなりのPCを自作できる金額になってきます。 ここからは、この研究環境の構築手順を具体的に示します。

環境構築の手順

ここから示す手順の前提として、VPCおよびDirectory Service用の2つのサブネット(10.0.11.0/24および10.0.12.0/24)は上図の構成通りに構築済みであるとします。サブネットは2つともパブリックサブネットとして構築しておきます。つまり、これらのサブネットのルートテーブルにて、デフォルトゲートウェイをインターネットゲートウェイにしておく必要があります。

WorkSpacesの作成

まずはWorkSpacesの構築を行います。WorkSpaces構築のチュートリアルなどを参考に、Simple Directoryから構築します。特に今回の構成を組むうえで注意すべき点は、構築するVPCおよびサブネットの選択です。構築中の設定で、下記のようにサブネットを選択するように言われるので、先ほど構築しておいたパブリックサブネットを選択します。
WSandSamba05
次にWorkSpacesを構築します。今回、SAMBAを使ってWorkSpacesとEC2を連携させるので、WorkSpacesのIPアドレスを知る必要があります。WorkSpacesは、Simple Directoryを立ち上げた2つのサブネットのうちどちらかにおいて起動し、そのサブネットのCIDR範囲内のIPアドレスが割り振られます。どちらのサブネットに立てるかを設定することはできず運任せですが、立ち上がった後にダッシュボードからプライベートIPを確認できます。私の場合、WorkSpace IPが10.0.12.13となっています。よって、10.0.12.0/24のサブネット内にWorkSpacesが構築されたことが分かります。このサブネットはap-northeast-aにあるため、WorkSpacesがap-northeast-aで稼働していることも分かります。
 WSandSamba06
WorkSpacesの居場所が分かったので、EC2を立てるサブネットを作成します。今回は、あえてWorkSpacesとEC2を別のAZに立てることにしたので、EC2を立てるサブネット10.0.21.0/24をap-northeast-cに作成しました。このサブネット内に立てるEC2には後でSSH接続をするので、パブリックサブネットとして構築しておきます。

EC2にSAMBAをインストールして設定

10.0.21.0/24にEC2を立て、SAMBAでWorkSpacesと連携できるように設定します。WorkSpacesのプライベートIPが10.0.12.13であり、EC2のプライベートIPを10.0.21.0として構築したとして、手順の説明を続けます。 EC2にSSH接続をして、SAMBAをインストールします

$ sudo yum -y update
$ sudo yum -y install samba

連携先としてWorkSpacesを指定するため、SAMBAのconfigファイルを編集します。

$ sudo vim /etc/samba/smb.conf

文字コードの設定と連携先の指定のため、以下の内容をsmb.confに追記します。

unix charset = UTF-8
dos charset = CP932
display charset = UTF-8
hosts allow = 10.0.12.10
path = %H

MYGROUPと設定されているworkgroupを、WorkSpacesのデフォルトであるWORKGROUPに変更します。

workgroup = WORKGROUP

Samba用にLinuxのユーザーを作り、パスワードを設定します。以下の例では、shiratoriというLinuxユーザーを作り、パスワードをshiratoripassと設定しています

$ sudo adduser shiratori
$ sudo passwd shiratori
shiratoripass
$ sudo pdbedit -a shiratori
shiratoripass

Sambaで連携するためのディレクトリを作成し、所有者を変更します。

$ sudo mkdir -p /srv/samba/shiratori
$ sudo groupadd --system sambashare
$ sudo usermod -G sambashare shiratori
$ sudo chown shiratori:sambashare /srv/samba/shiratori

再びsmb.confを編集します。

$ sudo vim /etc/samba/smb.conf

shiratoriというユーザーに関する以下の内容を追記します。

[shiratori]
browseable = yes
writeable = yes
path = /srv/samba/shiratori
force create mode = 664
force create mode = 775
force user = shiratori
force group = sambashare
valid users = shiratori

最後にSAMBAを起動し、Linux立ち上げ時に自動起動するよう設定します。

sudo service smb start
sudo service nmb start
sudo chkconfig smb on
sudo chkconfig nmb on

これでEC2側の設定は完了です。

WorkSpacesにEC2をマウント

WorkSpacesを立ち上げて、EC2をネットワークドライブとしてマウントします。WorkSpacesにログインすると、次のようなデスクトップの画面が立ち上がります。
WSandSamba07
私は英語版のWorkSpacesを立ち上げたので、以下の操作方法も英語版の例となります。日本語版のWorkSpacesでも基本的な動作の手順は同じです。WindowsボタンからThis PCを選択し、ウィンドウを開きます。ウィンドウ上部のComputerタブを開き、Map network driveをクリックします。すると下図のような画面になります。
WSandSamba08
この画面で、ドライブレターと接続先のSAMBAサーバーを指定します。上の図では、先ほど構築したEC2をEドライブとしてマウントするよう設定しています。Finishをクリックすると、ユーザー名とパスワードを入力する画面が現れるので、

ユーザー名: shiratori
パスワード: shiratoripass

を入力します。すると下図のように、This PCのドライブ一覧にネットワークドライブが追加されます。
WSandSamba09
これで、WorkSpacesのエクスプローラで操作するだけで、EC2内のファイルを操作できるようになりました。「EC2内に保存したソースファイルを、WorkSpacesにインストールしたエディタで編集し、EC2にSSHして実行する」ということができるようになったわけです。実行例を下図に示します。
WSandSamba10
上図では、左半分にWorkSpacesのウィンドウ、右側にSSHしているTeraTermのウィンドウを開いています。WorkSpacesのウィンドウの中では、コードを書くためのエディタ(Notepad++)とエクスプローラを開いています。かなり窮屈になっていますが、ディスプレイを増やせば快適に作業できます。WorkSpacesとEC2が別AZで稼働していますが、コードを編集して上書き保存した直後でも正常に実行できました。この環境であれば「コードを実行して得られた出力ファイルを、WorkSpacesにインストールしたグラフソフトにドラッグ&ドロップして開く」といったこともできますし、PowerPointやWordを使って学会資料や論文を作成することももちろんできます。

まとめ

AWS上に構築する研究環境として、WorkSpacesとEC2のSAMBAでの連携を提案しました。この構成では、Windowsのエクスプローラを操作する感覚で、EC2内に保存したコードを編集できます。コード実行時はSSHで操作し、EC2の計算リソースを使って実行できます。よって、CPUおよびメモリを計算実行時のみ引き上げることができます。AWS上に研究環境を構築することで、場所を選ばず研究できるようになる、留学生受け入れ時の研究環境の用意が簡単になるなどのメリットを得られます。
大学や研究機関の皆様はもちろん、元大学院生の皆様もAWS上に環境を構築し、研究を再開されてみてはいかがでしょうか。