ヤマムギ

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認定資格試験テキスト AWS認定AIプラクティショナー」という本を書きました。

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

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

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

 - AWS , ,

  関連記事

JAWS-UG関西「AI で人を笑わせてみよう!ハンズオン」に参加しました

AI で人を笑わせてみよう!ハンズオン 灼熱の7月最終日にJAWS-UG関西のオ …

AWS Firewall Managerを設定して結果を確認

CloudFront対応のポリシーとして作成したかったので、Globalを選択し …

AWS Lambda(Python3.7)でPandocを実行する

昨日まで(AWS Batch) 昨日までは、Pandocを実行して、S3バケット …

AWS CloudFormationでAmazon DynamoDBテーブルを作ってアイテムを追加する

デモ用にDynamoDBテーブルを作って消して、ということをたまにするので、Cl …

AWS Systems Manager Session Managerでログを有効にする

AWS Systems Manager Session Managerでのコマン …

AWS Toolkit for Eclipseをセットアップする

AWSでそろそろ課金がされつつありますので、夜中はインスタンスを自動停止して朝自 …

Systems Manager デフォルトのホスト管理設定(Default Host Management Configuration)を確認しました

2023/2/17のアップデートAWS Systems Manager をアカウ …

DynamoDB Accelerator(DAX)のサンプルアプリケーション(Python)を実行

DynamoDBデベロッパーガイドのDynamoDB Accelerator(D …

EC2 プレイスメントグループを試してみました

やったことないのでやってみたやつです。 プレイスメントグループの作成 まず、EC …

VPN接続先のADで管理されているドメインにEC2 Windowsインスタンスから参加する

オンプレミスに見立てたオハイオリージョンにVyOSインスタンスを起動して東京リー …