OBProxy 可以将用户发起的数据访问请求转发到正确的 OBServer 上,转发到后端 OBServer 的请求返回数据时,依然要通过 OBProxy 回发给客户端。本文主要介绍通过如何使用 RPM 包安装 OBProxy。
说明
OBProxy 在任何一台机器上部署后,通过向外暴露一个 ip:port 来提供 OceanBase 的代理服务。用户可以像访问 MySQL 数据库一样通过该 ip:port 访问 OceanBase 数据库,一般推荐部署在 OBServer 节点上。
建议一台机器上只部署一个 OBProxy 服务,并且使用约定的 2883 端口。当同一台机器上部署多个OBProxy 服务时,需要指定不同端口和不同的配置文件路径予以区分,端口可以自定义为 3306、1521 或者其他端口。
安装 OBProxy
其中 $rpm_dir 表示存放 RPM 包的目录,$rpm_name 表示 RPM 包的名称。
cd $rpm_dir
sudo rpm -ivh $rpm_name
示例如下:
[admin@test rpm]$ sudo rpm -ivh obproxy-ce-3.2.3-2.el7.x86_64.rpm
Preparing... ################################[100%]
Updating / installing...
1:obproxy-ce-3.2.3-2.el7 ################################[100%]
初始化 OBProxy
OBProxy 需要跟后端 OBServer 节点保持通信,所以需要提前在 OceanBase 集群的 sys 租户下为 OBProxy 创建连接用户(proxyro)和密码。后续在启动 OBProxy 时可通过设置 proxy 启动参数的方式来告知 proxy。
说明
proxyro 用户是 OBProxy 访问 OceanBase 集群的用户。一个 OceanBase 集群对应一个 proxyro 账号。
您可参考如下步骤查看集群中是否存在 proxyro 用户:
通过 IP 直连登录到集群。
obclient -h172.xx.xxx.25 -uroot@sys -P2881 -pxxxxx执行以下命令查看 sys 租户下的用户。
obclient> select user,password from mysql.user; +------------+--------- -----------+ | user | password | +------------+---------------------+ | root | | | ORAAUDITOR | *975xxxxxxxxxxxxx23 | | proxyro | *e32xxxxxxxxxxxxx70 | +------------+---------------------+ 3 rows in set (0.008 sec)若输出结果显示已有 proxyro 用户,可直接执行 启动 OBProxy。若输出结果中无 proxyro 用户,可参考下述命令创建 proxyro 用户。
创建 proxyro 用户。
示例如下:
$ obclient -h172.xx.xxx.25 -uroot@sys -P2881 -pxxxxx obclient> CREATE USER proxyro IDENTIFIED BY '******'; Query OK, 0 rows affected obclient> GRANT SELECT ON *.* TO proxyro; Query OK, 0 rows affected obclient> SHOW GRANTS FOR proxyro; +----------------------------------+ | Grants for proxyro@% | +----------------------------------+ | GRANT SELECT ON *.* TO 'proxyro' | +----------------------------------+ 1 row in set




