OceanBaseデータベースプロキシODP(OceanBase Database Proxy、別名obproxy)は、OceanBase専用のプロキシサービスです。ODP自体が高可用性設計となっています。
ODPのデプロイメントモード
メジャーコンパクションデプロイメント
OCP方式で起動
複数のクラスタにアクセスできます。
OCPがダウンした場合、既にアクセスしたことのあるクラスタは正常にアクセス可能ですが、未アクセスのクラスタはアクセスできません。
RSList方式で起動(単一クラスタへのみアクセス可能、IPは127.0.0.1)
特定のクラスタへの固定アクセスで、OCPに依存しません。ローカルマシンに障害が発生した場合、SLBが検出してフェイルオーバーを行い、ODPの追加操作は不要です。
一部のマシン障害シナリオを処理できます。
独立デプロイメント
OCP方式で起動
複数のクラスタにアクセスできます。
OCPがダウンした場合、既にアクセスしたことのあるクラスタは正常にアクセス可能ですが、未アクセスのクラスタはアクセスできません。
RSList方式で起動
- 特定のクラスタへの固定アクセスで、OCPに依存しません。RS Listに障害が発生した場合、クラスタへのアクセスが不可能になる可能性があります。
ODPの災害復旧機能
故障の検出
定期タスクにより、ノード、ゾーン、プライマリ/スタンバイクラスタの状態を更新します。
- プランの制限:ノードの状態更新に依存します。ノードに障害が発生している場合(例:ディスクがハングしている)、inactiveまたはstop serverになっていないため、状態が変わらないことがあります。
Server接続はKeepAliveプローブ機構を維持し、ODPとバックエンドノード間の接続状況を検出します。アイドル接続が異常に切断された場合、obproxyは迅速に検出し、除外して再作成できます。
Client KeepAliveプローブ機構により、obproxyとClient間の接続状況を検出し、同時にSLBなどのロードバランシングによるアイドルタイムアウトを回避できます。
故障の処理
進行中のリクエストの処理
非同期中止機構により、マシン障害を検出すると、迅速に中止して長時間の待機やビジネス接続プールの枯渇を防ぎます。
新規リクエストの処理
ブラックリスト機構により、新規リクエストが障害マシンに送信されるのを防ぎます。
ノードへのアクセス失敗が複数回あるとブラックリストに追加されます。ブラックリストに追加されて一定期間経過すると、そのマシンがアクセス可能かどうかを検出するプローブリクエストが送信されます。
プランの制限:クライアント側が先にタイムアウトして接続が切断された場合、ブラックリストに追加されません。
ノードの状態が非activeに変更された場合も、ブラックリストに追加されます。
プランの制限:RTOは【故障検出-定期タスク】の周期(現在は20秒、設定可能)とノードの検出時間に依存します。
非同期テーブルロケーションキャッシュ更新機構により、レプリカの切り替えを検出します。マシン障害後にレプリカ切り替えが発生した場合、迅速に新しいレプリカにルーティングできます。
プランの制限:ノードがODPにルーティングに問題があると通知することに依存します。ノードに障害がある場合、応答しないため、テーブルロケーションキャッシュは自動的に更新されません。
二センター物理スタンバイデータベース構成では、プライマリ/スタンバイ切り替え機構があります。プライマリデータベースで切り替えが発生した場合、迅速に新しいプライマリデータベースに切り替えることができます。
プランの制限:RTOは【故障検出-定期タスク】の周期(現在は20秒、設定可能)とノードの切り替え時間に依存します。