S3がオフラインになったときにサイトをオンラインに保つための良い戦略は何ですか?
S3 US East 1がオフラインになった場合、サイト全体がオフラインになるのを防ぐために、アプリを構成/構造化する方法を教えてください。
このような状況で多様化するための最善の戦略は何ですか?
S3がオフラインになったときにサイトをオンラインに保つための良い戦略は何ですか?
S3 US East 1がオフラインになった場合、サイト全体がオフラインになるのを防ぐために、アプリを構成/構造化する方法を教えてください。
このような状況で多様化するための最善の戦略は何ですか?
回答:
2015年3月、Amazon AWS は、リージョン間のS3レプリケーションをサポートすると発表しました。S3の特定のリージョンがオフラインになると、別のリージョンのミラーからファイルを提供できます。
ソース:https : //aws.amazon.com/blogs/aws/new-cross-region-replication-for-amazon-s3/
別の地域に切り替えることでインフラストラクチャをオンラインに保つ方法は複雑ですが、S3は比較的小さくシンプルなコンポーネントです。NetflixにはChaos Gorillaでの経験に関するすばらしい記事があります。
これは、遅延の増加など、サービスの低下にも適用されます。依存するサービスが完全にオフラインになっているときだけではありません。Netflixにもこれに関する記事があります:Chaos Engineering Upgraded。
あなたが求めているのは、基本的に、高可用性です。システムの可用性を高めるには、次の3つが必要です。
S3の場合、Evgenyが指摘したように、ポイント#1はS3クロスリージョンレプリケーションによってアドレス指定されます。
ただし、複製は瞬時ではないため、アプリケーションの複製を認識させるかどうかを確認する必要があります。停止が発生した場合、ソースバケットに書き込まれたものがまだ宛先バケットに到達していない(複製されていない)可能性があります。アプリケーションがそのようなシナリオをどのように処理するかを考える必要があります。それは、データの種類、データの処理内容、および(潜在的に)エンドユーザーまたは管理者の期待に大きく依存します。
S3の場合、これは、停電の場合に、アプリケーションがバケットAからの読み書きを停止し、代わりにバケットBを使用することを意味します。
私が知る限り、これを達成する方法は今のところあなた次第です。他の一部のAWSサービスは完全に透過的なフェイルオーバーを提供しますが、現時点ではS3でそのようなことを認識していません。
これを実現するにはさまざまな方法があります。1つの例は、適切なバケットにトラフィックをルーティングするプロキシを使用することです。停止中は、プロキシを更新/変更して、停止の影響を受けないバケットにトラフィックをルーティングします。もう1つの例は、アプリケーション構成を動的にし、キーと値のストアに格納することです。アプリケーションが更新されたプロパティのKVストアを十分に頻繁に読み取る場合、読み取り元と書き込み先を切り替えることができます(たとえば、Spring Cloudは "EnvironmentChange"リスナーをサポートしています)。
まあ、それは簡単だと思う。単に書き込みと読み取りのループを設定し、何かが正しくないとすぐに警告します:)