Amazon EBSを複数のインスタンスにアタッチできますか?


138

現在、1つのmysqlサーバーとファイルサーバーにアクセスする複数のウェブサーバーを使用しています。クラウドへの移行を検討しているときに、これと同じ設定を使用してEBSを複数のマシンインスタンスに接続できますか、それとも別のソリューションですか?


与えられた答えはノーです。しかし、引用された理由は私を悩ませています。誰もが「同じハードドライブを複数のコンピューターにマウントするようなものです」と私は行きます。SCSIまたはFibreChannel SANを使用すると、常にそうすることができます。たとえば、同じ読み取り専用データに複数のサーバーを読み取り専用でマウントする場合などです。Oracleおよびその他の大きなRDBMは、複数のサーバーが同じ物理ストレージを使用するクラスターモードで実行するように設計されています。それははるかに速くなることができます。EBS / NFSは速度が遅く、オプションではありません。ただし、複数のEC2に接続できたとしても、IOPSには上限が設けられています。
Gunther Schadow

2020年2月の時点で、あなたは複数のEC2インスタンスにEBSの特定の種類を添付することができます- aws.amazon.com/blogs/aws/...
Koshur

回答:


135

更新(2015年4月):この使用例では、新しいAmazon Elastic File System(EFS)を検討する必要があります。これは、希望どおりに複数接続できるように設計されています。EFSとEBSの主な違いは、それらが異なる抽象化を提供することです。EFSはNFSv4プロトコルを公開しますが、EBSは生のブロックIOアクセスを提供します。

以下に、rawブロックデバイスを複数のマシンに安全にマウントできない理由についての私の元の説明を示します。


元の投稿(2011):

EBSボリュームを複数のインスタンスに接続できたとしても、それは_REALLY_BAD_IDEA_になります。Kekoaを引用すると、「これは、2台のコンピュータで同時にハードドライブを使用するようなものです」

なぜこれが悪い考えなのですか? ...ボリュームを複数のインスタンスに接続できないのは、EBSが「ブロックストレージ」の抽象化を提供し、顧客がext2 / ext3 / etcなどのファイルシステムを実行するためです。これらのファイルシステム(ext2 / 3、FAT、NTFSなど)のほとんどは、ブロックデバイスへの排他的アクセス権があることを前提として書かれています。同じファイルシステムにアクセスする2つのインスタンスは、ほぼ間違いなく涙とデータ破損で終わります。

つまり、複数のマシン間でブロックデバイスを共有するように設計されたクラスターファイルシステムを実行している場合にのみ、EBSボリュームの二重マウントが機能します。さらに、これでも十分ではありません。このシナリオについてEBSをテストし、他の共有ブロックデバイスソリューションと同じ一貫性の保証を提供することを確認する必要があります。つまり、ブロックはDom0カーネル、Xenレイヤーなどの中間の非共有レベルでキャッシュされません。およびDomUカーネル。さらに、複数のクライアント間でブロックを同期する場合のパフォーマンスに関する考慮事項があります。クラスタ化されたファイルシステムのほとんどは、ベストエフォートのコモディティイーサネットではなく、高速の専用SANで動作するように設計されています。とてもシンプルに聞こえますが、あなたが求めているのは非常に重要なことです。

または、データ共有シナリオがNFS、SMB / CIFS、SimpleDB、またはS3であるかどうかを確認します。これらのソリューションはすべて、共有ブロックデバイスサブシステムなしでファイルを共有することを目的とした上位層プロトコルを使用します。多くの場合、このようなソリューションは実際にはより効率的です。

あなたのケースでは、複数のWebフロントエンドからアクセスされる単一のMySqlインスタンス/ファイルサーバーを保持できます。そのファイルサーバーは、そのデータをEBSボリュームに保存できるため、毎晩のスナップショットバックアップを作成できます。ファイルサーバーを実行しているインスタンスが失われた場合、EBSボリュームをデタッチして新しいファイルサーバーインスタンスに再接続すると、数分でバックアップして実行できます。

「ファイルシステムとしてS3のようなものはありますか?」- はいといいえ。はい、「正常に機能するs3fsのようなサードパーティのソリューションがありますが、内部的には、読み取り/書き込みごとに比較的高価なWebサービス呼び出しを行う必要があります。共有ツールdirの場合、うまく機能します。HPCの世界で見られるようなクラスター化されたFSの使用については、チャンスではありません。より良くするには、NFSのようなバイナリ接続指向のプロトコルを提供する新しいサービスが必要です。このようなマルチマウントされたファイルシステムを妥当なパフォーマンスと動作で提供することは、EC2の優れた機能アドオンになります。私は長い間、Amazonがそのようなものを構築することを提唱してきました。


1
NFS(および同様のアプローチSMB)の問題は、1つのマシンがサーバーとして機能することです(ファイルシステムは物理的にマウントされます)。そのマシンがダウンすると、EBSボリューム(またはディスクもダウン)になります。ファイルシステムとしてS3のようなものはありますか?
シェキ

1
明確にするために-EBSボリュームがインスタンスに接続されていて、インスタンスが壊滅的に停止した場合、EBSボリュームは問題ありません。これにアクセスするには、ダウンしているインスタンスからデタッチして新しいインスタンスに再アタッチする必要があるという意味でのみ「ダウン」します。
Dave Dopson、2011

「...ほぼ確実に涙とデータ破壊で終わるでしょう。」クラシック。@DaveDopson
ビーチ

5
この答えを見た人は誰でも、AmazonがEFSをリリースしたばかりで、NFSを介して複数のインスタンスにマウントできる共有自動拡張ドライブを使用できることを知っています。
JoshStrange 2015

@JoshStrange-頭を上げてくれてありがとう。投稿を更新しました。
Dave Dopson、2015

78

アップデート(2020)可能になりました!

これは、同じアベイラビリティーゾーン内のAWS Nitroで実行されている最新のインスタンスタイプで可能になりました。いくつかの注意点がありますが、これは、EBSの速度が必要で、EFSが実行できない特定のユースケースに最適です。

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volumes-multi.html


元の投稿(2009)

いいえ、これは2台のコンピューターでハードドライブを使用するようなものです。

共有データが必要な場合は、すべてのインスタンスがアクセスできるサーバーをセットアップできます。すべてのインスタンスにシンプルなストレージ領域が必要な場合は、AmazonのS3ストレージサービスを使用して、分散されたスケーラブルなデータを保存できます。

クラウドに移行すると、まったく同じ設定を使用できますが、ファイルサーバーをS3に置き換えるか、すべてのインスタンスをファイルサーバーに接続することができます。

多くのオプションがありますが、インスタンス間でハードドライブを共有することはおそらく最良のオプションではありません。


14

いいえ、EBSドキュメントによると、「ボリュームは一度に1つのインスタンスにしか接続できません」。

現在、共有ストレージをどのように使用していますか?それがファイルサーバーからファイルを提供するためだけのものである場合、Webサーバーにそれらのファイルを提供させるのではなく、特定の要求をファイルサーバー上のプロセスにプロキシできるようにシステムを設定することを検討しましたか?


2
ここにその引用のリンクがあります: aws.amazon.com/articles/1667。記事の下部にあるFAQを参照してください。なぜ添付ファイルの配列aws ec2 describe-volumes返すのか不思議に思います。
Mark Berry

4

できませんが、EBSを複製して別のインスタンスにアタッチすることはできます。

これは、固定データセットや「実際の」データのテストに役立ちますが、単一のブロックストアで複数のインスタンスを操作することはできません


4

MySQLサーバーおよびファイルサーバーにアクセスする複数のWebサーバーは、AWSでは正常です。上記のアーキテクチャで従うべきベストプラクティスは次のとおりです。

ポイント1)EC2上のMySQLは、AWSの非同期/半同期モードでマスター/スレーブとして設定できます。高性能DBには、RAID 0のEBS-OPT + PIOPSが推奨されます

ポイント2)あるいは、Amazon RDS +マルチAZモードを使用できます。読み取りスケーリングのために、複数のRDSリードレプリカをMySQL RDSに接続できます。

ポイント3)EBSボリュームを複数のEC2に同時に接続することはできません。EBSを使用して、Amazon EC2上のGlusterFSに基づくファイルサーバーを作成できます。AWSインフラストラクチャでは、複数のWebサーバーが単一のGlusterFSと同時に通信できます。

ポイント4)アプリケーションをファイルストアとしてS3と統合できる場合、アーキテクチャにもたらす安定性のため、この方法が推奨されます。アプリケーションからS3fuseなどのツールを使用してS3にアクセスすることもできます。



2

ITの世界には、クラスター化ファイルシステム、Redhat GFS、Oracle OCFS2、Veritas CFSと呼ばれるものがあります...


ddopsonの答えにコメントをチェック
Shekiの

1
@sheki ddopsonの回答に対するコメントは、クラスター化されたファイルシステムとはまったく無関係です。クラスター化されたファイルシステムは、複数のサーバーによって同時にマウントされるように設計されています。clusteredfsの重要な点は、単一障害点を回避することです。
Ryan

2

簡単に言えば、断定的な「いいえ」です。他の人はそれを上に言った。

「はい」と答えた人は質問には答えませんでしたが、別の質問に答えました。EFSが単なるNFSサービスである場合、最初に述べたような質問への回答ではありません。また、EFSが「すべてのゾーンにロールアウト」されているかどうかは関係ありません。独自のNFSインスタンスを作成して、複数のサーバーにNFSをマウントさせることができるからです。それは新しいことではなく、1992年にすでにそれを行っています。SMBとsshfs、これらはすべて、ドライブをリモートファイルシステムとしてマウントする方法にすぎません。

「なぜそんなことをしたいのか」「結局涙が出る」と言った人は間違っている。私たちは何十年もの間、複数のディスクを複数のサーバーにマウントしてきました。SAN(ストレージエリアネットワーク)を使用したことがある場合、通常はFibreChannel SANを介して同じデバイスを複数のノードに接続する機能は完全に正常です。そのため、仮想化/クラウドサーバーがユビキタスになる10年前にサーバーを実行したことがある人は、それをある程度知っています。

すぐに、2つのシステムがまったく同じボリュームを読み書きできるクラスター化ファイルシステムが登場しました。これはVAXとAlpha VMSの歴史の始まりから始まったと思います。クラスター化されたファイルシステムは、分散相互排除スキームを使用して、ブロックを直接操作できるようにします。

同じディスクを複数のノードにマウントする利点は、速度と単一障害点の減少です。

現在、クラスター化されたファイルシステムは、「コンシューマー」ホスティングビジネスでそれほど普及していません。そして、それらは複雑であり、いくつかの落とし穴があります。ただし、複数の計算ノードに接続されたディスクを利用するために、クラスター化されたファイルシステムは必要ありません。読み取り専用ドライブが必要な場合はどうなりますか?クラスター化されたファイルシステムも必要ありません。読み取り専用(ro)と同じ物理デバイスを/ etc / fstabに入れるだけです。次に、2台または10台のEC2サーバーにマウントすると、それらすべてがそのデバイスから直接読み取ることができます。

クラウドサーバーの世界では、急速にスケーリングするファームを構築する際に、これの明らかな使用例があります。メインシステムディスクをすべて準備し、各サーバーに非常に小さなブートおよび構成ディスクを使用することができます。すべてを同じブートディスクからブートすることもできます。/の再マウントの直前に、読み取り/書き込みモードで、3つのレイヤーのUnion-FSを挿入できます。

  1. メインの読み取り専用システムディスク、ブート、カーネル、およびユーザーランドインストール
  2. 個々のサーバーに固有のいくつかのファイル(主に/ etc内)のみを含む構成ファイルシステム。このディスクは、新しいインスタンスを起動する準備をするために、別のサーバーによって書き出すことができます。ここでのサンプルファイルは/ etc / hostnameであり、ノードごとに異なるままにする必要がある構成ファイルはごくわずかです。
  3. まったく必要ない書き込み可能なディスクは、メモリファイルシステムとしての/ tmpだけです。

ですから、はい、その質問は非常に理にかなっており、残念ながら答えは(まだ)「いいえ」です。また、NFSはシステムディスクからのすべての読み取りアクティビティにペナルティを課すため、そのユースケースの優れた代替品にはなりません。ただし、NFSシステムディスクからのネットワークブートは、上記のユースケースを実装する唯一の方法です。残念ながら、ネットワークブートエージェントとNFSのセットアップは、同じ物理ブロックデバイスにアクセスするよりもはるかにトリッキーです。

PS:これの短いバージョンをコメントとして提出したかったのですが、51クレジットポイントの愚かなしきい値のため、私はできません。そのため、同じ本質的な「いいえ」で回答を書く必要がありますが、これがなぜかという点を含める必要があります。当然の答えを受けていない関連質問。

PPS:StackExchangeで誰かがiSCSIについて言及しているのを見つけました。iSCSIは多少NFSに似ていますが、論理的にはFibreChannel SANに似ています。物理ブロックデバイスにアクセス(および共有)します。起動ディスクの共有が簡単になるので、厄介なbootdネットワーク起動を設定する必要はありません。しかし、AWSでは、ネットワークブートも利用できません。


1

以前はEBSで単一のEC2インスタンスを特定のボリュームに接続することしかできませんでしたが、少なくともio1ボリュームでは、マルチ接続が可能になりました。詳細については、このAWSブログ投稿を参照してください。


0

ボリュームを含む1つのインスタンスを作成し、他のインスタンスのそのボリュームにsshfsを作成しないのはなぜですか?


-3

AWSの複数のサーバーで1つのドライブを完全に使用できます。sshfsを使用して外部ドライブをマウントし、EC2の複数のサーバーと共有します。

単一のドライブを複数のサーバーに接続する必要があった理由は、ローカルにそれらをプルする前にすべてのバックアップを配置する単一の場所を持っているためです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.