ヤマムギ

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

  関連記事

CloudFormation StackSetsでOrganizations組織のアカウントに一気にIAMロールを作成した

Organizationsで管理している各アカウントにIAMロールを作成したい場 …

AWS Service CatalogポートフォリオをOrganizations組織で共有する

AWS Service Catalogチュートリアルで作成したポートフォリオのO …

IAMアイデンティティセンター(IIC)のList Assignment APIを確認しました

やりたいことは、IAMアイデンティティセンター(IIC)のユーザー名をキーにして …

Amazon S3アクセスポイント経由からアクション可能なポリシー

S3アクセスポイントを使うことで、複雑で長いバケットポリシーを避け、アクセスポイ …

RDSスナップショットをS3にエクスポートする新機能を試そうかと思った

やったこと RDSスナップショットをS3にエクスポートできる、という新機能が追加 …

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

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

AWS CloudHSMを起動してみました

なかなか触る機会のないサービス、CloudHSM。 起動してみました。 手順はユ …

S3オブジェクトロックを試しました

S3オブジェクトロックが必要になる要件に今のところ、出会ってないのでまだ設定した …

Amazon Linux2のジャンボフレーム

ユーザーガイドのEC2 インスタンスのネットワークの最大送信単位 (MTU)を試 …

Amazon Bedrock Conversational Builderを使用してAIエージェントを作成してみました

2024年10月16日に「Amazon Bedrock のエージェントが Con …