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