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は有効に使えると思いました。
最後までお読みいただきましてありがとうございました!
【PR】 「AWS認定試験対策 AWS クラウドプラクティショナー」という本を書きました。
【PR】 「AWSではじめるLinux入門ガイド」という本を書きました。
【PR】 「ポケットスタディ AWS認定 デベロッパーアソシエイト」という本を書きました。
【PR】 「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル」という本を書きました。

開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
Amazon CloudSearchにAWS Lambda(Python)からデータをアップロードする
このブログはゆるっとアドベントカレンダー Advent Calendar 201 …
-
-
Route 53 の加重ラウンドロビンルーティングでロードバランサー
Route 53の加重ラウンドロビンで両方1に設定してみました。 上図はイメージ …
-
-
AWS Toolkit for Eclipseをセットアップ(2021年版)
AWS Toolkit for Eclipseをセットアップするで6年前に書いて …
-
-
TuneCoreの売上データCSVをS3に格納してAthenaのクエリをRe:dashのデータソースにして可視化する
先日参加しましたAWS Summit Tokyo 2017で、 [JapanTa …
-
-
API Gateway 作成済REST APIの定義をSwaggerの形式でエクスポート
SAMで似たようなAPIを作りたくて、エクスポートしました。 Swaggerは、 …
-
-
Amazon Connectのパスワードどころかユーザー名も忘れたのでEmergency accessした
長い間放置していたAmazon Connect環境にアクセスしようとしたところ、 …
-
-
CloudFrontからのバーチャルホストなサイトのテストってどうしてます?
このブログの構成です。 AWSで構築しています。 4つのサイトを1つのEC2で配 …
-
-
T3.nanoで仮想メモリ割当をユーザーデータで実行する
T3.nanoはメモリがだいたい500MBです。 実行する処理によってはメモリエ …
-
-
ちょっとしたCLI作業にEC2起動テンプレート
CLIでちょっとした作業したいだけのときに、Cloud9を使うまでもないなあと思 …
-
-
kintoneでEveryoneに権限が設定されているアプリをAWS Lambdaで一括チェックする
こないだ、kintone Cafeでユーザーが自由に作成している環境だと、どんな …