ヤマムギ

growing hard days.

*

EFSをEC2(Amazon Linux 2)からマウントする

      2018/08/16


Amazon Elastic File Systemが東京リージョンに来たこともあって、AWSへの移行でアプリケーションのカスタマイズをしない純粋なフォークリフティングで利用されるケースがありそうだなあと。
アプリケーションのカスタマイズをしないことにより、移行の敷居は下がるので、使ってみないとなあと思ってまして。
ちょうどオートスケーリングさせたいEC2を使ったシステムでアプリケーションをカスタマイズしたくない、というシステムを作る機会があったので構築してみました。

作ろうとしているシステムはこちらです。

高可用なRedmine

Amazon Elastic File System(EFS)の設定

EFS用のセキュリティグループの作成

今回はAMIを作るためのEC2のセキュリティグループと、オートスケーリンググループ起動設定のセキュリティグループを送信元(ソース)として、ポートは2049(NFS)を設定しました。

EFSの設定

VPC、サブネット、セキュリティグループを設定します。
セキュリティグループはサブネットごとに設定出来るのですね。

タグ、パフォーマンスモード、スループット、暗号化の設定をします。

パフォーマンスモード

General Purposeがデフォルトです。
画面に書いているとおりですが、Max I/Oの設定をすると数千のEC2インスタンスが接続するようなケースに最適化されていて、高いレベルの集計スループットを提供しますが、レイテンシーがわずかに高くなるという特徴があります。
ビッグデータ解析、メディア処理、ゲノム解析などの高度に並列化されたアプリケーションに適しているようです。

スループットモード

デフォルトはBurstingで自動的にスループットがバーストします。
Provisionedを選択すると1~1024MiB/秒を設定することができます。(別途課金)

暗号化

暗号化はKMSを使用します。
デフォルトキーがあるので使いました。

VPCの設定

EFSのDNS名にEC2からアクセスしますので、DNSホスト名を有効にしておきます。

これをしておかないと、マウントするときに以下のエラーになります。

EC2からマウント

Amazon Linux 2を起動してSSHでログインします。

chownは用途に応じて行ってください。

/etc/fstabには以下の行を追加します。

fs-5c768917:/ /var/efs efs defaults,_netdev 0 0

  • “fs-5c768917″はEFSのファイルシステムIDですので環境によって変わります。
  • “/var/efs”はマウント先ですので環境によって変わります。
  • “efs”はマウントタイプです。EFSの場合は”efs”です。
  • “defaults,_netdev”はmount optionsです。

詳細はこちらのAmazon EFS ファイルシステムの自動マウントをご参照ください。

マウントしてデータを保存してみます。

問題なさそうであれば、EC2からAMIを作成して新しいインスタンスを起動します。
ユーザーデータに以下を記述しておきます。

新たに起動したインスタンスからもファイルをEFSに保存してみます。

両方のインスタンスから、同じファイルが見えていることが確認できました。

Redmineの添付ファイル保存先設定

config.ymlに次の行を追加すればOKです

attachments_storage_path: /var/efs

課金体系

今回の場合は、プロビジョンドスループット を使っていませんので、保存している容量に対しての課金のみです。
EFSはEBSと違ってストレージ容量をプロビジョニングする必要がない上に保存しているデータに対してのみ課金が発生します。

2018/8/11現在でEBS, EFS, S3でGB月(1ヶ月間1GB保存した場合)のバージニア北部の料金を比較してみます。

サービス 料金
EBS 0.1 USD
EFS 0.3 USD
S3 0.023 USD
  • EBSはプロビジョニング容量に対しての課金ですのでEFS,S3のように保存した実容量ではありません。
  • S3は最初の50TBで、リクエスト料金も発生します。
  • リージョン外へのデータ転送料金はS3も発生します。
  • リージョン外へのデータ転送料金はEBSとEFSはEC2を経由して発生します。

コストや耐久性を考えるとアプリケーションをカスタマイズしてS3を利用することを検討するのが良さそうですが、
カスタマイズできない、したくないアプリケーションをAWSへ移行して、EC2を単一障害点にしないよう複数台の高可用性構成にする場合に、EFSは有効に使えると思いました。


最後までお読みいただきましてありがとうございました!
【PR】 「AWS認定試験対策 AWS クラウドプラクティショナー」という本を書きました。

 - AWS , ,

ad

ad

  関連記事

Amazon Cognito User Poolsのデモをしてみました

AWS Summit 2016 Tokyoのアップデートおっかけ会をJAWS-U …

Amazon Rekognitionでイベント参加者の顔写真を解析して似ている人ランキングをその場で作る

2017/9/21に開催されたAWS Cloud Roadshow 2017 大 …

EC2にSystems MangerからCloudWatchエージェントをインストール

目次 CloudWatchエージェントIAMロールの作成EC2にSSMエージェン …

AWS EC2でAMI(Amazon Machine Image)を作成しておく

前回まででひとまずRedmineを構築するところまで出来たので、念のためスナップ …

TuneCoreの売上データCSVをS3に格納してAthenaのクエリをRe:dashのデータソースにして可視化する

先日参加しましたAWS Summit Tokyo 2017で、 [JapanTa …

EC2とRDSのMySQLを他のAWSアカウントへ移設する

他のAWSアカウントへシステムごと移設した場合の手順です。 構成はEC2とRDS …

MySQL WorkbenchからRDSに接続する

MySQL WorkbenchからAWS RDSのMySQLに接続するために、「 …

試したい事があるのでAWS でとりあえずAmazon Linuxのサーバを作る

目次 1年間の無料キャンペーン期間中に検証するとりあえずサーバを作ってみる 1年 …

T2.microからT3.nanoに変更(メモリエラーも対応)

このブログのEC2インスタンスをT2.micro 1インスタンスからT3.nan …

EC2インスタンスが到達不能になって復旧してMackerelで監視し始めた

きっとばりばり使っておられる方ならよくある事なんだろうけど、はじめて体験したので …