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ホスト名を有効にしておきます。
これをしておかないと、マウントするときに以下のエラーになります。
1 2 |
mount.nfs4: Failed to resolve server (EFSのDNS): Name or service not known |
EC2からマウント
Amazon Linux 2を起動してSSHでログインします。
1 2 3 4 5 |
$ sudo yum install -y amazon-efs-utils $ sudo mkdir /var/efs $ sudo chown apach:apache /var/efs $ sudo vim /etc/fstab |
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 ファイルシステムの自動マウントをご参照ください。
マウントしてデータを保存してみます。
1 2 |
$ sudo mount -a -t efs defaults |
問題なさそうであれば、EC2からAMIを作成して新しいインスタンスを起動します。
ユーザーデータに以下を記述しておきます。
1 2 3 |
#!/bin/bash mount -a -t efs defaults |
新たに起動したインスタンスからもファイルを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入門ガイド」という本を書きました。


開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
AWS Toolkit for Eclipseで「Error Message: Unable to find a region via the region provider chain. Must provide an explicit region in the builder or setup environment to supply a region.」
AWS Toolkit for Eclipseをセットアップ(2021年版)の環 …
-
-
AWS Organizationsからメンバーアカウントを直接「閉じる」ことができるようになりました
これまでは、メンバーアカウントはOrganizations組織から「除外」して独 …
-
-
CodeDeployでECR、ECSにデプロイするパイプラインのチュートリアル
チュートリアル: Amazon ECR ソースと、ECS と CodeDeplo …
-
-
S3バケットポリシーで特定のVPCエンドポイント以外からのリクエストを拒否しつつメンテナンスはしたい
特定のVPCで実行されているEC2のアプリケーションからのリクエストだけを許可し …
-
-
AWS Organizations SCPで許可ポリシーの設定をし継承の関係を確認する
ユーザーガイドのサービスコントロールポリシーの例にはDeny(拒否)ばっかりでA …
-
-
Amazon Location Service入門ワークショップ-ジオコーディング
ジオコーディングにより住所を緯度経度に変換したり、逆に緯度経度から住所を求めたり …
-
-
Amazon EC2 Auto ScalingのVPCは変更できる
EC2 Auto ScalingのVPCは変更できたっけ??と思いまして試しまし …
-
-
AWS Application Discovery Serviceのエージェントを実行
本来はオンプレミスのサーバーにエージェントをインストールして、自動でアプリケーシ …
-
-
Azure AD SSOからAWS SSOに統合するための提供情報
Azure AD SSO担当者に送る情報をこちらの記事を見て確認しました。 チュ …
-
-
ブログのアーキテクチャをコストベースで見直しました
当ブログはAWSで構築しています。 アーキテクチャをコストを最重視して見直しまし …