首批通过分布式安全可靠测评,为关键业务系统打造
单地域多节点部署
更新时间:2026-04-14 15:36:11
本文为您介绍如何在单地域多节点中使用 OMS 社区版部署工具安装 OceanBase 迁移服务(OceanBase Migration Service,OMS)社区版。
背景信息
为了实现多节点部署,您可以先进行单节点部署,然后再扩容至多节点。
如果您选择有配置文件的部署方式,请注意单节点部署和多节点部署的配置信息(
config.yaml中的配置信息)略有不同,详情请参见下文《配置文件的模板和示例》。在多节点部署环境中,您需要申请 VIP 作为 OMS 社区版管理控制台的挂载点。同时,您需要在 VIP 网络策略上配置 8088 和 8089 端口的映射规则。
申请 VIP 后,即使有 OMS 社区版节点故障,您依然可以通过 VIP 访问 OMS 社区版的管理控制台。
前提条件
确认安装环境符合系统和网络要求,详情请参见 系统和网络要求。
已准备 MetaDB 集群作为 OMS 社区版的元信息库。
已确认在进行部署的机器能够连通多节点中其它的所有机器。
多节点部署场景下,请确保网络相互连通,并且能够通过输入用户名和密码获取到对应节点的 root 权限。
已获取 OMS 社区版安装包,通常安装包为以 oms 开头的
tar.gz文件。下载地址:OceanBase 社区版下载中心。已在每个节点的机器上,加载下载的 OMS 社区版安装包至 Docker 容器的本地镜像仓库。
docker load -i <OMS 社区版安装包>已准备一个 OMS 社区版容器挂载目录,OMS 社区版会在该目录下创建三个映射目录:
/home/admin/logs、/home/ds/store和/home/ds/run,用于存放 OMS 运行时的组件和日志信息。(可选)已准备时序数据库为 OMS 社区版存储性能监控和 DDL/DML 统计数据信息。
名词解释
在后续指南中,部分命令和提示信息存在需要您自行替换的变量名。变量名会使用 <> 包裹,解释如下:
OMS 社区版容器挂载目录:请参见前提条件中 OMS 社区版容器挂载目录的说明。
本机 IP 地址:执行脚本的宿主机的 IP 地址。
OMS_IMAGE:使用 Docker 加载 OMS 社区版安装包后,通过
docker images命令获取到加载的相应镜像的 [IMAGE ID] 或 [REPOSITORY:TAG],即为相应加载后镜像的唯一标识符<OMS_IMAGE>。示例如下:$sudo docker images REPOSITORY TAG IMAGE ID work.oceanbase-dev.com/obartifact-store/oms feature_4.0.0-ce 2786e8a6eccd则
<OMS_IMAGE>可以是:work.oceanbase-dev.com/obartifact-store/oms:feature_4.0.0-ce或2786e8a6eccd。在后续指南中请替换相关命令中的 <OMS_IMAGE> 为上述值。已有
config.yaml配置文件地址:如果您需要根据现有的config.yaml配置文件进行部署,该地址为现有配置文件的地址。
多节点部署架构
下图为多节点部署的架构,Store 为增量拉取组件,Incr-Sync 为增量同步组件。当 OMS 社区版 A 发生单点故障时,运行在 OMS 社区版 A 上的 Store/Incr-Sync 组件进程会被高可用服务守护,并动态切换至 OMS 社区版 B 或 OMS 社区版 C 节点上。
注意
高可用功能默认是关闭的。如果您需要保障 Store/Incr-Sync 等组件的高可用能力,请在控制台手动开启。详情请参见 修改高可用功能的配置。

部署流程(无配置文件)
登录 OMS 社区版部署服务器。
(可选)部署时序数据库。
如果您需要 OMS 社区版能够收集和展示监控数据,请部署时序数据库。如果无需展示监控数据,请跳过本步骤。操作详情请参见 部署时序数据库。
执行下述命令,从加载的镜像中获取部署脚本
docker_remote_deploy.sh。sudo docker run -d --name oms-config-tool <OMS_IMAGE> bash && sudo docker cp oms-config-tool:/root/docker_remote_deploy.sh . && sudo docker rm -f oms-config-tool示例如下:
sudo docker run -d --net host --name oms-config-tool work.oceanbase-dev.com/obartifact-store/oms:feature_4.0-ce bash && sudo docker cp oms-config-tool:/root/docker_remote_deploy.sh . && sudo docker rm -f oms-config-tool通过部署脚本启动部署工具。
bash docker_remote_deploy.sh -o <OMS 社区版容器挂载目录> -i <本机 IP 地址> -d <OMS_IMAGE>此时,OMS 社区版部署工具会自动校验 CPU、Memory 和 Disk 三项配置的资源。其中任意一项资源不达标,则提示对应资源不足,影响数据迁移速度。
根据工具提示完成部署,每次输入后,通过回车进入下一步。
请选择部署模式。
此处请选择 单地域多节点 选项。
请选择您所需要进行的任务。
此处请选择 无配置文件,全新部署 OMS,从生成配置文件开始。
请输入下述 MetaDB 集群配置信息:
根据提示依次输入元信息数据库的 IP、端口、用户名和密码。
注意
元信息数据库用户的密码不能为空,并且不支持特殊字符(包括换行、空格,以及 |"'`()=;/&[]{})。
请为 OMS 社区版元数据库设置前缀。
例如,当前缀设置为 oms 时,最终创建的元数据库名分别为 oms_rm、oms_cm 和 oms_cm_hb。
请确认配置信息。
此处输入 y,表示确认上述配置信息无误。输入 n,请重新输入配置信息。
如果出现 元数据库中对应数据库名已存在!这样可以吗? 提示,说明 MetaDB 集群中已存在您输入的数据库名称。该情况可能是由于重复部署或执行 OMS 社区版升级导致,请您自行确认后,输入 y 继续部署,或输入 n 重新输入配置信息。
如果输入 y,会提示您 元数据库中对应数据库名已存在,是否需要重新初始化元信息库。此处输入 y,表示需要重新初始化元信息库。
请输入下述 OMS 社区版的集群配置信息:
设置是否自定义组件端口号,并配置相关参数。
此处输入 y,表示需要进行自定义组件端口号配置,请根据界面提示,依次输入 Nginx、GHANA、CM、Supervisor 和 sshd 服务端口。
请输入 OMS 社区版集群管理服务的地址,即当前地域所有 CM 机器挂载的同一个 VIP 或域名,原配置项名称为
cm-url。请输入 VIP 域名,作为
cm-url地址。您可以依次输入 URL 中 IP 地址和端口号,也可以使用英文冒号(:)相连,一次性输入 <IP 地址>:<端口号>。说明
地址前的
http://前缀为可选。请依次输入本地域中所有机器的 IP 地址,使用英文逗号(,)分隔。
请确认展示的 OMS 社区版集群配置信息。
如果确认无误,请输入 y。如果需要修改,请输入 n。
请确认是否需要对 OMS 社区版历史数据进行监控。
如果在 (可选)部署时序数据库 步骤选择部署时序数据库,请在该步输入 y,并跳转至 配置时序数据库 步骤,开启对 OMS 社区版历史数据的监控。
如果在 (可选)部署时序数据库 步骤未选择部署时序数据库,请在该步输入 n,则跳转至 是否开启审计日志功能,并配置相关 SLS 参数 步骤。此时,部署后的 OMS 社区版不具备监控历史数据的功能。
配置时序数据库。
请输入下述时序数据库的配置信息:
是否有已部署好的时序数据库服务?
请根据实际情况填写。如果有,请输入 y。如果没有,则输入 n。
请选择时序数据库的类型:选择 “INFLUXDB”。
注意
目前仅支持时序数据库 INFLUXDB。
请根据提示依次输入时序数据库的 URL、用户名和密码。
请确认展示的所有配置项信息。
如果确认无误,请输入 y。如果需要修改,请输入 n。
是否需要开启 OMS 社区版审计日志功能,并将审计日志写入 SLS 服务?
如果输入 y,表示开启审计日志功能。此时,跳转至 输入 SLS 参数信息 步骤。
如果输入 n,则正式开始部署。此时,部署后的 OMS 社区版不具备审计日志功能。
输入 SLS 参数信息。
根据提示信息输入 SLS 的各项参数配置。
请确认展示的所有配置项信息。
如果确认无误,请输入 y。如果需要修改,请输入 n。
如果配置文件检查通过,会为您展示所有的配置信息。如果确认无误,请输入 n。如果需要修改,请输入 y。
如果配置文件未检查通过,请根据提示修改配置信息。
依次对每个节点进行部署配置并执行。
请输入节点 <节点 IP> 上预备部署 OMS 社区版的挂载目录:
请输入一个有较大容量的目录作为 OMS 社区版容器的挂载目录。
请确认部署 OMS 社区版的镜像名为 <OMS_IMAGE> 是否可以。
如果确认无误,请输入 y。如果需要修改,请输入 n。
请确认是否需要在 OMS 社区版容器中挂载 HTTPS 证书。
如果需要,请输入 y,并根据提示输入 https_key、https_crt 目录。如果不需要,请输入 n。
如果该节点是远程节点,会检查到待部署节点与当前执行部署工具所在机器 IP 不一致,是否远程执行脚本(需要远程节点能够通过 SSH 连接,用户具有远程节点上的
sudo权限)。如果输入 y,请确认节点的端口是否能够通过 SSH 连通。设置为支持连通后,请根据界面提示依次输入远程节点登录的用户名和密码。
当您输入的密码为空时,会提示您输入了空密码,是否使用信任登录方式。如果输入 y,请重新输入节点用户
sudo的密码(如果无需密码,直接回车即可)。请确认 <节点 IP> 下的配置文件 config.yaml 将写入的路径是否可以。
如果确认无误,请输入 y。如果需要修改,请输入 n。
开始执行部署。
执行部署过程中,您可以执行命令
docker logs -f <OMS 社区版容器名>查看初始化执行情况。如果您需要查看所有启动初始化日志,可以执行命令
docker logs <OMS 社区版容器名>。如果部署失败,您可以登录至运行的 OMS 容器中,查看
/home/admin/logs目录下以docker_init为前缀的.log文件,获取日志信息。如果 OMS 容器未成功启动,则无法获取日志。
部署流程(有配置文件)
登录 OMS 社区版部署服务器。
(可选)部署时序数据库。
如果您需要 OMS 社区版能够收集和展示监控数据,请部署时序数据库。如果无需展示监控数据,请跳过本步骤。操作详情请参见 部署时序数据库。
执行下述命令,从加载的镜像中获取部署脚本
docker_remote_deploy.sh。sudo docker run -d --name oms-config-tool <OMS_IMAGE> bash && sudo docker cp oms-config-tool:/root/docker_remote_deploy.sh . && sudo docker rm -f oms-config-tool通过部署脚本启动部署工具。
bash docker_remote_deploy.sh -o <OMS 社区版容器挂载目录> -c <已有 config.yaml 配置文件地址> -i <本机 IP 地址> -d <OMS_IMAGE>此时,OMS 社区版部署工具会自动校验 CPU、Memory 和 Disk 三项配置的资源。其中任意一项资源不达标,则提示对应资源不足,影响数据迁移速度。
说明
-c后的已有 config.yaml 配置文件地址必须是绝对路径。config.yaml配置文件的设置请参见下文《配置文件的模板和示例》模块。
根据工具提示完成部署,每次输入后,通过回车进入下一步。
请选择部署模式。
此处请选择 单地域多节点 选项。
请选择您所需要进行的任务。
此处请选择 已通过脚本 [-c] 选项传入参考配置文件,基于参考配置文件开始配置。
如果出现 元数据库中对应数据库名已存在!这样可以吗? 提示,说明原配置文件的 MetaDB 中已存在您输入的数据库名称。该情况可能是由于重复部署或执行 OMS 升级导致,请您自行确认后,输入 y 继续部署,或输入 n 重新输入配置信息。
如果配置文件检查通过,会为您展示所有的配置信息。如果确认无误,请输入 n。如果需要修改,请输入 y。
如果配置文件未检查通过,请根据提示修改配置信息。
依次对每个节点进行部署配置并执行。
请输入节点 <节点 IP> 上预备部署 OMS 社区版容器的挂载目录:
请输入一个有较大容量的目录作为 OMS 社区版容器的挂载目录。
如果该节点是远程节点,此时会提示输入远程节点登录的用户名和密码。需要对应用户具有远程节点上 sudo 权限。
请确认部署 OMS 社区版的镜像名为 <OMS_IMAGE> 是否可以。
如果确认无误,请输入 y。如果需要修改,请输入 n。
请确认是否需要在 OMS 社区版容器中挂载 HTTPS 证书。
如果需要,请输入 y,并根据提示输入 https_key、https_crt 目录。如果不需要,请输入 n。
如果该节点是远程节点,会检查到待部署节点与当前执行部署工具所在机器 IP 不一致,是否远程执行脚本(需要远程节点能够通过 SSH 连接,用户具有远程节点上的
sudo权限)。如果输入 y,请确认节点的端口是否能够通过 SSH 连通。设置为支持连通后,请根据界面提示依次输入远程节点登录的用户名和密码。
当您输入的密码为空时,会提示您输入了空密码,是否使用信任登录方式。如果输入 y,请重新输入节点用户
sudo的密码(如果无需密码,直接回车即可)。请确认 <节点 IP> 下的配置文件 config.yaml 将写入的路径是否可以。
如果确认无误,请输入 y。如果需要修改,请输入 n。
如果部署失败,您可以登录至运行的 OMS 社区版容器中,查看
/home/admin/logs目录下以docker_init为前缀的.log文件,获取日志信息。如果 OMS 容器未成功启动,则无法获取日志。
部署完成后,如果您需要修改配置,请进行以下操作:
注意
单地域多节点场景下,您需要对每个节点的配置都进行手动修改。
登录至运行的 OMS 社区版容器。
根据业务需求,修改
/home/admin/conf/config.yaml文件。进入
/root目录,执行命令python -m omsflow.scripts.units.oms_init_manager --init-config-file。执行命令
supervisorctl restart oms_console oms_drc_supervisor。
配置文件的模板和示例
配置文件模板
注意
多节点部署时,各个节点需要使用相同的配置文件。配置文件中的
cm_nodes必须同时指定多个节点的 IP 地址,且cm_url需要配置为 8088 端口对应的 VIP 地址。模板中的必填参数需要替换为您部署的目标环境的实际值。本文已将可选参数进行注释,您可以根据实际情况选择性修改。
config.yaml文件中的 Key: Value,冒号后面必须加一个空格。
# OMS 元数据库信息
oms_meta_host: ${oms_meta_host}
oms_meta_port: ${oms_meta_port}
oms_meta_user: ${oms_meta_user}
oms_meta_password: ${oms_meta_password}
# 用户可以自定义以下三个数据库的名称,OMS 社区版部署时会在元信息库中创建出这三个数据库
drc_rm_db: ${drc_rm_db}
drc_cm_db: ${drc_cm_db}
drc_cm_heartbeat_db: ${drc_cm_heartbeat_db}
# OMS 社区版集群配置
# 单地域多节点部署时,cm_url 需要配置为当前地域所有 CM 隶属的一个 VIP 或域名下
cm_url: ${cm_url}
cm_location: ${cm_location}
# 单地域部署时,无需设置 cm_region
# cm_region: ${cm_region}
# 单地域部署时,无需设置 cm_region_cn
# cm_region_cn: ${cm_region_cn}
cm_is_default: true
cm_nodes:
- ${host_ip1}
- ${host_ip2}
# 时序数据库配置
# 默认值为 false。如果您需要开启指标汇报功能,请设置为 true,并取消该参数前的注释
# tsdb_enabled: false
# 当 tsdb_enabled 为 true 时,请取消下述参数的注释并根据实际情况填写
# tsdb_service: 'INFLUXDB'
# tsdb_url: '${tsdb_url}'
# tsdb_username: ${tsdb_user}
# tsdb_password: ${tsdb_password}
# 用户自定义组件端口号
# 指定 GHANA 服务的端口号
ghana_server_port: xxxxx
# 指定 Nginx 服务的端口号
nginx_server_port: xxxxx
# 指定 CM 服务的端口号
cm_server_port: xxxxx
# 指定 Supervisor 服务的端口号
supervisor_server_port: xxxxx
# 指定 sshd 服务的端口号
sshd_server_port: xxxxx
配置参数说明
| 参数 | 描述 | 是否必选 |
|---|---|---|
| oms_meta_host | 元信息库的 IP 地址,可以是 MySQL 数据库或 OceanBase 数据库 MySQL 兼容模式。 | 必选 |
| oms_meta_port | 元信息库的端口号。 | 必选 |
| oms_meta_user | 元信息库的用户名称。 | 必选 |
| oms_meta_password | 元信息库的用户密码。
注意元信息库的用户密码不能为空,并且不支持特殊字符(包括换行、空格,以及 |"'`()=;/&[]{})。 |
必选 |
| drc_rm_db | 管理控制台的数据库名称。 | 必选 |
| drc_cm_db | 集群管理服务的元数据库名称。 | 必选 |
| drc_cm_heartbeat_db | 集群管理服务的心跳库的名称。 | 必选 |
| cm_url | OMS 社区版集群管理服务的地址。例如,http://VIP:8088。 说明: 单地域多节点部署时, cm_url 需要配置为当前地域所有 CM 隶属的一个 VIP 或域名下。 不建议您使用 http://127.0.0.1:8088,因为该地址无法扩容为多地域多节点模式。 OMS 社区版控制台的访问地址为: 部署 OMS 社区版的宿主机的 IP 地址:8089。例如,http(https)://xxx.xxx.xxx.1:8089。8088 是负责调度的程序端口,8089 是网页地址的端口。 |
必选 |
| cm_location | 地域码,取值范围为 [0,127]。每个地域一个数字,用户自动选择。 | 必选 |
| cm_region | 地域,例如 cn-jiangsu。 注意: 如果是和阿里云 MSHA 产品在容灾双活场景下使用,请使用阿里云的 Region 信息作为 cm_region。 |
可选 |
| cm_region_cn | 地域的中文标识。例如,江苏。 | 可选 |
| cm_nodes | OMS 社区版集群管理服务的机器 IP 列表。多节点场景下,该参数需要指定多个 IP。 | 必选 |
| cm_is_default | 表示是否默认 OMS 社区版集群管理服务。 | 可选,默认值为 true |
| tsdb_service | 表示时序数据库的类型,包括 INFLUXDB 和 CERESDB。 |
可选,默认值为 INFLUXDB |
| tsdb_enabled | 表示是否开启指标汇报的功能(监控能力),包括 true 或 false。 |
可选,默认值为 false |
| tsdb_url | 部署 InfluxDB 的机器地址。当 tsdb_enabled 为 true 时,请根据实际环境修改该参数。 |
可选 |
| tsdb_username | 时序数据库的用户名。当 tsdb_enabled 为 true 时,请根据实际环境修改该参数。 部署时序数据库后,需要您手动创建时序数据库用户,并填写用户名和密码。 |
可选 |
| tsdb_password | 时序数据库的密码。当 tsdb_enabled 为 true 时,请根据实际环境修改该参数。 |
可选 |
| ghana_server_port | 指定 GHANA 服务的端口号。如果未配置,则使用默认端口号 8090。 | 可选 |
| nginx_server_port | 指定 Nginx 服务的端口号。如果未配置,则使用默认端口号 8089。 | 可选 |
| cm_server_port | 指定 CM 服务的端口号。如果未配置,则使用默认端口号 8088。 | 可选 |
| supervisor_server_port | 指定 Supervisor 服务的端口号。如果未配置,则使用默认端口号 9000。 | 可选 |
| sshd_server_port | 指定 sshd 服务的端口号。如果未配置,则使用默认端口号 2023。 | 可选 |
配置文件示例
请根据您部署的目标环境替换参数的实际值。
oms_meta_host: xxx.xxx.xxx.xxx
oms_meta_port: 2883
oms_meta_user: oms_meta_user
oms_meta_password: *********
drc_rm_db: oms_rm
drc_cm_db: oms_cm
drc_cm_heartbeat_db: oms_cm_heartbeat
cm_url: http://VIP:8088
cm_location: 100
cm_region: cn-anhui
cm_region_cn: 安徽
cm_is_default: true
cm_nodes:
- xxx.xxx.xxx.xx1
- xxx.xxx.xxx.xx2
tsdb_service: 'INFLUXDB'
tsdb_enabled: true
tsdb_url: 'xxx.xxx.xxx.xxx:8086'
tsdb_username: username
tsdb_password: ********
ghana_server_port: xxxxx
nginx_server_port: xxxxx
cm_server_port: xxxxx
supervisor_server_port: xxxxx
sshd_server_port: xxxxx