このトピックでは、ApsaraDB RDS for MySQLのデータベースプロキシについて説明します。
シナリオ
- プライマリRDSインスタンスは、トランザクションにカプセル化された多数のリクエストにより、負荷が高くなります。
- 接続数が多すぎるため、プライマリRDSインスタンスの負荷が高くなります。
- ほとんどのワークロードには、短期間の接続が必要です。
- 読み取り専用ワークロードと分離が必要なワークロード。
説明 たとえば、データベースシステムは1つのプライマリRDSインスタンスと4つの読み取り専用RDSインスタンスで構成され、アプリケーションAとアプリケーションBの2つのアプリケーションがあります。アプリケーションAは読み取り要求のみを開始し、アプリケーションBは読み取り要求と書き込み要求の両方を開始します。 この場合、2つの読み取り専用インスタンスを使用して、読み取り専用属性を持つプロキシ端末Aを作成できます。 次に、他の2つの読み取り専用インスタンスを使用して、[読み取り /書き込み] 属性を持つプロキシターミナルBを作成できます。 このように、アプリケーションAとアプリケーションBは、データベースシステム内で互いに分離されます。
プロキシ端末の概要
プロキシ端末はAlibaba Cloudによって開発されています。 プロキシ端末を使用して、RDSインスタンスへの接続に使用されるエンドポイントをカスタマイズできます。 各RDSインスタンスは、最大7つのプロキシ端末をサポートします。 さまざまなビジネス要件に基づいて、各プロキシ端末の読み取りおよび書き込み属性を変更できます。
読み取りおよび書き込み属性
各プロキシ端末の読み取りおよび書き込み属性を設定できます。
- 読み書き: この属性は、読み書き分離機能をサポートするために使用されます。 読み書き分離機能を使用すると、データベースシステムで処理できるワークロードの量を線形にスケーリングできます。
詳細については、「読み書き分離の概要」をご参照ください。
プロキシ端末にこの属性を選択する場合、プロキシ端末が少なくとも1つのプライマリRDSインスタンスと1つの読み取り専用RDSインスタンスに関連付けられていることを確認する必要があります。 すべての書き込み要求は、プライマリRDSインスタンスにルーティングされます。 この場合、プロキシ端末は、トランザクション分割および接続プールなどの機能をサポートする。 詳細については、「Use the transaction splitting feature on an ApsaraDB RDS for MySQL instance」および「ApsaraDB RDS For MySQLインスタンスの接続プールタイプの設定」をご参照ください。
- 読み取り専用: この属性は、読み取り要求のみを処理するために使用されます。 たとえば、アプリケーションがレポートサービスのみを提供する場合、この属性を選択できます。
プロキシ端末にこの属性を選択する場合、プロキシ端末が少なくとも1つの読み取り専用RDSインスタンスに関連付けられていることを確認する必要があります。 プロキシ端末は、プライマリRDSインスタンスにリクエストをルーティングしません。 さらに、プロキシ端末は、トランザクション分割および接続プールなどの機能をサポートしない。 詳細については、「Use the transaction splitting feature on an ApsaraDB RDS for MySQL instance」および「ApsaraDB RDS For MySQLインスタンスの接続プールタイプの設定」をご参照ください。
プロキシ端末に [読み取り専用] 属性を選択した場合、プロキシ端末はラウンドロビンアルゴリズムに基づいて関連する読み取り専用RDSインスタンスに接続を割り当てます。 各データベースクライアントには、1つの読み取り専用RDSインスタンスに1つの接続のみが割り当てられます。 プライマリRDSインスタンスへの接続は、プロキシ端末によって割り当てられていません。 使用可能な接続の総数は、すべての読み取り専用RDSインスタンスに対して確立された接続の合計です。
概要
データベースプロキシは、次の機能を提供します。
- [プロキシ] タブでさまざまな操作を実行できます。 たとえば、専用プロキシのバージョンをアップグレードし、このタブでプロキシエンドポイントを作成できます。
種類 項目 説明 プロキシエンドポイント ステータス 専用プロキシのステータス。 インスタンスID RDS インスタンスの ID 関連付けられたプロキシインスタンス 専用プロキシに関連付けられているプロキシインスタンスの数。 より多くのプロキシインスタンスを有効にすることで、専用プロキシの処理能力を高めることができます。 エンドポイント プロキシ端末 プロキシ端末の名前。 プロキシ端末ごとに複数のプロキシエンドポイントを作成できます。 詳細については、「読み書き分離の概要」をご参照ください。 エンドポイント 専用プロキシへの接続に使用されるエンドポイント。 専用プロキシは、プロキシ端末機能がバインドされるデフォルトのプロキシエンドポイントを提供します。 プロキシエンドポイントを作成、変更、または削除できます。 詳細については、「ApsaraDB RDS For MySQLインスタンスの専用プロキシエンドポイントの管理」をご参照ください。 ポート プロキシエンドポイントにバインドされているポート番号。 説明 ポート番号を変更するには、ポート番号がバインドされているプロキシエンドポイントを見つけて、右側の [変更] をクリックする必要があります。 有効なポート番号は1000〜5999です。ネットワークタイプ プロキシエンドポイントのネットワークタイプ。 プロキシエンドポイントのネットワークタイプを変更することはできません。 プロキシインスタンス プロキシタイプ 専用プロキシのみがサポートされています。 CPUとメモリ プロキシインスタンスごとに提供される仕様。 各プロキシインスタンスには、2コアと4 GBのメモリしか搭載できません。 有効なプロキシインスタンス RDSインスタンスに対して有効になっているプロキシインスタンスの数。 ApsaraDB RDSは、有効になっているプロキシインスタンス間で負荷を分散できます。 RDSインスタンスに対して最大60個のプロキシインスタンスを有効化できます。 説明 プロキシインスタンスの数をRDSインスタンスと読み取り専用RDSインスタンスに設定されているコアの総数の8分の1
に設定することを推奨します。 結果が整数でない場合は、結果を最も近い整数に丸める必要があります。 最大 60 のプロキシインスタンスがサポートされています。たとえば、RDSインスタンスに8コアがあり、読み取り専用RDSインスタンスに4コアがある場合、
(8 + 4)/8 = 1.5
の計算に基づいて、プロキシインスタンスの推奨数は2です。 結果1.5は2に切り上げられます。 - プロキシ端末 (元の読み取り /書き込み分割)
ApsaraDB RDSは、設定したプロキシエンドポイントに読み取りおよび書き込みリクエストを自動的にルーティングします。 次に、これらのエンドポイントは、これらのインスタンスの読み取り重みに基づいて、読み取りおよび書き込みリクエストをプライマリRDSインスタンスおよび読み取り専用RDSインスタンスにルーティングします。 詳細については、「読み書き分離の概要」をご参照ください。
- 接続プール: この機能は、データベースシステムの重い負荷を軽減するために使用されます。 重負荷の問題は、過剰な接続またはPHPベースの接続などの頻繁な短期間の接続によって発生します。 詳細については、「ApsaraDB RDS For MySQLインスタンスの接続プールタイプの設定」をご参照ください。
- トランザクション分割: この機能により、ApsaraDB RDSは、トランザクション内の書き込み操作の前に読み取り要求を読み取り専用RDSインスタンスにルーティングできます。 これにより、プライマリRDSインスタンスの負荷が軽減されます。 詳細については、「Use the transaction splitting feature on an ApsaraDB RDS for MySQL instance」をご参照ください。
- 有効になっているプロキシインスタンスのCPU使用率を表示できます。 CPU使用率情報は、プロキシインスタンスの負荷を取得し、モニタリングデータに基づいてプロキシインスタンスの数を調整するのに役立ちます。 詳細については、「View the proxy monitoring data of an ApsaraDB RDS for MySQL instance」をご参照ください。
- SSL暗号化: この機能は、保護されたプロキシエンドポイント宛てのデータを暗号化するために使用されます。 これにより、転送中のデータのセキュリティが確保されます。 詳細については、「Configure SSL encryption for a proxy endpoint on an ApsaraDB RDS for MySQL instance」をご参照ください。
使用上の注意
詳細については、「データベースプロキシの使用に関する注意」をご参照ください。
専用プロキシを有効にする方法
詳細については、「Enable and configure the dedicated proxy feature for an ApsaraDB RDS for MySQL instance」をご参照ください。
付録: 共有プロキシの概要
ApsaraDB RDS for MySQLには、専用プロキシと共有プロキシの2種類のプロキシがあります。
共有プロキシは、マルチテナントプロキシとも呼ばれる。 共有プロキシは、異なるユーザのデータベースシステムがプロキシ計算リソースを共有することを可能にする。 この場合、これらのデータベースシステムは、プロキシ計算リソースを求めて競合し得る。 これは、共有プロキシの安定性を低下させる。 さらに、共有プロキシは、専用プロキシによって提供される高度な機能をサポートしない。 これらの高度な機能には、接続プール、SSL暗号化、およびトランザクション分割が含まれます。 ただし、共有プロキシは読み書き分離をサポートします。 読み書き分離エンドポイントのネットワークタイプは、プライマリRDSインスタンスのネットワークタイプによって変わります。 詳細については、「ApsaraDB RDS for MySQL インスタンスのネットワークタイプの変更」をご参照ください。 共有プロキシは使用できなくなりました。 詳細については、「[Notice] End of updates and maintenance for the shared proxy feature」をご参照ください。
専用プロキシは、シングルテナントプロキシとも呼ばれる。 専用プロキシを使用すると、データベースシステムは専用プロキシコンピューティングリソースを使用できます。 したがって、専用プロキシには、共有プロキシよりも次の利点があります。
- 専用プロキシは、より高い安定性を提供する。
- 専用プロキシは、より高い分離を提供する。
- 専用プロキシはより良いパフォーマンスを提供します。 RDSインスタンスごとに最大60のプロキシインスタンスを作成できます。 SysBenchテストでは、オンライントランザクション処理
(OLTP) シナリオで、各プロキシインスタンスが1秒あたり20,000 50,000クエリ (QPS) をサポートしていることが示されています。 実際のストレステストの結果に基づいて、RDSインスタンスでサポートされている最大QPSを見積もることを推奨します。
説明 専用プロキシへの最大接続数は制限されません。 この数は、データベースシステムのプライマリおよび読み取り専用RDSインスタンスの仕様によって異なります。
- 専用プロキシはスケーリングをサポートしています。 ビジネス要件に基づいて、プロキシインスタンスの数を増やすことができます。 詳細については、「ApsaraDB RDS For MySQLインスタンスの専用プロキシ数の調整」をご参照ください。
- 専用プロキシはパフォーマンスモニタリングをサポートします。 モニタリングデータと業務計画に基づいて、プロキシインスタンスの数を調整できます。 詳細については、「ApsaraDB RDS For MySQLインスタンスの専用プロキシのモニタリングデータの表示」をご参照ください。
- プライマリRDSインスタンスのネットワークタイプを変更した場合、読み書き分離エンドポイントのネットワークタイプは変更されません。 詳細については、「ApsaraDB RDS For MySQLインスタンスのネットワークタイプの変更」とWhat is read/write splitting?をご参照ください。
- 統合プロキシエンドポイントが提供されます。 これにより、アプリケーションのエンドポイント情報を変更する必要がなくなり、メンテナンスコストが削減されます。 プロキシエンドポイントは、プロキシインスタンスをリリースするまで有効です。 詳細については、「ApsaraDB RDS For MySQLインスタンスの専用プロキシエンドポイントの管理」をご参照ください。 有効なプロキシインスタンスをリリースしない限り、プロキシエンドポイントは接続されたままです。 たとえば、ピーク時には読み書き分離機能を有効にし、ピーク時以外には読み取り専用RDSインスタンスをリリースし、読み書き分離機能を無効にすることができます。 このような場合、プロキシエンドポイントは接続されたままであり、アプリケーションのエンドポイント情報を更新する必要はありません。
- 専用プロキシは、自動読み書き分離をサポートします。 これにより、保守コストが削減されます。 詳細については、「ApsaraDB RDS For MySQLインスタンスの読み書き分離機能の有効化」をご参照ください。 通常、読み書き分離を実装するには、プライマリRDSインスタンスと読み取り専用RDSインスタンスのエンドポイントをアプリケーションに手動で追加する必要があります。 これは、読み取り専用RDSインスタンスが利用可能な場合に適用されます。 専用プロキシ機能を有効にする場合は、アプリケーションに統合プロキシエンドポイントのみを追加する必要があります。 これにより、アプリケーションからのすべてのリクエストがプロキシエンドポイントに送信されます。 次に、プロキシエンドポイントは、これらのインスタンスの読み取り重みに基づいて、読み取りリクエストを読み取り専用RDSインスタンスにルーティングし、書き込みリクエストをプライマリRDSインスタンスにルーティングします。 読み取り専用RDSインスタンスをさらに作成したり、既存の読み取り専用RDSインスタンスを削除したりしても、アプリケーションの設定データを更新する必要はありません。
- 専用プロキシは、接続プールやトランザクションの分割など、より高度な機能を提供します。 詳細については、「ApsaraDB RDS For MySQLインスタンスの接続プールタイプの設定」および「ApsaraDB RDS for MySQLインスタンスのトランザクション分割機能の有効化」をご参照ください。