web-dev-qa-db-ja.com

EFSの代替としてのEC2インスタンス間のNFSマウント

「フルフレームワーク」デプロイメントのAWSで実行するようにアプリケーションを構成しています。この展開の1つの側面では、各サーバーが共通の保管場所を確認できる必要があります。彼らはWebDAVサーバーの使用を推奨していますが、ある種の共有マウントドライブを使用することをお勧めします。

EFSはここでの完璧なソリューションです...しかし、私の地域では利用できません。

あるいは、NFSマウントをセットアップすることを考えました。 EFSと同様に機能するようにNFSをEBSボリュームにマウントすることは可能ですか?そうすることの利点/欠点?

1
jmkmay

私はS3fsの推奨に注意します。 S3はファイルシステムとして設計されておらず、アプリケーションがそれを想定している場合、いくつかの制限があります。 S3は最終的には整合性があります。つまり、更新がタイムリーに反映される場合と反映されない場合があります。 S3には部分的な変更の概念がないため、例としてログファイルを使用すると、追加またはその他の方法で変更する場合、変更のたびにファイル全体が再アップロードされます。これはコストがかかる可能性があります。 S3FSはローカルキャッシュを利用して過度の転送を回避しようとします。これにより、そのノードで何かが発生した場合に、潜在的な不整合がさらに発生します。

EC2インスタンスでNFSを設定するのは簡単ですが、設計で単一障害点(SPOF)を作成しています(インスタンスまたはEBSがなくなると、アプリケーションに影響します)。また、他のインスタンスからNFSへのクロスAZトラフィックには、帯域幅の料金が発生します。

エンタープライズグレードのNFSを探していてEFSを使用できない場合は、Marketplaceの製品(aws.Amazon.com/marketplace)がありますが、オープンソースに移行して、複数のEC2インスタンスでNFSとしてマウントされたGlusterFSを使用して、SPOFを回避したり、 AZ内にトラフィックを維持します: https://docs.gluster.org/en/latest/Install-Guide/Setup_aws/ (ただし、Gluster自体が管理する獣になる場合があります)

2
Aaron Dodd

いくつかのオプションがありますが、何が最適かは要件によって異なりますが、1つのオプションを他のオプションよりも推奨するための十分な詳細がありません。私はおそらくすべてのオプションをカバーしていません。

NFSサーバー

EC2インスタンスで NFSサーバーをセットアップ できます。これはEBSボリュームを使用し、NFSを介して共有します。これを行うためのオンラインのチュートリアルがたくさんあります( onetwo )。

S3をネイティブで使用

要件によっては、S3をネイティブで使用したり、S3 APIを呼び出したり、cron経由で aws s3 sync を使用したりすることもできます。

RSync

あなたはマスターサーバーからのrsyncを考えることができます、少しのt2.nanoはおそらくその種のもののために十分でしょう。

S3FS

別のオプションは S3FS を使用することです。これにより、S3バケットはファイルシステムのように見えます。 S3 Endpoint を使用して、データが公共のインターネットを経由しないようにすることができます。

これを行う前に、信頼性といくつかの注意深いテストについて学ぶために、いくつかの読書をしたいと思うでしょう。私の理解では、S3バケットがEC2インスタンスと同じリージョンにある場合は、トラフィック料金を支払いませんが、間違っている可能性があり、これはいつでも変更される可能性があります。 S3料金ページ は、「S3バケット間またはS3から同じリージョン内のサービスへの転送は無料です」と述べています-EC2はサービスとしてカウントされていると思います。

私が読んだ情報は、これはかなり信頼できるオプションである可能性が高いことを示唆していますが、S3FSリリースを慎重にテストする必要があります。

1
Tim

NetAppのCVO/CVSを試すことができます https://cloud.netapp.com/cloud-volumes-service-for-aws CIFSとNFSの両方を提供します

1
Guy L