カラムストアレプリカント(columnstore replica)を使用する場合は、独立したODPをデプロイする必要があります。カラムストアレプリカントに関する情報は、カラムストアレプリカントを参照してください。
OceanBaseデータベースプロキシ(OceanBase Database Proxy、略称:ODP、またはOBProxy)は、OceanBaseが提供するデータベースプロキシミドルウェアで、接続プーリング管理、ロードバランシング、フェールオーバーなどの機能を提供します。OBProxyはオプションのコンポーネントです。そのデプロイの可否は、アプリケーションのニーズやシナリオによって異なります。
この記事では、RPMパッケージを使用してOBProxyをインストールする方法を説明します。
注意
- OBProxyは任意のマシンにデプロイされた後、
ip:portを外部に公開することにより、OceanBaseのプロキシサービスを提供します。ユーザーはMySQLデータベースへのアクセスと同様に、ip:portを通じてOceanBaseデータベースにアクセスできます。一般的には、OBServerノードへのデプロイが推奨されます。 - 1台のマシンに1つのOBProxyサービスのみをデプロイし、予約済みのポート
2883を使用することを推奨します。同一マシンに複数のOBProxyサービスをデプロイする場合は、異なるポートと異なる設定ファイルパスを指定して区別する必要があります。ポートは3306または1521、あるいは他のポートにカスタマイズできます。
操作手順
ステップ1:OBProxyのRPMパッケージのインストール
ここで $rpm_dir はRPMパッケージを格納しているディレクトリを表し、$rpm_name はRPMパッケージの名前を表します。
[root@xxx /]# cd $rpm_dir
[root@xxx $rpm_dir]# rpm -ivh $rpm_name
説明
OBProxyソフトウェアは、デフォルトで /opt/taobao/install ディレクトリにインストールされます。他のディレクトリを指定する必要がある場合は、--prefix パラメータを設定して指定できます。例えば、/home/admin ディレクトリにインストールする場合、rpm -ivh --prefix=/home/admin $rpm_name とします。
例:
[root@xxx admin]# rpm -ivh obproxy-4.0.0-20230109154442.el7.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:obproxy-4.0.0-20230109154442.el7 ################################# [100%]
ステップ2:ディレクトリの設定
(オプション) obproxyへのシンボリックリンクを作成します。
説明
obproxyへのシンボリックリンクを作成することで、バージョン情報を隠蔽し、以降の操作を容易にできます。
obproxyのインストールディレクトリは
/opt/taobao/installです。obproxyプロセスのホームディレクトリは/opt/taobao/install/obproxyで、これはシンボリックリンクであり、対応するobproxyバージョンのソフトウェアディレクトリへのリンクです。[root@xxx admin]# su - admin -bash-4.2$ cd /opt/taobao/install -bash-4.2$ ls ajdk-8.3.6-b129 obproxy-4.0.0 # obproxyへのシンボリックリンクの作成 -bash-4.2$ sudo ln -s obproxy-4.0.0 obproxy [sudo] password for admin: -bash-4.2$ ll total 8 drwxr-xr-x 9 root root 4096 Sep 26 15:24 ajdk-8.3.6-b129 lrwxrwxrwx 1 root root 13 Jan 29 16:51 obproxy -> obproxy-4.0.0 drwxr-xr-x 5 admin admin 4096 Jan 29 16:42 obproxy-4.0.0 --obproxyの所有者とグループをadminに変更します。 [root@xxx install]# chown -R admin:admin obproxy [root@xxx install]# ll total 8 drwxr-xr-x 9 root root 4096 Sep 26 15:24 ajdk-8.3.6-b129 lrwxrwxrwx 1 admin admin 13 Jan 29 16:51 obproxy -> obproxy-4.0.0 drwxr-xr-x 5 admin admin 4096 Jan 29 16:42 obproxy-4.0.0obproxyプロセスの実行ログディレクトリを作成します。
obproxyプロセスの実行ログディレクトリは、シンボリックリンクによって
/home/admin/logs/obproxy/logにリンクされています。[root@xxx admin]# su - admin #ログディレクトリの作成 -bash-4.2$ mkdir -p /home/admin/logs/obproxy/log #obproxyプロセスディレクトリの状況確認 -bash-4.2$ tree /opt/taobao/install/obproxy /opt/taobao/install/obproxy |-- bin | |-- obp_xflush.py | |-- obproxy | |-- obproxyd.sh | `-- unzip.py |-- lib | |-- libgpr.so.7 | |-- libgrpc++.so.1 | |-- libgrpc++_cronet.so.1 | |-- libgrpc.so.7 | |-- libgrpc_cronet.so.7 | |-- libobproxy_so.so | |-- libprotobuf.so.18 | `-- libstdc++.so.6 |-- log -> /home/admin/logs/obproxy/log |-- minidump -> /home/admin/logs/obproxy/minidump |-- start_obproxy.sh `-- tools |-- dump_syms |-- log4cplus.conf |-- minidump.sh |-- minidump_stackwalk `-- obproxy.sym 3 directories, 20 files
ステップ3:OBProxyアカウントの初期化
OBProxyはバックエンドのOBServerノードとの通信を維持する必要があります。そのため、OceanBaseクラスタのsysテナントでOBProxy接続用のユーザー(proxyro)とパスワードを事前に作成する必要があります。その後、OBProxyの起動時にproxyの起動パラメータを設定して、これらの情報をproxyに通知します。
説明
proxyroユーザーは、OBProxyがOceanBaseクラスタにアクセスするためのユーザーです。1つのOceanBaseクラスタに対して1つのproxyroアカウントが対応します。
例:
proxyroユーザーを作成し、SELECT 権限を付与します。
$obclient -hxxx.xxx.xxx.1 -P2881 -uroot@sys -p******
obclient [(none)]> CREATE USER proxyro IDENTIFIED BY '******';
Query OK, 0 rows affected
obclient [(none)]> GRANT SELECT ON *.* TO proxyro;
Query OK, 0 rows affected
obclient [(none)]> SHOW GRANTS FOR proxyro;
+----------------------------------+
| Grants for proxyro@% |
+----------------------------------+
| GRANT SELECT ON *.* TO 'proxyro' |
+----------------------------------+
1 row in set
ステップ4:OBProxyの起動
注意
OBProxyを起動する際は、adminユーザーでOBProxyソフトウェアのホームディレクトリから実行してください。他のユーザーまたは他のディレクトリから起動すると問題が発生する可能性があります。
OBProxyの起動時にOceanBaseクラスタの位置を指定する必要があります。これは
rootservice_listパラメータによって指定します。起動コードは次のとおりです:
cd /opt/taobao/install/obproxy && bin/obproxy -r "xxx.xxx.xxx.1:2881;xxx.xxx.xxx.2:2881;xxx.xxx.xxx.3:2881" -p 2883 -o "observer_sys_password=$sha1_value,enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false" -c cluster_name説明
$sha1_valueは、実際に設定したパスワードに置き換える必要があります。proxyの起動パラメータの設定で、設定するパスワードはsha1ハッシュ化後の値であり、元の値ではありません。例えば、proxyroユーザーのパスワードが123456の場合、observer_sys_passwordの値を7c4a8d09ca3762af61e59520943dc26494f8941bにする必要があります。- 例に示すIPアドレスは匿名化処理されていますが、インストールの要件ではありません。起動時には、ご自身のマシンの実際のIPアドレスを入力してください。
パラメータの説明:
パラメータ 説明 -rOBServerノードのIPアドレスとポートを指定します。 -pサービスポート番号を指定します。通常は 2883を指定します。-cクラスタ名を指定します。 -oハードウェアまたはカーネルパラメータの設定を指定します。 例:
[root@xxx admin]# su - admin -bash-4.2$ cd /opt/taobao/install/obproxy && bin/obproxy -r "xxx.xxx.xxx.1:2881" -p 2883 -o "observer_sys_password=7c4a8d09ca3762af61e59520943dc26494f8941b,enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false" -c test3241 bin/obproxy -r xxx.xxx.xxx.1:2881 -p 2883 -o observer_sys_password=7c4a8d09ca3762af61e59520943dc26494f8941b,enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false -c test3241 rs list: xxx.xxx.xxx.1:2881 listen port: 2883 optstr: observer_sys_password=7c4a8d09ca3762af61e59520943dc26494f8941b,enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false cluster_name: test3241起動後、プロセスが存在するかどうかを確認します。
ps -ef|grep obproxy例:
[root@xxx admin]# ps -ef|grep obproxy admin 79111 0 6 17:32 ? 00:00:58 bin/obproxy -r xxx.xxx.xxx.1:2881 -p 2883 -o observer_sys_password=7c4a8d09ca3762af61e59520943dc26494f8941b,enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false -c test3241
次の操作
OceanBaseデータベースへの接続
OBProxyを介して接続する場合は、ユーザー名のフォーマットにユーザー名、テナント名、クラスタ名を含める必要があります。フォーマットは以下のとおりです: ユーザー名@テナント名#クラスタ名 または クラスタ名:テナント名:ユーザー名。
例:
ユーザー名@テナント名#クラスタ名 でOceanBaseデータベースに接続します。
[admin@xxx /home/admin] $obclient -hxxx.xxx.xxx.1 -P2883 -uroot@sys#test3241 -p****** Welcome to the OceanBase. Commands end with ; or \g. ... Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. obclient [(none)]>クラスタ名:テナント名:ユーザー名 でOceanBaseデータベースに接続します。
[admin@xxx /home/admin] $obclient -hxxx.xxx.xxx.1 -P2883 -utest3241:sys:root -p****** Welcome to the OceanBase. Commands end with ; or \g. ...... Copyright (c) 2000, 2018, OceanBase and/or its affiliates. All rights reserved. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. obclient [(none)]>
(オプション) OBProxyパラメータの調整
サーバーの状況に応じて、OBProxyパラメータの値を調整して、実行ログの量やCPU消費などの情報を設定できます。
例:
以下はOBProxyの実行ログの量またはCPU消費を低減するためのパラメータ設定です。
obclient [(none)]> ALTER PROXYCONFIG SET slow_proxy_process_time_threshold='1000ms';
Query OK, 0 rows affected
obclient [(none)]> ALTER PROXYCONFIG SET xflush_log_level=ERROR;
Query OK, 0 rows affected
obclient [(none)]> ALTER PROXYCONFIG SET syslog_level=WARN;
Query OK, 0 rows affected
obclient [(none)]> ALTER PROXYCONFIG SET enable_compression_protocol=false;
Query OK, 0 rows affected
obclient [(none)]> SHOW PROXYCONFIG LIKE '%compress%'\G
*************************** 1. row ***************************
name: enable_compression_protocol
value: False
info: if enabled, proxy will use compression protocol with server
need_reboot: false
visible_level: USER
*************************** 2. row ***************************
name: enable_syslog_file_compress
value: False
info: Whether to enable archive log compression
need_reboot: false
visible_level: SYS
2 rows in set
関連ドキュメント
- OBProxyのデプロイの詳細については、デプロイ方法を参照してください。
- OBProxyのパラメータ調整の詳細については、構成パラメータの説明を参照してください。
- OBProxyを介したOceanBaseデータベースへの接続の詳細については、接続管理を参照してください。