CDP:NFS Replicaパターン
提供:AWS-CloudDesignPattern
共有コンテンツの複製
目次 |
解決したい課題
NFSを用いて複数サーバー間でファイル共有している場合、共有するサーバー数が増えアクセス頻度が高くなると、NFS部分のパフォーマンス劣化が無視できなくなる。
クラウドでの解決/パターンの説明
このパターンは、共有ファイルを保管するNFSのパフォーマンス劣化に対し、特に参照性能を改善する。 各サーバーに仮想ディスクを個別に用意しておき、NFSサーバーの共有ファイルをコピーしておく。そうすれば、各サーバーにとっては、仮想ディスクをNFSの参照専用レプリカとして利用できる。
実装
各EC2インスタンスの仮想ディスクであるEBSに、NFSサーバーのファイルをコピーしておく。各EC2インスタンスではEBSのファイルを読み取ることで、NFSサーバーにアクセスするよりも高いパフォーマンスで参照できる。
- EC2上にNFSサーバーを構築し、共有ファイルを配置する。
- Auto Scalingで起動するEC2(Webサーバー)は、起動時にまずNFSサーバーをマウントし、さらにNFSサーバーの内容をEBSにコピーする。
- 各EC2上のアプリケーションはEBSを参照先に設定しておく。
構造
利点
- NFSサーバー上の共有ファイルを更新すれば、それ以降に起動したEC2ではそのファイルが使われることになる。
- 各EC2のEBSに共有ファイルが存在するので、NFSサーバーにアクセスする必要がなく、パフォーマンスが問題になりにくい。
- 例えばNFSサーバーがダウンしたとしても、各EBSにコンテンツがあるのでSPOFにならない。
注意点
- 共有ファイルを更新する際、NFSサーバー上のファイルを更新するだけでは各EC2に反映されない。rsyncなどを用いて同期をさせる必要がある。
その他
- ローカルディスクとしてEBSを用いる代わりに、インスタンスストレージ(エフェメラルディスク)と呼ばれるEC2のローカルディスクを利用すると、パフォーマンスを向上させコストを抑えることも可能である。
- NFSサーバとして、Amazon Elastic File Systemを利用することも可能