Amazon EFS を AWS 上に構築して、DR 運用してみた

Amazon EFS を構築し、レプリケーションをかけ DR 対策を行う案件に携わることになりました。
私自身、このサービスは知ってはいましたが、触れることがなかったので、お勉強がてら構築してみて、動作検証してみたいと思います。
目次
AWS のファイルストレージ「Amazon EFS」の概要
Amazon Elastic File System( EFS )は、 AWS のフルマネージド型の分散ファイルストレージで、 Amazon EC2 インスタンスや Lambda 関数等から NFSv4.0 、 4.1 プロトコルを通じて利用することができます。
・ストレージの種類
ストレージの種類には、標準ストレージクラスと 1 ゾーンストレージクラスがあります。
標準ストレージクラスの耐久製はイレブンナインで、可用性はフォーナイン、 1 ゾーンストレージクラスの耐久製はイレブンナインで、可用性はスリーナインです。
当然ながら、 AZ の冗長性がないので、 1 ゾーンの可用性は少し落ちます。
ただ、 1 ゾーンストレージクラスは、標準ストレージクラスの約半分くらいの価格で利用できるので、そこまで可用性を求めるシステムでなければ十分な可用性だと思います。
・ストレージ容量
ストレージの容量は自動的に拡張、縮小してくれます。これは便利ですね。
オンプレだと、将来必要な分を計算するだとか、手動で拡張、縮小をしないといけませんが流石フルマネージドだと思います。
ただし、 1 ファイルの最大値は 47.9 TiB だそうです。
・ライフサイクル
ライフサイクル管理ができます。
アクセス頻度が低いファイルを IA ストレージクラスに移すことで、コストの圧縮が見込めます。
・スループット
スループットは、バースト、伸縮自在、プロビジョニングから選択できます。
デフォルトはバーストとのことですが、 EFS の作成画面では、伸縮自在がデフォルトでした。
バーストは、 1 日最大 12 時間バースト性能を提供します。
伸縮自在は、ピークスループットの要件が不明なアプリケーションに対して推奨されます。
一方で、プロビジョニングは、ピークスループット要件が明確なアプリケーションに対して推奨されます。
・EFS レプリケーション
EFS をレプリケーションできます。今案件での DR のご要件をこの機能で実現させます。
ほとんどの変更は 1 分以内にレプリケートされるとのことですが、 RPO は 15 分です。
従いまして、この 15 分の間のデータについては、運用回避として別途手段を講じる必要があります。
・バックアップ
AWSBackup と連携できます。
ファイルシステム、フォルダ、ファイル単位でリストアが可能です。
・暗号化
保管中のデータと、転送中のデータ両方に対し暗号化が行われます。
暗号化したい場合に求められる機能は有していますね。
概要は以上です。
ストレージの容量を気にしなくていいというところが、私には非常に魅力的に映りました。クラウドにデータを置けないという制約を抱えてる会社さんは多いと思いますが、要件を整理し、クラウドに置いていいデータだけでもこういったサービスをご活用いただければ、自社ストレージの容量にもゆとりができていいんじゃないでしょうか。
なお、上記情報は、こちら や、こちら のサイトからの引用です。
それでは、環境を作っていきましょう。
今回、AWS 上に構築する Amazon EFS を使った構成

Amazon EFS を使って DR 環境の構築
AWS コンソール画面を開き、検索バー内で「 EFS 」と入力します。

検索結果から、EFS をクリックします。

EFS トップに画面遷移します。
「ファイルシステムの作成」をクリックします。

ファイルシステムの作成画面が表示されます。
「カスタマイズ」をクリックします。

ファイルシステムの設定
今回は下記の構成で構築します。
名前:任意
ストレージクラス:標準
自動バックアップ:チェックオフ
ライフサイクル管理:
IA へ移行:なし / IA から移行:なし
暗号化:チェックオフ

パフォーマンス設定
スループットモード:拡張、伸縮自在(推奨)
パフォーマンスモード:汎用

ネットワークアクセス
EFS のマウントターゲットを作成する VPC を選択し、 AZ 、サブネット、 SG を指定します。


ファイルシステムポリシー
ファイルシステムへアクセスポリシーを設定したい場合、ここで設定可能です。
今回は、特に何も設定しません。

確認画面
確認画面が表示されます。
設定内容に誤りが無いことを確認し、「作成」をクリックします。



EFS の作成が完了しました。

続いて、レプリケーションを作成します。
作成した EFS の名前をクリックします。

EFS のプロパティ画面に遷移します。
「レプリケーション」タブをクリックします。

レプリケーションタブ内、「レプリケーションを作成」をクリックします。

レプリケーションを作成画面が表示されます。
送信先の AWS リージョンのプルダウンメニューを表示します。

表示されたプルダウンメニュー一覧から、レプリケーション先のリージョンをクリックします。
今回は、大阪リージョンを選択します。

ストレージクラスと暗号化を設定し、「レプリケーションを作成」をクリックします。
今回は、ストレージクラスを標準、暗号化なしで構築します。

EFS のプロパティ画面に戻ります。
しばらくするとレプリケーションが作成された旨、メッセージが表示されます。
以上で、 EFS 作成〜レプリケーションまでの設定が完了です。

Amazon EFS を使った DR 環境の動作検証
まずはメイン EFS が存在する東京リージョン側で、 EC2 を構築し EFS をマウントします。
マウントコマンドは、下記手順で確認できます。
EFS のプロパティ画面右上、アタッチをクリックします。

コマンドが表示されます。
EFS マウントヘルパーコマンドで、 EFS をマウントする場合は、「 amazon-efs-utils 」パッケージが必要です。初期インストールされていないので、こちらをご利用される場合はインストールしてください。
今回は、 NFS クライアントコマンドで、 EFS をマウントします。

EFS (東京)をマウントする EC2 インスタンスにログインします。

EFS をマウントするディレクトリを作成します。
mkdir /efs

EFS をマウントします。
sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport fs-0ff4c09ef69c4468c.efs.ap-northeast-1.amazonaws.com:/ /efs
※ アタッチ画面で表示されるコマンドには、マウント先のディレクトリまでは記載されていないので、環境にあわせて任意にコマンドを修正してください。

EFS がマウントされました。

適当にファイルを作成し、レプリケーションされるか確認してみます。

レプリケーションされたかどうかを、レプリケーション先 EFS をマウントして確認してみます。
今回は大阪リージョンにレプリケーションしたので、 VPC やサブネット、 EC2 等の諸々のリソースを大阪リージョンに作成します。
また、レプリケーション先 EFS にはマウントターゲットが作成されていないので、こちらも作成します。
メイン EFS のプロパティ画面から、「レプリケーション」タブをクリックします。

レプリケーションタブ内のレプリケーション先ファイルシステム ID をクリックします。

レプリケーション先 EFS のプロパティ画面が表示されます。
「ネットワークタブ」をクリックします。

ネットワークタブ内、「マウントターゲットを作成」をクリックします。

マウントターゲット作成画面が表示されます。
EFS のマウントターゲットを作成するVPCを選択し、 AZ 、サブネット、 SG を指定します。


マウントターゲットの作成が完了しました。

レプリケーション EFS が存在する大阪リージョン側で、 EC2 を構築し、 EFS をマウントします。

EFS をマウントするディレクトリを作成します。

EFS をマウントします。
sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport fs-091fcb46af6f41588.efs.ap-northeast-3.amazonaws.com:/ /efs-rep

EFS がマウントされました。

ファイルがレプリケートされているか確認します。
されていますね。

レプリケーション側は読み取り専用のため、ファイルは作成できません。

それでは、レプリケーション先 EFS を DR 先として切り替えてみます。
レプリケーション構成を削除することで、読み取り専用だったレプリケーション先 EFS に書き込みができるようになります。
EFS のプロパティ画面から、「レプリケーション」タブに遷移し、「レプリケーションを削除」をクリックします。

レプリケーションを削除する確認画面が表示されます。
テキストフィールドに、削除と入力し、「レプリケーションを削除」をクリックします。

レプリケーションの削除が開始されます。

10 分程で、レプリケーション構成が解除されました。

レプリケーションされたファイルは残っており、新規でファイルの作成が行えました。

Amazon EFS を AWS 上に構築して、DR 運用してみた(まとめ)
いかがでしたでしょうか。オンプレ出身の私からすると、数クリックで簡単に環境を構築できオンプレで発生する面倒な運用はすべてお任せできるのはとても魅力的でした。
本記事についてご質問等ございましたら、お気軽にお問い合わせください。

元記事発行日: 2024年03月25日、最終更新日: 2024年03月12日