首批通过分布式安全可靠测评,为关键业务系统打造
使用 obd 部署 ODP
更新时间:2026-07-22 16:51:01
本文介绍如何使用 obd 部署 ODP,其步骤如下:
检查安装环境
选择合适版本
通过 obd 安装
安装后检查
您也可以通过以下方式部署 ODP:
通过 OCP 安装部署 ODP 请参考 使用 OCP 部署 ODP。
通过命令行安装部署 ODP 请参考 通过命令行部署 ODP。
前提条件
平台:X86_64、ARM
操作系统:Linux Redhat 5u|6u|7u x86-64 及以上
CPU:ODP 启动成功后,CPU 占用 0.7 C 左右
内存:ODP 启动成功后,内存占用 100 M 左右
磁盘空间:对磁盘大小没有特别需求,根据数据大小决定,推荐 10G 及以上
OceanBase 集群:您需至少准备一个 OceanBase 集群,详细信息请参考 OceanBase 数据库文档 中 部署数据库 章节。
(可选)obconfigserver:若您部署了 obconfigserver,可通过配置 obproxy_config_server_url 启动 ODP,此时的 ODP 可代理 obconfigserver 中注册的所有集群。
选择合适版本
如果只是学习使用,一般安装最新的版本即可。如果是生产环境,建议关注每个版本的功能迭代和 bugfix 情况。
ODP 的代码已经开源,在 OceanBase 开源项目中找到 OBProxy 项目,点击 Releases 可以查看每个版本的详细信息。ODP 每个版本都经过了功能测试、压力测试和性能测试,可以放心使用。
操作步骤
注意
以下内容以 x86 架构的 CentOS Linux 7.9 镜像作为环境,其他环境可能略有不同。
部署 ODP 之前,为了数据安全,建议您切换到非 root 用户。
步骤 1:下载安装 obd
按照以下步骤下载并安装 obd。 如您的机器可以访问公网,并能够添加三方 YUM 软件源,您可以运行以下命令,使用 OceanBase 的官方软件源安装 obd:
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo
sudo yum install -y ob-deploy
source /etc/profile.d/obd.sh
如果您的机器无法访问公网,可使用其他机器通过官网 OceanBase 软件下载中心 下载 obd 安装包,之后将该安装包传入您所使用的机器进行安装,具体介绍可参见官网《OceanBase 安装部署工具》文档 快速上手/安装并配置 obd。
步骤 2:修改配置文件
obd 安装成功后,可在 /usr/obd/example/ 目录下查看 obd 提供的配置文件,并根据需要选择合适的配置文件。此处以配置文件 example/obproxy/obproxy-only-example.yaml 为例:
obproxy-ce:
version: 4.2.0.0
servers:
- 10.10.10.1
global:
listen_port: 2883 # External port. The default value is 2883.
prometheus_listen_port: 2884 # The Prometheus port. The default value is 2884.
home_path: /home/admin/obproxy
obproxy_config_server_url: http://10.10.10.1:8080/services?Action=GetObProxyConfig
# rs_list: 10.10.10.1:2881;10.10.10.2:2881;10.10.10.3:2881
enable_cluster_checkout: false
skip_proxy_sys_private_check: true
enable_strict_kernel_release: false
cluster_name: obcluster
obproxy_sys_password: ****** # obproxy sys user password, can be empty. When a depends exists, obd gets this value from the oceanbase-ce of the depends.
observer_sys_password: ****** # proxyro user pasword, consistent with oceanbase-ce's proxyro_password, can be empty. When a depends exists, obd gets this value
| 配置项 | 是否必选 | 默认值 | 说明 |
|---|---|---|---|
| version | 可选 | 默认为最新版本 | 待安装组件的版本,使用该配置项可以指定部署的 ODP 的版本;未配置的情况下,obd 默认部署最新版本 ODP。 |
| servers | 必选 | 无 | 每台机器需要用 - name: 机器标识名 (换行)ip: 机器 IP 指定,多个机器就指定多次,机器标识名不能重复。在机器 IP 不重复的情况下,也可以使用 - <ip> (换行)- <ip> 的格式指定,此时 - <ip> 的格式相当于 - name: 机器 IP(换行)ip: 机器 IP。 |
| listen_port | 必选 | 2883 | ODP 监听端口,默认 2883。 |
| prometheus_listen_port | 必选 | 2884 | ODP prometheus 监听端口,默认 2884。 |
| home_path | 必选 | 无 | ODP 安装路径。 |
| obproxy_config_server_url | 可选 | 无 | obconfigserver 的 url,配置后可使用 ODP 代理 obconfigserver 中注册的所有集群。若未部署 obconfigserver,您也可使用 rs_list 配置项。 |
| rs_list | 可选 | 无 | OceanBase 集群的 OBServer 节点列表,格式为 ip:mysql_port;ip:mysql_port,使用 rs_list 配置部署的情况下您只可代理所配置的这一个集群。
注意
|
| enable_cluster_checkout | 可选 | true | 控制是否需要校验 cluster name,开启后,ODP 会在登陆时发送集群名到 OBServer 节点进行检查。 |
| enable_strict_kernel_release | 必选 | false | 是否需要校验 OS 内核,如果为 true,则 ODP 仅支持 5u/6u/7u 版本的 RedHat。为 false 时不关心 Linux 内核版本的发布,ODP 可能不稳定。 |
| cluster_name | 可选 | 无 | 表示 ODP 可以代理的 OceanBase 集群的名字,当存在依赖项时,obd 将会从依赖项 oceanbase-ce 中获取该值。 |
| obproxy_sys_password | 可选 |
|
ODP 管理员账户(root@proxysys)的密码。使用 obd V2.1.0 及之后版本时,未设置的情况下会自动生成随机字符串,可在部署成功后通过 obd cluster edit-config 命令查看配置文件中对应的配置项获取密码。 |
| observer_sys_password | 可选 | 同时部署 OceanBase 数据库时默认与 proxyro_password 相同,单独部署时根据 obd 版本不同有如下两种情况:
|
ODP 连接 OceanBase 集群使用的账户名(proxyro@sys)的密码,配置密码需和 OceanBase 数据库中 proxyro_password 的值相同。若和 proxyro_password 的值不同,部署集群后无法使用 ODP 代理连接 OceanBase 数据库。 |
步骤 3:部署 ODP
若您的机器可以访问公网,则直接执行第 4~5 步,若您的机器无法访问公网,则需先通过 Releases 页面或官网 OceanBase 软件下载中心 下载 ODP 安装包,之后将该安装包复制到本地镜像库,具体操作如下。
说明
本步骤中提到的 obd 命令的具体介绍可参见官网《OceanBase 安装部署工具》文档 obd 命令/集群命令组 一文。
执行如下命令禁用远程镜像仓库:
obd mirror disable <mirror repo name>其中,参数
mirror repo name为需禁用的镜像仓库名。如果指定为remote,则会禁用所有远程镜像仓库。执行如下命令将 ODP 安装包复制到本地镜像库:
obd mirror clone <path> [-f]其中,参数
path为 RPM 包的路径。选项-f表示--force,为可选选项,默认不开启。开启时,若镜像已经存在,则强制覆盖已有镜像。执行以下命令,查看本地镜像库的 RPM 列表:
obd mirror list local执行如下命令部署 ODP:
obd cluster deploy <deploy_name> -c <deploy_config_path>其中,参数
deploy_name为部署集群名称,可以理解为配置文件的别名,deploy_config_path为配置文件路径。说明
在线安装时,执行了
obd cluster deploy命令之后,obd 将检查本地镜像库是否有 ODP 安装包。如果没有安装包,obd 将自动从 yum 源获取。执行如下命令启动 ODP:
obd cluster start <deploy_name>
步骤 4:安装后检查
通过如下命令查看部署情况:
obd cluster display <deploy_name> # 示例 [admin@test ~]$ obd cluster display obtest Get local repositories and plugins ok Open ssh connection ok Cluster status check ok Connect to observer ok Wait for observer init ok +----------------------------------------------+ | observer | +------------+---------+------+-------+--------+ | ip | version | port | zone | status | +------------+---------+------+-------+--------+ | 10.10.10.2 | 4.0.0.0 | 2881 | zone1 | ACTIVE | | 10.10.10.3 | 4.0.0.0 | 2881 | zone2 | ACTIVE | | 10.10.10.4 | 4.0.0.0 | 2881 | zone3 | ACTIVE | +------------+---------+------+-------+--------+ obclient -h10.10.10.2 -P2881 -uroot -p****** -Doceanbase Connect to obproxy ok +----------------------------------------------+ | obproxy | +------------+------+-----------------+--------+ | ip | port | prometheus_port | status | +------------+------+-----------------+--------+ | 10.10.10.1 | 2883 | 2884 | active | +------------+------+-----------------+--------+ obclient -h10.10.10.1 -P2883 -uroot -p****** -Doceanbase通过该命令可以看到
obproxy信息,其中 port 列为 2883 表示提供 SQL 服务的端口是 2883,也就是 JDBC URL 中需要填写的 PORT。通过
obd cluster display命令做过状态检查后,可以使用终端登录到 obproxy 进程所在机器,执行ps -ef | grep obproxy命令查看进程信息。[admin@test ~]# ps -ef | grep obproxy | grep -v grep admin 6868 1 0 Nov12 ? 00:02:09 bash /home/admin/obproxy/obproxyd.sh /home/admin/obproxy 10.10.10.1 2883 daemon admin 6901 1 0 Nov12 ? 00:44:11 /home/admin/obproxy/bin/obproxy --listen_port 2883从上述示例中可以看到两个进程:obproxyd.sh 进程和 obproxy 进程。其中,obproxy 就是 ODP 的进程名,obproxyd.sh 是 ODP 的守护脚本,负责启动 obproxy,对 obproxy 做健康检查,如果 obproxy 进程不存在,obproxyd.sh 会主动拉起进程。
部署常见问题
启动失败
对于 Linux 系统,ODP 通过配置项 enable_strict_kernel_release 控制对操作系统版本的检查,检查不通过会导致启动失败,关键日志如下:
[2021-10-13 10:38:17.235062] WARN [PROXY] get_kernel_release_by_uname (ob_config_server_processor.cpp:1039) [2060][Y0-0] [lt=14] [dc=0] unknown uname release(uinfo.release="4.18.0-80.el8.x86_64", ret=-4016)
您可使用 uname 命令查看内核信息,该选项目前只允许 el 系列和 alios 系列通过,检查策略偏保守型,可能会产生一些误报。其它 linux 系统如果遇到上面问题,可以通过关闭该配置项予以解决。
无法连接 OceanBase 数据库
ODP 通过 proxyro 用户和 OceanBase 数据库建立连接。当该用户不存在或该用户的密码与 ODP 的配置项 observer_sys_password 不一致时,将导致无法连接 OceanBase 数据库,报错如下:
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading authorization packet', system error: 11
此时需要根据具体情况选择不同的解决方法:
该用户不存在
可使用
root@sys用户通过直连的方式进入 OceanBase 数据库,之后在 sys 租户下创建 proxyro 用户。create user proxyro identified by '*******'; grant select on *.* to proxyro;该用户的密码与 ODP 的配置项
observer_sys_password不一致,此时有两种解决方法可使用
root@sys用户通过直连的方式进入 OceanBase 数据库后修改 proxyro 用户的密码,使之与启动 ODP 时设置的observer_sys_password参数密码一致。ALTER USER proxyro IDENTIFIED BY 'password';使用
root@proxysys账号登录 ODP,修改proxyro@sys的密码,修改后需要重启。alter proxyconfig set observer_sys_password = 'password';
注意
上述语句中的 password 需要填写密码的原始值,而非 sha1 后的值。