本記事では、obshellを使用してOBProxy(OceanBaseデータベースプロキシ、ODPとも呼ばれる)をデプロイする方法について説明します。
説明
現在、OBProxy V4.1.0.0以降のバージョンのみサポートされています。
このAPIはobshell V4.2.6以降でサポートされています。
呼び出しの説明
インターフェース制約
- このノードにはagent_passwordが設定されている必要があります。詳細については、ノードパスワードの設定を参照してください。
- obshell ServerはこのAPIに対してセキュリティ検証を行います。詳細については、APIの混合暗号化を参照してください。
- obshellがOBProxyサービスを管理していないこと。
- OBProxyインストールパッケージが解凍され、作業ディレクトリにインストールされていること。
リクエストパス
POST /api/v1/obproxy
リクエストパラメータ
| パラメータ | タイプ | 必須 | サンプル値 | 説明 |
|---|---|---|---|---|
| name | string | いいえ | myobproxy | デプロイされたOBProxyサービスの名前。 |
| home_path | string | はい | /home/admin/obproxy | OBProxyの作業ディレクトリであり、このディレクトリに対する読み書き権限が付与されている必要があります。 |
| sql_port | int | いいえ | 2883 | OBProxyのSQLポート。 |
| exporter_port | int | いいえ | 2884 | OBProxy Exproterポート。 |
| rpc_port | int | いいえ | 2885 | OBProxy RPCサービスのリスニングポート。 |
| proxyro_password | string | いいえ | ******* | 関連するクラスタ内のproxyro@sysユーザーのパスワード。 |
| obproxy_sys_password | string | いいえ | ******* | root@proxysysのパスワード。 |
| rs_list | string | いいえ | 10.10.10.1:2881;10.10.10.2:2881 | 関連するクラスタのRoot Serviceリストです。この設定を行うと、対応するOceanBaseクラスタをOBProxy経由でプロキシ処理できますが、プロキシ対象はこのクラスタのみです。 |
| config_url | string | いいえ | http://10.10.10.1:8080/services?Action=GetObProxyConfig | obconfigserverのURLです。この設定を行うと、obconfigserverに登録されているすべてのクラスタをOBproxy経由でプロキシ処理できます。 |
| parameters | map[string]string | いいえ | { "server_tcp_keepidle": "5", "enable_strict_kernel_release": "false" } |
OBProxyの構成パラメータ。 |
説明
リクエストパラメータでは、rs_listとconfig_urlを同時に指定することはできません。そうしないとエラーが報告されます。rs_listとconfig_urlの両方が指定されていない場合、obshellノードがOceanBaseクラスタを管理している場合、デプロイされたOBProxyはそのクラスタへの自動関連付けを試みます。
実行結果
| パラメータ | タイプ | 説明 |
|---|---|---|
| successful | bool | リクエストが成功したかどうかを示します。 |
| timestamp | time.Time | サーバーがリクエストを完了したタイムスタンプです。 |
| duration | int | サーバーがリクエストを処理した時間(ミリ秒)です。 |
| status | int | HTTP Status規格に準拠するエンコードです。 |
| traceId | string | リクエストのトレースIDです。 |
| data | DagDetailDTO | 詳細は以下のDagDetailDTO情報のデータ構造を参照してください。 |
| error | ApiError | リクエストによって生成されたエラーで、以下の情報が含まれます:
|
DagDetailDTO情報のデータ構造は以下のとおりです:
| パラメータ | タイプ | 説明 |
|---|---|---|
| id | string | DAG共通ID。 |
| dag_id | int | DAGのIDであり、OceanBaseデータベースに記録される主キーです。 |
| name | string | DAGの名前。 |
| stage | int | DAGの現在の実行段階。 |
| max_stage | int | DAG実行過程における総段階数。 |
| state | string | DAGの実行状態。 |
| operator | string | DAG実行操作タイプ。 |
| start_time | time.Time | DAG実行開始時間。 |
| end_time | time.Time | DAG実行終了時間。 |
| additional_data | map[string]any | DAGその他のデータ。 |
| nodes | []NodeDetailDTO | DAG内のすべてのノード情報。詳細はNodeの詳細情報を取得するを参照してください。 |
例
リクエスト例
POST 10.10.10.1:2886/api/v1/obproxy
ここでは、10.10.10.1:2886ノードに対してOBProxyのデプロイリクエストを送信し、OBProxyがrs_listモードでクラスタに関連付けられる(Root Serviceリストは10.10.10.1:2881;10.10.10.2:2881;10.10.10.3:2881)場合を例とします。実際の状況に応じて、この例を変更することができます。
{
"home_path": "/data/obproxy",
"name": "myobproxy",
"sql_port": 2883,
"exporter_port": 2884,
"rpc_port": 2885,
"rs_list": "10.10.10.1:2881;10.10.10.2:2881;10.10.10.3:2881",
"proxyro_password": "********",
"obproxy_sys_password": "********",
"parameters": {
"server_tcp_keepidle": "5",
"enable_strict_kernel_release": "false"
}
}
レスポンス例
{
"successful": true,
"timestamp": "2025-03-20T15:14:17.002389679+08:00",
"duration": 97,
"status": 200,
"traceId": "55930ebf755250c8",
"data": {
"id": "40194912107080887",
"dag_id": 7,
"name": "Add obproxy",
"stage": 1,
"max_stage": 4,
"state": "READY",
"operator": "RUN",
"start_time": "2025-03-20T15:14:17.000250481+08:00",
"end_time": "2025-03-20T15:14:17.000250481+08:00",
"additional_data": null,
"nodes": null
}
}
関連ドキュメント
コマンドラインからAPIを呼び出す以外に、SDKメソッドを使用してAPIを呼び出すこともできます。obshell-sdk-pythonを使用したAPIメソッドのリクエスト方法の詳細については、OBProxyのデプロイを参照してください。