プライマリApsaraDB RDS for MySQLインスタンスの負荷が高い場合、またはワークロードに切り替えなどのO&M操作によって引き起こされる一時的な接続を防ぐ機能が必要な場合は、ApsaraDB RDS for MySQLのデータベースプロキシ機能を使用できます。 この機能は、読み書き分離機能を提供して、負荷を分散し、プライマリRDSインスタンスのCPU負荷を軽減します。 この機能は、永続的な接続を提供して一時的な接続とSSL暗号化を防ぎ、RDSインスタンスの可用性とセキュリティを向上させます。
データベースプロキシは、データベースシステムとアプリケーションの間に存在し、アプリケーションからのすべての要求を受信するネットワークプロキシとして機能します。 データベースプロキシエンドポイントを使用してRDSインスタンスに接続し、データベースプロキシ機能のさまざまな機能を使用できます。 これにより、RDSインスタンスの接続管理が簡素化されます。 データベースプロキシ機能は、使いやすく保守も簡単で、高可用性と高パフォーマンスを実現します。
シナリオ
読み書き分割が必要です。
インスタンスの切り替えやフェイルオーバーなどのO&M操作によって引き起こされる一時的な接続を防ぐ機能が必要です。
プライマリRDSインスタンスは、トランザクションにカプセル化された多数のリクエストにより、負荷が高くなります。
接続数が多すぎるため、プライマリRDSインスタンスの負荷が高くなります。
ほとんどのワークロードには、短期間の接続が必要です。
読み取り専用のワークロードと分離が必要なワークロードを処理する必要があります。
説明たとえば、データベースシステムは1つのプライマリRDSインスタンスと4つの読み取り専用RDSインスタンスで構成され、アプリケーションAとアプリケーションBの2つのアプリケーションがあります。アプリケーションAは読み取り要求のみを開始し、アプリケーションBは読み取り要求と書き込み要求の両方を開始します。 アプリケーションAとアプリケーションBをデータベースシステムに接続します。 2つの読み取り専用RDSインスタンスを読み取り専用属性を持つプロキシ端末AにバインドしてアプリケーションAからの要求を処理し、プライマリRDSインスタンスと他の2つの読み取り専用RDSインスタンスを読み取り /書き込み属性を持つプロキシ端末BにバインドしてアプリケーションBからの要求を処理することができます。アプリケーションAとアプリケーションBは、データベースシステム内で物理的に分離されています。
用語
database proxy endpoint (旧称proxy terminal)
データベースプロキシエンドポイントは、データベースプロキシの中核です。 ビジネス要件に基づいてデータベースプロキシエンドポイントの接続設定を構成し、データベースプロキシエンドポイントのプレフィックスとポート番号を変更できます。 データベースプロキシエンドポイントを使用してRDSインスタンスに接続する場合、データベースプロキシ機能の高度な機能を使用できます。
データベースプロキシ機能が有効になっている各RDSインスタンスは、最大7つのデータベースプロキシエンドポイントをサポートします。 各データベースプロキシエンドポイントに対して1つの内部エンドポイントと1つのパブリックエンドポイントを申請できます。 各データベースプロキシエンドポイントの接続設定を構成して、さまざまなビジネス要件を満たし、サービスの柔軟性を向上させることもできます。 詳細については、「データベースプロキシエンドポイントの接続設定の構成」および「データベース接続」をご参照ください。
読み書き分離
読み書き分離は、データベースプロキシエンドポイントを使用して読み書き要求を自動的に転送できることを示します。
データベースシステムが多数の読み取りリクエストと少数の書き込みリクエストを受信した場合、プライマリRDSインスタンスが読み取りリクエストを効率的に処理できず、ワークロードが中断される可能性があります。 読み書き分離機能を使用すると、システムは書き込みリクエストをプライマリRDSインスタンスに転送し、読み取りリクエストを読み取り専用RDSインスタンスに転送できます。 これにより、プライマリRDSインスタンスの負荷が軽減されます。 詳細については、「」をご参照ください。読み書き分離とは何ですか?
永続的な接続
永続的な接続は、ApsaraDB RDS for MySQLのデータベースプロキシ機能によって提供されます。 切り替えをトリガーするO&M操作がRDSインスタンスで実行される場合、永続的な接続により、RDSインスタンスのアプリケーションとデータベースプロキシ間の接続が確実に維持されます。 この場合、データベースプロキシエンドポイントを使用してアプリケーションをRDSインスタンスに接続すると、切断エラーは報告されません。 詳細については、「永続接続設定の構成」をご参照ください。
トランザクション分割
トランザクション分割機能は、データベースプロキシに対して自動的に有効になります。 この機能により、システムは、トランザクション内の書き込み操作の前に読み取り要求をデータベースシステムの読み取り専用RDSインスタンスに転送できます。 これにより、プライマリRDSインスタンスの負荷が軽減されます。 詳細については、「トランザクション分割」をご参照ください。
接続プーリング
接続プーリング機能は、新しい接続が頻繁に発生することや、PHPを介した短期間の接続など、短期間の接続が過度に発生することによって引き起こされる、インスタンスの重い負荷の問題を効果的に解決します。 詳細については、「接続プールタイプの設定」をご参照ください。
ゾーン
プロキシノードとデータベースプロキシエンドポイントが存在するゾーン。 クロスゾーンアクセスによる遅延を減らすために、データベースプロキシ、データベースプロキシエンドポイント、およびRDSインスタンスを同じゾーンに配置することを推奨します。 データベースプロキシ機能を有効にすると、データベースプロキシをゾーン間で移行できます。 詳細については、「ゾーン間のプロキシノードの移行」をご参照ください。
最寄りのアクセス
RDSインスタンスのデータベースプロキシを複数のゾーンにデプロイする場合、最も近いアクセス機能を有効にして、アプリケーションと同じゾーンにデプロイされているプロキシノードにアプリケーションを接続できます。 この場合、アプリケーション、プロキシノード、および読み取り専用RDSインスタンスは同じゾーンにあります。 これにより、ネットワーク遅延が大幅に削減されます。 詳細については、「最寄りアクセス機能の設定」をご参照ください。
SSL暗号化
SSL暗号化機能をデータベースプロキシエンドポイントで有効にして、データ送信を保護することができます。 詳細については、「専用プロキシエンドポイントのSSL暗号化の設定」をご参照ください。
プロキシ展開
データベースプロキシは、デュアルゾーン展開とシングルゾーン展開をサポートしています。
単一ゾーン展開: すべてのプロキシノードが同じゾーンに展開されます。
デュアルゾーン展開: プロキシノードは2つのゾーンに展開され、クロスゾーンディザスタリカバリを実装します。 追加料金は発生しません。
展開モード
次の展開モードがサポートされています。
展開モード1
展開モード2
展開モード3
展開モード | ゾーン | プロキシノードの総数 | 仕様制限 | サポートされているプロキシタイプ |
展開モード1 | 2つのゾーン | 4 | 同じゾーン内のプロキシノードの仕様は同じでなければなりません。 | 専用型 |
展開モード2 | 2つのゾーン | 2 | プロキシノードの仕様は同じでなければなりません。 | 専用および一般目的 |
展開モード3 | シングルゾーン | 2 | 同じゾーン内のプロキシノードの仕様は同じでなければなりません。 | 専用および一般目的 |
データベースプロキシ機能を有効にすると、データベースプロキシの展開モードを変更できます。 詳細については、「データベースプロキシ設定の変更」をご参照ください。
デフォルトモードとゾーン
次の表に、データベースプロキシのデフォルトモードとゾーンを示します。
RDSインスタンスデプロイ | データベースプロキシタイプ | データベースプロキシの既定の展開モード | データベースプロキシのデフォルトゾーン |
単一ゾーン展開 | 専用型 | 展開モード3 | デフォルトゾーンは、プライマリRDSインスタンスのゾーンと同じです。 |
汎用 | 展開モード3 | ||
デュアルゾーン展開 | 専用型 | 展開モード1 |
|
汎用 | 展開モード2 |
データベースプロキシのディザスタリカバリ
展開モード1
プロキシノードレベルの障害が発生すると、障害ノードはビジネストラフィックを処理しなくなり、トラフィックは同じゾーン内の通常のプロキシノードにルーティングされます。
ゾーンレベルの障害が発生すると、デュアルゾーン展開でゾーン間のディザスタリカバリ機能が提供されます。 この場合、業務トラフィックは通常ゾーンのプロキシノードにルーティングされます。 障害ゾーン内のプロキシノードが回復した後、新しいビジネストラフィックが回復したプロキシノードにルーティングされます。 既存の永続接続のルーティングは変更されず、自動的に期限切れになります。
説明最も近いアクセス機能を有効にし、ゾーンレベルの障害が発生した場合、サービスの可用性がアクセス遅延よりも優先されるため、機能が使用できなくなることがあります。 これにより、データベースプロキシの可用性が確保されます。
展開モード2
この展開モードでは、2つのプロキシノードが2つのゾーンに展開されます。 プロキシノードレベル障害は、ゾーンレベル障害に相当します。 障害が発生すると、ビジネストラフィックは別のゾーンのプロキシノードにルーティングされます。
展開モード3
プロキシノードレベルの障害が発生すると、障害ノードはビジネストラフィックを処理しなくなり、トラフィックは同じゾーン内の別のプロキシノードにルーティングされます。
ゾーンレベルの障害が発生すると、データベースプロキシはサービスを提供できません。 ゾーンが障害から回復するのを待つか、データベースプロキシの展開モードを手動で変更する必要があります。
データベースプロキシの種類
ApsaraDB RDS for MySQLは、汎用および専用データベースプロキシを提供します。
汎用: データベースプロキシは物理CPUリソースを共有し、無料で提供されます。 このタイプのデータベースプロキシは、費用対効果が高い。
専用: データベースプロキシは、割り当てられた物理CPUリソースのみを占有し、従量課金に基づいて課金されます。 このタイプのデータベースプロキシは、安定したパフォーマンスを実現します。
次の表に、2種類のデータベースプロキシの違いを示します。
項目 | 汎用 | 専用型 |
課金方法 | 無料です。 | 従量課金 詳細については、「データベースプロキシの課金ルール」をご参照ください。 |
リソースタイプ | 物理CPUリソースは共有されます。 | 物理CPUリソースは、高いパフォーマンスと安定性を実現するために占有されます。 |
単一のプロキシノードの仕様範囲 | 1〜8のCPUコア。 | 1〜16のCPUコア。 |
RDS インスタンス | RDS High-availabilityおよびRDS Cluster EditionのRDSインスタンス | |
展開モード | 展開モード2と3がサポートされています。 詳細については、「プロキシ展開」をご参照ください。 | 展開モード1、2、および3がサポートされています。 詳細については、「プロキシ展開」をご参照ください。 |
単一ゾーン展開 | サポートされています。 | |
デュアルゾーン展開 | サポートされています。 | |
最寄りのアクセス | サポートされていません。 | サポートされています。 |
読み書き分離 | サポートされています。 | |
トランザクション分離 | サポートされています。 | |
プロキシエンドポイント (旧プロキシ端末) | データベースプロキシ機能が有効になっている各RDSインスタンスは、最大7つのデータベースプロキシエンドポイントをサポートします。 各データベースプロキシエンドポイントに対して1つの内部エンドポイントと1つのパブリックエンドポイントを申請できます。 | |
切り替え中の永続的な接続 | サポートされています。 | サポートされています。 |
フェイルオーバー中の永続的な接続 | サポートされていません。 | サポートされています。 |
接続プール | サポートされています。 | |
SSL 暗号化 | サポートされています。 |
データベースプロキシの仕様とプロキシノードの仕様の関係:
データベースプロキシの仕様=全プロキシノードの仕様
たとえば、4つの専用データベースプロキシノードがゾーンAとゾーンBにデプロイされ、各ゾーンのプロキシノードの数が2で、1つのプロキシノードのCPUコアの数がゾーンaで1、ゾーンBで2であるとします。データベースプロキシの仕様はプロキシゾーンの仕様と同じです
。 この例では、データベースプロキシの仕様は6 CPUコアです。 この値は、1 × 2 + 2 × 2 = 6の計算に基づいて得られる。プロキシノードの数とデータベースプロキシの仕様の関係:
プロキシノードの数=データベースプロキシの仕様 /プロキシノードのユニット仕様
プロキシノードのユニット仕様は、2つのCPUコアとして固定されています。 たとえば、データベースプロキシの仕様が6 CPUコアの場合、プロキシノードの数は3です。 この値は、6/2 = 3
の計算に基づいて得られる。
使用上の注意
詳細については、「データベースプロキシの使用に関する注意事項」をご参照ください。
課金ルール
詳細については、「データベースプロキシの課金ルール」をご参照ください。
関連ドキュメント
詳細については、「データベースプロキシ機能の使用」をご参照ください。