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認定資格試験テキスト AWS認定AIプラクティショナー」という本を書きました。
「AWS教科書 AWS認定デベロッパーアソシエイト テキスト&問題集 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
関連記事
-
-
Amazon SNSサブスクリプションフィルターを設定してPython(boto3)からPublish
上記のような構成でRocketChatを使うとき使わないときがあります。 都度都 …
-
-
Amazon WorkSpaces Web Accessを有効化する
仕事がら、Amazon WorkSpacesをディレクトリも含めて一時的にセット …
-
-
Amazon Linux2(EC2)にEC-CUBE 4をインストール
こちらのHOMEお知らせ・コラムAmazon Linux2にEC-CUBE4.0 …
-
-
Amazon EMR 「Hadoop を使用してビッグデータを分析」チュートリアルをやってみました
AWS認定データアナリティクス受験準備の一環で、Amazon EMRのチュートリ …
-
-
AWS SSOのIDソースをAD Connectorにしました
オンプレミス想定のActive DirectoryにVPN接続して、AD Con …
-
-
AWS Transit Gateway Network ManagerにTransit Gatewayを登録してルートアナライザーで確認
グローバルネットワークの作成 VPC左ペインのメニュー Transit Gate …
-
-
AWSのサービス数を数えてみました(2020/5/23)
何をもってサービスという単位にするかというのはあるかもしれませんが、とりあえず情 …
-
-
AWSアカウントルートユーザーのMFAでYubicoセキュリティキーを設定した
先日Yubico セキュリティキーを購入して、USBにささなければならないのがな …
-
-
EC2インスタンスが到達不能になって復旧してMackerelで監視し始めた
きっとばりばり使っておられる方ならよくある事なんだろうけど、はじめて体験したので …
-
-
RDS自動バックアップの自動クロスリージョンコピー
このブログのRDS for MySQLはAWS Backupで大阪リージョンから …





