ヤマムギ

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は有効に使えると思いました。


最後までお読みいただきましてありがとうございました!

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。

 - AWS , ,

ad

ad

  関連記事

Rocket.ChatにAWS Lambda(Python)から投稿する

Rocket.ChatにAPIで投稿するテスト(Postman)をやってみて、使 …

PyCharmにAWS Tool kitをインストールしてサンプルのLambda関数をデプロイして実行しました

この記事はJetBrainsIDE Advent Calendar 2018に参 …

JAWS FESTA 2017 Reverse X re:Birth

JAWS FESTA 2017 中四国 今年はブログタイトル「JAWS FEST …

「AWSではじめるLinux入門ガイド 」を執筆しました

2020年4月30日に、「AWSではじめるLinux入門ガイド」という本を発行い …

AWSアカウントの解約

アカウント作成メニュー確認のために作成したAWSアカウントを解約しました。 使っ …

Amazon S3オブエジェクトへのリクエストをCloudTrail, Athenaで識別

こちらCloudTrail を使用した Amazon S3 リクエストの識別に書 …

AWS Database Migration Service(DMS)チュートリアル

公式ユーザーガイドのAWS Database Migration Service …

AWSアカウントrootユーザーのメールアドレスを変更

昔、うっかり会社の個人メールアドレスで作ってしまったAWSアカウントがあるのでメ …

リザーブドインスタンスはじめました

このブログも2014年9月にはじめたので、もうすぐ3年。 1件~17件とばらつき …

SendGridのイベントをAPI Gateway -> Lambda(Python) -> DynamoDBに格納する

SendGridのメールイベントログはコンソールで確認出来るのは直近7日分で一括 …