データベース
 Computer >> コンピューター >  >> プログラミング >> データベース

AmazonAuroraHA戦略を理解する

これを読んでいるなら、おそらくAmazonAuroraについて聞いたことがあるでしょう。ご存知のように、Amazon AuroraはAWSがRDSサービススイートの一部として提供するPaaSサービスであり、MySQLとPostgresの2つのフレーバーで提供される、完全に管理されたリレーショナルデータベース管理システム(RDBMS)を提供し、両方とのワイヤー互換性を維持します。しかし、これは高可用性戦略とオプションにどのように影響しますか?

AmazonAuroraがAmazonRDS上のMySQLまたはPostgreSQLとどのように違うのか疑問に思われるかもしれません。これらも完全に管理されたRDBMSサービスですよね?はい。ただし、これらは基本的に、EC2インスタンスのフリートで実行され、AWSによって管理される標準のオープンソース実装です。 Auroraとの主な違いは、AWSがストレージエンジンをデータベースエンジンから分離したことです。 AWSは、懸念の分離の原則をオープンソースデータベースに適用しました。

関心の分離

通常、RDBMSは一般に利用可能なハードウェアで実行する必要があります。つまり、実装は、OSとハードウェアによって課せられた制限内で機能して、DMLおよびDDL処理、ACID準拠のトランザクション、レプリケーション、高可用性(HA)、およびフォールトトレランス。ただし、実装が一般に利用可能なハードウェアで実行する必要がなく、データベース用に特別に設計された環境でのみ実行する必要がある場合は、さまざまな責任をレイヤーに分割して、データベースエンジンとストレージエンジンを集中させて専門化することができます。その結果、高い可用性とパフォーマンスを大幅に向上させることができます。MySQLの最大5倍、標準のPostgreSQLの最大3倍のパフォーマンスです。

わかりました。高速ですが、専用のデータベースとストレージエンジンがHAにどのように役立つのでしょうか。これがHAの達成に役立ついくつかの方法があります。ただし、その前に、Auroraストレージエンジンがどのように機能するかを簡単に見て、HAがこの分離からどのように派生するかを理解するのに役立てましょう。

データがAuroraストレージエンジンに書き込まれるとき、エンジンはデータが一貫して、正しく、そして永続的に書き込まれることを保証します。データは、3つのアベイラビリティーゾーンのそれぞれの2つの場所、合計6つの異なる場所に書き込まれます。ストレージエンジンは、すべてが正しく行われるようにするという複雑さを処理します。少し単純化しすぎているかもしれませんが、基本的にデータベースエンジンは「ファイアアンドフォーゲット」できるようになり、データが書き込まれたかどうか、トランザクションログ、回復が必要になる可能性などについて心配する必要がなくなりました。

データベースエンジンからストレージの問題を取り除くことで、多くのHA戦略が利用可能になります。

レプリカを読み取る

リードレプリカの概念はAuroraよりもずっと前からありますが、オープンソースソリューションの実装には、ログ配布またはクエリの再生が含まれます。 Auroraを使用すると、ReadReplicasはマスターとまったく同じストレージに読み取り専用でアクセスできます。これは、データが書き込まれてからリードレプリカに表示されるまでのレプリケーションの待ち時間が非常に短いことを意味します(このシナリオでは、レプリケーションの遅延は誤った名称になります)。複数のリードレプリカが必要な場合、すべてのリードレプリカは同じデータを参照し、標準のMySQLおよびPostgreSQLの実装に見られるマスターにかかるオーバーヘッドと複雑さを取り除きます。これらの機能が組み合わされて、マスターに障害が発生した場合にリードレプリカがすぐに引き継ぐことができます。さらに、AWSは、プロビジョニングされた容量を満たすために、障害が発生したインスタンスを新しいインスタンスに置き換え、新しいマスターを指すようにDNSを更新します。

これは、読み取りと書き込みの比率が高いアプリケーションに最適なソリューションです。ただし、プライマリインスタンスは、書き込み負荷全体を処理するのに十分な大きさである必要があることに注意してください。また、書き込みHAの場合、マスターと同じサイズのReadレプリカを少なくとも1つプロビジョニングする必要があります。次に、この読み取りレプリカをプライマリインスタンスにプロモートする優先インスタンスとして設定します。障害が発生した場合でも、読み取り容量と書き込み容量の両方で高可用性を維持できます。

自動スケーリング

自動スケーリングは、使用可能なサーバーのセットから水平方向にスケールアウト(インスタンスを追加)またはスケールイン(インスタンスを削除)する機能です。 EC2インスタンスの自動スケーリングについて聞いたことがあるかもしれませんが、Aurora Readレプリカでも弾力性を持たせることができることをご存知ですか?通常、ベースロードを処理するために最小数のリードレプリカを構成し、需要の変化に応じてインスタンスを追加または削除する自動スケーリングポリシーを設定します。弾力性を活用する機能は、ストレージエンジンがデータベースエンジンから分離されているという事実のもう1つの派生物です。

これが役立つシナリオの例は、B2Beコマースサイトです。平日の営業時間中は渋滞が発生しますが、夜間や週末はごくわずかです。画像とコンテンツの説明は、読み取りと書き込みの比率が高く、リードレプリカと自動スケーリングの両方のメリットがあります。 ReadReplicasを自動スケーリングすると、ピーク時の需要に対応しながら、営業時間外のコストを最小限に抑えることができます。

クロスリージョンレプリケーション

可用性を次のレベルに引き上げる必要がある場合は、それを別のリージョンに複製します。データベースエンジンにデータを別のリージョンに複製させることにより、データをローカルで読み取ったり、プライマリリージョンに障害が発生した場合に使用したりできます。セカンダリリージョンのインスタンスはリードレプリカとして扱われます(これはマルチマスターではありません)が、独自のリードレプリカを持つことも、プライマリリージョンに障害が発生した場合にマスターになることもできます。

クロスリージョンレプリケーションが必要になる理由はたくさんあります。データが重要すぎて、単一の地理的地域に保存できない場合があります。これは、ビジネスの継続性、規制、または財務上の理由が原因である可能性があります。もう1つの理由は、ユーザーとデータベースバックエンド間の遅延が減少することです。もう一度例としてeコマースを使用すると、画像と説明への変更を単一の地域のマスターに適用できますが、グローバルに分散してローカルで読み取ることができます。

外部レプリケーション

Auroraクラスターの外部でデータが必要な状況はどうですか?企業のポリシーや規制環境で必要な場合や、Auroraの外部でデータを処理したりレポートを実行したりする必要がある場合は、これらすべてのケースを使用して処理できます。外部レプリケーション。

AuroraにデータをAmazonEC2MySQLインスタンス、MySQLを実行しているAmazon EC2インスタンス、または企業のデータセンターで実行されているMySQLインスタンスに複製させるのは簡単です。この一方向レプリケーションを使用すると、データは常にAuroraクラスターと同期し、Auroraの外部で使用できるようになります。

サーバーレス

最後に、もちろん重要なことですが、サーバーレスです。おそらく、可用性とスケーラビリティの最も重要な開発の1つは、方程式にサーバーレスを追加することです。明らかに、サーバーレスはサーバーがないことを意味するものではありません。これは、サーバーのプロビジョニング、構成、スケーリング、またはメンテナンスについて心配する必要がないことを意味します。

Aurora Serverlessを設定するには、アプリケーションで利用可能な容量を指定します。AWSは、クライアントが必要とするときに、容量がオンデマンドで利用可能であることを確認する詳細を処理します。サーバーレスの場合、データベースエンジンとストレージエンジンの2つの既存のレイヤーに、プロキシレイヤーという追加のレイヤーが追加されました。

AWSは、着信リクエストをリッスンするプロキシサーバーのフリートを維持しています。さらに、DB容量のウォームプールがリクエストの処理を待機しています。最初のクエリが着信すると、プロキシフリートはそれを受信し、ウォームプールからインスタンスをリクエストし、使用に割り当てられた後、そのインスタンスにリクエストを転送します。さらに良いことに、使用に割り当てられるインスタンスの数は弾力性があり、Auroraサーバーレス構成で指定する需要と制限に基づいてスケールインおよびスケールアウトします。以前の戦略と同様に、データベースエンジンを動的に割り当てる機能は、データベースとストレージを分離することで可能になります。構成に基づいて、データベースインスタンスは割り当てられたままになり、すぐに使用できます。タイムアウト期間が終了すると、インスタンスはウォームプールに戻されます。使用しているリソースに対してのみ課金されます。インスタンスが使用に割り当てられると、そのインスタンスと消費されたストレージの料金が請求されます。割り当てられていない場合は、消費されたストレージに対してのみ課金されます。

開発環境やテスト環境などの急増するワークロード、または使用パターンを予測するのに十分な履歴がない新しいアプリケーションの場合は、サーバーレスが最適です。使用していないリソースの料金を支払う必要がなくなり、週末に出発する前に開発チームが電気を消していることを心配する必要がなくなります。また、ユーザーが容量を調整するために深夜に起こされることもありません。 'タイムゾーンはあなたのsleepzoneと一致します。

まとめ

Amazon Auroraは、可用性、耐久性、スケーラビリティを念頭に置いて構築されています。標準のオープンソース実装のように使用すると、堅牢で信頼性が高く、パフォーマンスの高いデータベースが得られます。 Auroraの機能とそれらを活用するパターンをもう少し詳しく調べることで、ローカルの読み取りオフロードからグローバルに分散された可用性まで、ニーズを満たすソリューションを実装できます。

[フィードバック]タブを使用して、コメントを書き込んだり、質問したりします。


  1. MongoDBの無駄なスペースを削減するための戦略

    Appboyは、モバイルアプリ向けの世界をリードするマーケティング自動化プラットフォームです。ユーザーがお客様のモバイルアプリで何をしているかを追跡し、ユーザーの行動や人口統計に基づいて、ユーザーがメール、プッシュ通知、アプリ内メッセージをターゲットにできるようにすることで、毎月数十億のデータポイントを収集しています。 MongoDBは、ほとんどのデータベーススタックを強化し、ObjectRocketの複数のクラスターで数十のシャードをホストしています。 MongoDBの一般的なパフォーマンス最適化戦略の1つは、ドキュメントで短いフィールド名を使用することです。つまり、次のようなドキュメント

  2. 読み物をお探しですか?オンラインで電子書籍を購入するには、これらの電子書籍ストアをチェックしてください

    電子書籍をどこから購入すればよいか迷っていますか?続きを読んで答えを見つけてください。 ロックダウン中に家に座って退屈しているなら、本を読むことは私がお勧めできる娯楽の1つです.そして最も重要なことは、物理的なペーパーバックやハードカバーを家に届ける必要がないことです。電子書籍をオンラインで簡単に支払い、購入し、ダウンロードして、コンピューター、スマートフォン、タブレット、または Kindle などの電子書籍リーダーで読むことができます。 電子書籍をオンラインで購入できる電子書籍ストアは多数あります。購入前にタイトルと価格を比較できる最適な場所のリストを次に示します。 1.アマゾン電子ブッ