サーバーを冗長化してEFSにファイル作成をすると、稀にファイルが見つからない

WEBサーバーでEC2を複数構成(仮にサーバーAとB)にして、EC2(A)でEFSにファイルを作成すると、EC2(B)からそのファイルを参照できないということが稀に発生していました。

ファイルを新規で作成した直後に起こることが多いとの報告がありました。

AWS認定試験問題のような記載になってしまった。

マネジメントコンソールからEFSで設定できる項目はほぼ無いので、「EFSの設定に問題は無い!!」と思っていましたが、マウント時の設定に問題がありました。。

 

マウント時及びfstabファイルに「noac」オプションを追加すれば、OKです。

 

原因

公式サイトにEFSでは書き込みの遅延が発生すると記載がありました。

「カスタム NFS クライアント設定があり、Amazon EC2 インスタンスファイルシステムで別の Amazon EC2 インスタンスから実行された書き込み操作を参照するのに最大 3 秒かかります。」

Amazon EFS のトラブルシューティング: 一般的な問題 - Amazon Elastic File System

 

いろいろテストも終わった後にEFSを急遽導入することになって、調査不足でした。

やむなし。。

 

対応

マウント方法を以下に変更

mount -t nfs4 -o nfsvers=4.1,noac,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport <efs名>.efs.<リージョン名>.amazonaws.com:/ <マウントポイント>

<efs名>:fs-<固有のID>

<リージョン名>:ap-northeast-1 ※東京リージョンの場合

 

AWSのマウントオプションの推奨値も公式ページを参考に設定

マウントに関するその他の考慮事項 - Amazon Elastic File System

 

/etc/fstab を以下に変更(今回追加した分だけ)

<efs名>.efs.<リージョン名>.amazonaws.com:/ /dldata nfs4 nfsvers=4.1,noac,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,_netdev,noresvport 0 0

この辺の細かい設定はあまりしたことなかったですが、マウントとfstabは同じオプション設定でOKということを知りました。

 

気になっていること

今回の対応で問題は解決されました。

が、いろいろ調べていくと「noac」オプションを付けることで問題もありそうです。

キャッシュしなくなったので、なんとなく性能は悪くなるような気はしていました。

 

問題1:パフォーマンスに影響あり

AWSのフォーラムにありました(参照するにはログイン必要かも?)

https://forums.aws.amazon.com/thread.jspa?threadID=245354

 

問題2:「lookupcache=none」オプションの方が良さそう

NFSのマウントオプションについて - Dell Community

 

問題は解決したけど、新たな問題が出そうな気もしています。

落ち着いたら再調査するか。。