このページでは、OceanBase Cloudのデータベースプロキシサービスの概念について説明します。
背景情報
OceanBase Cloudのデータベースプロキシは、クライアントとデータベースの間に位置し、クライアントからのリクエストを受信してバックエンドのOceanBase Cloudデータベースに転送します。最適なルーティングを保証し、分散トランザクションを可能な限り回避します。また、マルチレプリカ環境において、単一サーバーの障害がアプリケーションに影響を与えないようにし、OceanBase Cloudデータベースの高可用性を向上させます。
OceanBase Cloudのデータベースプロキシは、接続管理、最適なルーティング、高性能転送、運用・保守の容易さ、高可用性、専用プロトコルなどの特長を備えています。以下に、よく使用される概念を紹介します。
用語 |
説明 |
|---|---|
| プロキシ接続アドレス(旧プロキシエンドポイント) | データベースプロキシの接続アドレスはその中核であり、カスタム接続アドレスアクセス戦略、接続アドレスプレフィックス、ポート番号の変更などをサポートします。データベースプロキシの接続アドレスを介してインスタンスに接続することで、プロキシの高度な機能を使用できます。 |
| 接続管理 | クライアントの物理接続に対して、データベースプロキシは自身とバックエンドの複数のOBServerノードとの接続を維持し、バージョン番号に基づく増分同期方式で各OBServerノード接続のセッション状態を維持することで、クライアントが各OBServerノードに効率的にアクセスできるようにします。 |
| 最適ルーティング | データベースプロキシは、ユーザーのリクエストに関連するレプリカの位置、ユーザーが設定した読み書き分離のルーティングポリシー、OceanBaseの複数地域展開における最適なリンク、およびOceanBase各マシンの状態と負荷状況を総合的に考慮し、ユーザーのリクエストを最適なOBServerノードにルーティングすることで、OceanBase全体の高性能な稼働を最大限に保証します。 |
| 高性能転送 | データベースプロキシはMySQLプロトコルと完全に互換性があり、OceanBase独自のプロトコルもサポートしています。マルチスレッド非同期フレームワークと透過的ストリーミング転送の設計を採用することで、データの高性能転送を保証すると同時に、自身のマシンリソース消費を最小限に抑えます。 |
| 容易な運用保守 | データベースプロキシ自体はステートレスであり、無制限の水平スケーリングをサポートし、複数のOceanBaseクラスタへの同時アクセスをサポートします。OceanBase Cloudコンソールを通じてデータベースプロキシの状態をリアルタイムで監視できるため、運用保守が簡単で便利になります。 |
| 高可用性 | データベースプロキシの高可用性は2つの部分に分けられます。一つは、自身の高可用性を保証し、プロキシサービスを継続的に提供することです。もう一つは、データベースプロキシがOceanBase高可用性システムの中核をなす構成要素であり、ユーザーに対してダウンタイムやアップグレードなどの状況を隠蔽し、OceanBase Cloudデータベースサービスの安定性と迅速な復旧を保証することです。 |
| 専用プロトコル | データベースプロキシは、OBServerノードとの通信においてデフォルトでOceanBase専用プロトコルを採用しています。例えば、パケットにCRC検証を追加してOBServerノードとのリンクの正確性を保証したり、Oracle互換性のデータ型やインタラクションモデルをサポートするために伝送プロトコルを強化したりしています。 |
プロキシの種類
OceanBase Cloudは、共有仕様と専用仕様の2種類のプロキシサービス仕様を提供します。
共有仕様:データベースプロキシサービスインスタンスは他の顧客とコンピュートリソースを共有し、顧客の実際のインスタンスサイズに基づいて関連するデータベースプロキシインスタンス仕様が固定的に割り当てられます。トラフィックが比較的固定され平均的なビジネスに適しています。
専用仕様:データベースプロキシサービスインスタンスはコンピュートリソースを単独で占有し、顧客は実際のビジネス要件に応じてデータベースプロキシのリソース仕様をいつでも拡張できます。アクセス量の多いビジネスに適しています。専用仕様のプロキシサービスが有効になると、システムは使用されたリソース量に基づいて1時間単位で課金します。
2種類の仕様の主な違いは、次のとおりです。
比較項目 |
共有仕様 |
専用仕様 |
Serverless仕様 |
|---|---|---|---|
| 課金タイプ | 無料 | 従量課金 | 無料 |
| リソースタイプ | CPU物理リソースを共有 | CPU物理リソースを専有し、より安定したパフォーマンスを発揮します。 | - |
| デプロイアーキテクチャ | 高可用性クラスタデプロイアーキテクチャ、障害の円滑な移行を保証。 | 高可用性クラスタ構成、障害の円滑な移行を保証。 | 高可用性クラスタデプロイアーキテクチャ、障害の円滑な移行を保証。 |
| インスタンス仕様 | 2C~8Cの構成をサポートします(AWSでは1C~共有仕様の上限)。 | 2C~64Cの構成をサポートします(AWS上では1C~30C)。 | エラスティックスケーリング |
| 読み書き分離 | サポート | サポート | サポート |
| トランザクション分割 | サポート | サポート | サポート |
| 接続保持 | サポート | サポート | サポート |
| SSL暗号化 | サポート | サポート | サポート |
Serverlessデータベースプロキシクラスタ
説明
- Serverlessデータベースプロキシクラスタ機能は現在、ベータテスト段階にあり、許可リスト制です。利用を希望する場合は、OceanBaseのサポートチームまでお問い合わせください。現在はAWSチャネルのみ対応しており、今後他のクラウドでも順次対応予定です。
- 現在、共有仕様と専用仕様は、設定変更ボタンを押すことでServerless仕様に切り替えることができますが、Serverless仕様から専用仕様や共有仕様への切り替えは、現在対応していません。
Serverlessデータベースプロキシクラスタとは
ODP Serverlessは、OceanBaseデータベースプロキシのServerless版です。ビジネストラフィックの実際の負荷に応じて、ODPのコンピュートリソースを自動的に調整し、クラスタ仕様を手動で計画する必要は一切ありません。ODP Serverlessは、負荷の変動が大きく、トラフィックのピークとオフピークを事前に予測しにくいビジネスシナリオに適しています。例えば、eコマースプラットフォームのセールイベント、SaaSのマルチテナントビジネス、定期レポートタスクなどが該当します。
Serverlessデータベースプロキシクラスタとは異なり、共有仕様と専用仕様のデータベースプロキシでは、プロキシクラスタの仕様を手動で設定する必要があります。リソースのボトルネックや冗長が発生した場合に、手動でプロキシクラスタを拡張または縮小する必要があります。これは、負荷の傾向が比較的安定している、またはプロキシクラスタのコンピュートリソースの一部を固定したいビジネスシナリオに適しています。
弾性スケーリング機能を除き、Serverlessデータベースプロキシクラスタは、災害復旧性や接続数の制限など、その他の属性において非Serverlessプロキシクラスタと差異はありません。
Serverlessデータベースプロキシクラスタの料金について
ODP Serverlessは現在無料でご利用いただけます。ODP Serverlessを有効にしても、弾性コンピューティング機能とプロキシクラスタの仕様に対する追加料金は発生しません。ただし、ODP Serverless自体は無料でも、AWS上ではプライベートネットワーク経由のリクエストに対するアベイラビリティゾーン間トラフィック料金が発生します。
Serverlessデータベースプロキシクラスタの弾性スケーリングの仕組み
ODP Serverlessは、突発的な負荷の検出と垂直方向の弾性リソース推奨メカニズムを組み合わせ、プロキシクラスタに必要なリソースを継続的に評価します。システムが複数回の連続した検出で、現在の仕様ではビジネス負荷を満たせないと判断した場合、自動的にスケールアップを開始し、プロキシクラスタのCPUとメモリの仕様を段階的に引き上げます。調整後には再びリソース負荷を評価し、仕様がなお不足している場合は、プロキシクラスタが適切かつ安定した運用レベルに戻るまでスケールアップを続けます。
プロキシクラスタの初期仕様(Base Capacity)
初期仕様は、テナント仕様 × ユニット数 × 1/4 と 1C のうち、大きい方の値に等しくなります。例えば、テナント仕様が 4C 2 Unit の場合、Serverlessプロキシクラスタの初期仕様は max(4C × 2/4,1C)= 2C となります。テナント仕様が 1C 1Unit の場合、Serverlessプロキシクラスタの初期仕様は max(1C * 1/4,1C)= 1C となります。
プロキシクラスタの弾性上限(Max Capacity)と下限(Min Capacity)
突発的なトラフィックにより自動的にスケールアップできる最大CPU仕様と、トラフィックが少ない時間帯に維持される最小CPU仕様を指します。弾性上限はOceanBaseのフル機能レプリカノード仕様の1/4です。例えば、16CのOceanBaseクラスタを複数のデータセンターに2-2-2構成でデプロイした場合、単一のServerlessプロキシクラスタの弾性上限は 16C × 6/4 = 24C となります。弾性下限は1Cです。
弾性スケーリングがクライアント接続に与える影響
通常、Serverlessデータベースプロキシクラスタでは、ノード仕様の拡大・縮小にインプレース方式を採用するため、スケーリングはクライアント接続に影響しません。まれにインプレース方式を採用できず、プロキシクラスタノードの新規作成や削除が必要になることがあります。この場合、削除されるデータベースプロキシノード上の既存接続は切断されます。ノードを削除する場合は、削除予定日の3日前にメールとサイト内通知でお知らせします。日程の変更をご希望の場合はお問い合わせください。クライアント側で自動再試行メカニズムを設定し、インプレース方式以外のスケールアップに伴う接続断の影響を軽減することを推奨します。