使用Docker部署OceanBase、OMS、OCP系统
一、Docker部署OceanBase
部署 OceanBase 数据库的方式有很多,使用 Docker 是其中较方便的一种。本文提供了 OceanBase 数据库的 Docker 镜像 obce-mini。obce-mini 是 OceanBase 数据库社区版的小规格单机体验镜像,仅供研究、学习和评估使用,不适用于生产环境或性能测试场景。
1. 前提条件
在部署 obce-mini 镜像之前,您需要确认以下信息:
- 确保您的机器至少提供 2 核 10GB 以上的资源。
- 您的机器已安装最新版的 Docker,参考 Docker 文档。
- 您的机器已经启动 Docker 服务。
2. 启动数据库实例
运行以下命令,启动 OceanBase 数据库的实例:
docker run -p 2881:2881 --name some-obce -d oceanbase/obce-mini
启动预计需要 2-5 分钟。执行以下命令,如果返回 boot success!
,则启动成功。
$ docker logs some-obce | tail -1
boot success!
3. 连接数据库实例
obce-mini 镜像安装了 OceanBase 数据库客户端 obclient,并提供了默认连接脚本 ob-mysql。
docker exec -it some-obce ob-mysql sys # 连接 sys 租户
docker exec -it some-obce ob-mysql root # 连接用户租户的 root 账户
docker exec -it some-obce ob-mysql test # 连接用户租户的 test 账户
您也可以运行以下命令,使用您本机的 obclient 或者 MySQL 客户端连接实例。
$mysql -uroot -h127.1 -P2881
连接成功后,终端将显示如下内容:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 167310
Server version: 5.7.25 OceanBase 3.1.0 (r-00672c3c730c3df6eef3b359eae548d8c2db5ea2) (Built Jun 22 2021 12:46:28)
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
4. 支持的环境变量
下表列出了当前版本的 obce-mini 镜像支持的环境变量:
变量名称 | 默认值 | 描述 |
---|---|---|
OB_HOME_PATH | /root/ob | OceanBase 数据库实例的部署路径。 |
OB_MYSQL_PORT | 2881 | OceanBase 数据库实例的 MySQL 协议端口。 |
OB_RPC_PORT | 2882 | OceanBase 数据库实例的 RPC 通信端口。 |
OB_ROOT_PASSWORD | empty | OceanBase 数据库实例 sys 租户的密码。 |
OB_CLUSTER_NAME | mini-ce | OceanBase 数据库实例名称,OBD 将使用这个名称作为集群名。 |
OB_TENANT_NAME | test | OceanBase 数据库实例默认初始化的用户租户的名称。 |
5. 运行 Sysbench 脚本
obce-mini 镜像默认安装了 Sysbench 工具,并进行了简单配置。您可以依次执行以下命令,使用默认配置运行 Sysbench 脚本。
docker exec -it some-obce sysbench cleanup # 清理数据
docker exec -it some-obce sysbench prepare # 准备数据
docker exec -it some-obce sysbench run # 进行测试
docker exec -it some-obce sysbench # 依次执行上述三条命令
二、部署社区版OCP云平台
0.安装流程
社区版 OCP 的安装由如下两部分组成:
- 1.部署 MetaDB 和 MonitorDB
MetaDB 和 MonitorDB 是 OCP 依赖的数据库,MetaDB 和 MonitorDB 的创建是指在 OceanBase 上创建两个租户来分别承载 MetaDB 和 MonitorDB。其中 :- MetaDB 用于存储 OCP 的除了监控数据之外的其它持久化数据。
- MonitorDB 用于存储 OCP 在运行过程中采集的管理目标的各种性能数据,主要是 OceanBase 集群的数据。
- 2.部署 OCP
社区版 OCP 以 Docker 的方式运行,通过脚本来实现部署。
- 准备好如下软件包:
软件包 | 说明 |
---|---|
libobclient-2.0.0-2.el7.x86_64.rpmobclient-2.0.0-2.el7.x86_64.rpm | OBClient 的依赖包和安装包。若机器不能访问公网,需提前从 OceanBase 官网下载,请参考如下说明进行下载。适配 Anlios 7、CentOS 7、RedHat 7、Ubuntu 20.X、Debian 9.X 的下载地址为 el7 下载地址。适配 Anlios 8、CentOS 8、RedHat 8、Debian 10 的下载地址为 el8 下载地址。 |
ob-deploy-1.1.0-1.el7.x86_64.rpm | OBD 安装包。若机器不能访问公网,需提前从 OceanBase 官网下载,请参考如下说明进行下载。适配 Anlios 7、CentOS 7、RedHat 7、Ubuntu 20.X、Debian 9.X 的下载地址为 el7 下载地址。适配 Anlios 8、CentOS 8、RedHat 8、Debian 10 的下载地址为 el8 下载地址。 |
obdeploy-master.zip | OB 配置文件 GitHub 下载路径。下载方法:在 <>Code 页签,单击 Code▼ 的绿色按钮,并在下拉框中选择 Download ZIP。 |
ocp-3.1.1-ce.tar.gz | OCP 安装包官网下载路径。 |
1.安装 OBD
官方下载后直接安装
1.在 CentOS 或 RedHat 系统上,执行命令:
yum install ob-deploy-1.1.0-1.el7.x86_64.rpm
2.在 Ubuntu 或 Debian 系统上,执行命令:
apt install alien
alien --scripts -i ob-deploy-1.1.0-1.el7.x86_64.rpm
3.执行如下命令启动 OBD。
source /etc/profile.d/obd.sh
2.部署OceanBase单机
- 1.部署配置文件:
mkdir -p /root/obdeploy-master/example/
touch /root/obdeploy-master/example/mini-single-example.yaml
将 *-example.yaml 中相应的内容复制到新建的文件中。
- 1)部署单节点 OCP 需使用的oceanbase配置文件。
## Only need to configure when remote login is required
# user:
# username: your username
# password: your password if need
# key_file: your ssh-key file path if need
# port: your ssh port, default 22
# timeout: ssh connection timeout (second), default 30
oceanbase-ce:
servers:
# Please don't use hostname, only IP can be supported
- 192.168.1.3
global:
# The working directory for OceanBase Database. OceanBase Database is started under this directory. This is a required field.
home_path: /home/admin/observer
# The directory for data storage. The default value is $home_path/store.
# data_dir: /data
# The directory for clog, ilog, and slog. The default value is the same as the data_dir value.
# redo_dir: /redo
# Please set devname as the network adaptor's name whose ip is in the setting of severs.
# if set severs as "127.0.0.1", please set devname as "lo"
# if current ip is 192.168.1.10, and the ip's network adaptor's name is "eth0", please use "eth0"
devname: eth0
mysql_port: 2881 # External port for OceanBase Database. The default value is 2881. DO NOT change this value after the cluster is started.
rpc_port: 2882 # Internal port for OceanBase Database. The default value is 2882. DO NOT change this value after the cluster is started.
zone: zone1
cluster_id: 1
# please set memory limit to a suitable value which is matching resource.
memory_limit: 8G # The maximum running memory for an observer
system_memory: 4G # The reserved system memory. system_memory is reserved for general tenants. The default value is 30G.
stack_size: 512K
cpu_count: 16
cache_wash_threshold: 1G
__min_full_resource_pool_memory: 268435456
workers_per_cpu_quota: 10
schema_history_expire_time: 1d
# The value of net_thread_count had better be same as cpu's core number.
net_thread_count: 4
major_freeze_duty_time: Disable
minor_freeze_times: 10
enable_separate_sys_clog: 0
enable_merge_by_turn: FALSE
datafile_disk_percentage: 20 # The percentage of the data_dir space to the total disk space. This value takes effect only when datafile_size is 0. The default value is 90.
syslog_level: INFO # System log level. The default value is INFO.
enable_syslog_wf: false # Print system logs whose levels are higher than WARNING to a separate log file. The default value is true.
enable_syslog_recycle: true # Enable auto system log recycling or not. The default value is false.
max_syslog_file_count: 4 # The maximum number of reserved log files before enabling auto recycling. The default value is 0.
# root_password: # root user password, can be empty
- 2)部署多节点 OCP 需使用的oceanbase配置文件
mini-distributed-example
'部署多节点 OCP 需使用的配置文件:'
https://open.oceanbase.com/docs/oceanbase-cloud-platform/oceanbase-cloud-platform-community/V3.1.1/example-yaml
- 2.其中应注意如下参数:
username:OceanBase 的安装用户,按规划应配置为 admin。
password:admin 用户的密码。
servers 为 OceanBase 安装的目标主机。
home_path 表示 OceanBase 数据库的安装目录,需确保 admin 用户对该目录有读写权限。
data_dir 表示 OceanBase 数据库的数据存储目录,需确保 admin 用户对该目录有读写权限。
redo_dir 表示 OceanBase 数据库的 clog 存储目录,需确保 admin 用户对该目录有读写权限。
devname 表示 OceanBase 数据库使用的网卡,需确保主机上已挂载该网卡。
memory_limit 表示 OBServer 可占用服务器的最大内存。
system_memory 表示 OBServer 分配给系统租户的内存大小。
cpu_count 为该 OceanBase 数据库占用服务器的 CPU 资源。
root_password 为 sys 租户的 root 用户密码,使用 root@sys 登录 OceanBase 数据库时需使用。
- 3.部署名为test的OceanBase集群
# 1.自动部署
obd cluster deploy test -c ./example/mini-single-example.yaml
# 2.执行如下命令启动集群。
obd cluster start test
# 3.连接OceanBase数据库,测试是否安装成功。
使用 OBClient 连接执行命令:obclient -h192.168.0.1 -uroot@sys -P2881
使用 MySQL 客户端连接执行命令:mysql -h192.168.0.1 -uroot@sys -P2881
3.为OCP创建MetaDB和MonitorDB。
- 1.执行如下命令登录已部署的 OceanBase 数据库的 sys 租户。
mysql -h127.0.0.1 -uroot@sys -P2881 -p******
- 2.执行如下命令创建资源单元。
create resource unit ocp_unit_config min_cpu=3, max_cpu=3, min_memory=1073741824, max_memory=1073741824, max_iops=1000, min_iops=128, max_disk_size=1000000000, max_session_num=100;
-- 说明 --
min_cpu:该 Unit 最小 CPU 占用量。
max_cpu:该 Unit 最大 CPU 占用量。
min_memory:需要满足部署 OceanBase 数据库 中 mini-single-example.yaml 配置的内存要求,否则后面的租户无法分配 Unit。
- 3.执行如下命令创建 ocp_meta 租户的资源池。
create resource pool ocp_pool unit='ocp_unit_config', zone_list=('zone1'), unit_num=1;
其中,zone_list 需填写部署 OceanBase 数据库中 mini-single-example.yaml 配置的 zone。
- 4.创建 ocp_meta 租户。
create tenant ocp_meta resource_pool_list = ('ocp_pool');
- 5.创建 ocp_monitor 的资源池。
create resource pool ocp__monitor_pool unit='ocp_unit_config', zone_list=('zone1'), unit_num=1;
其中,zone_list 需填写部署 OceanBase 数据库中 mini-single-example.yaml 配置的 zone。
- 6.创建 ocp_monitor 租户。
create tenant ocp_monitor resource_pool_list = ('ocp__monitor_pool');
- 7.退出 root@sys 的登录。
exit
- 8.登录 ocp_meta 的 root 用户(即 root@ocp_meta)。
mysql -h 127.0.0.1 -uroot@ocp_meta -P 2881
- 9.创建 ocp 用户(即 ocp_meta)。
set global ob_tcp_invited_nodes = '%';
create user ocp identified by '*****';
grant all on *.* to ocp;
'此处密码即是后面填写在 ocp_installer.sh 生成的配置文件 ocp.yaml 中的 ocp_metadb 的登录密码。''
- 10.退出 root@ocp_meta 租户。
exit
- 11.登录 ocp_monitor 的 root 用户(即 root@ocp_monitor)。
mysql -h 127.0.0.1 -uroot@ocp_monitor -P 2881
- 12.创建 ocp 用户(即 ocp@ocp_monitor)。
set global ob_tcp_invited_nodes = '%';
create user ocp identified by '*****';
grant all on *.* to ocp;
'此处密码即是后面填写在 ocp_installer.sh 生成的配置文件 ocp.yaml 中的 ocp_monitor db 的登录密码。'
退出 root@ocp_monitor 租户。
4.为OCP安装环境
- 安装ocp agent依赖,建立admin:admin用户和用户组
# 添加admin:admin用户和用户组
groupadd admin
useradd admin -g admin
# OCP-Agent软件会在ocp安装后添加主机的时候自动安装(但是需要提前安装相应需求软件包)。
OCP-Agent 软件要求:
Python 2.7.5 及以上版本
mariadb-devel 5.5.44及以上版本
python-devel 2.7.5及以上版本
iproute 3.10.0及以上版本
make 无特定版本要求
在安装 OCP-Agent 时,会包含一些第三方 Python 软件包,这些第三方软件包会安装到 /home/admin/ocp_agent/lib/ 目录,详细的 Python软件包可参考 OCP-Agent 的 requirement.txt ,具体内容如下所示:
pip==20.0.2
Cython==0.29.20
DBUtils==1.3
mysql-connector==2.2.9
argparse==1.4.0
cffi==1.14.0
futures==3.3.0
future==0.18.2
zerorpc==0.6.3
greenlet==0.4.16
gevent==20.5.0
msgpack==1.0.0
lockfile==0.12.2
requests==2.24.0
prometheus_client==0.8.0
pycparser==2.20
psutil==5.7.0
pycrypto==2.6.1
python-daemon==2.2.4
pygrok==1.0.0
pyzmq==19.0.1
setproctitle==1.1.10
regex==2020.6.8
setuptools==44.1.1
six==1.15.0
wheel==0.34.2
# Debian/Ubuntu OS 软件要求
除上述描述的第三方Python软件包外,OCP-Agent对Debian/Ubuntu的支持还依赖其他软件包。
其中,必须安装的软件包如下:
apt install -y python
apt install -y alien
apt install -y python-dev-is-python2
apt install -y libmariadb-dev libmariadb-dev-compat libmariadb3 libmariadbclient-dev mariadb-client mariadb-common
apt install -y curl
apt install -y sudo
apt install -y libtinfo5
apt install -y libidn11
apt install -y net-tools
为了方便排查问题,还推荐安装以下软件包:
apt install -y wget
apt install -y unzip
apt install -y less
apt install -y vim
- 安装Oracle JDK1.8(ubantu系统)
1.区分系统是32位还是64位
uname -a
2.卸载OpenJDK
java -version //查看是否安装的是OpenJDKsudo apt-get purge openjdk-\* //如果是,则卸载
3.下载Oralce JDK
访问Oracle官方网站,选择 Java SE Development Kit 8u162,选择Accept License Agreement ,选择jdk-8u162-linux-x64.tar.gz下载
4.安装与配置
5.安装与验证
sudo mkdir /usr/local/java
sudo tar -zxf ~/Downloads/jdk-8u162-linux-x64.tar.gz -C /usr/local/java/
/usr/local/java/jdk1.8.0_162/bin/java -version
--------
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
6.配置环境变量等
# 乌班图
sudo vim /etc/profile //添加以下内容
--------
JAVA_HOME=/usr/local/java/jdk1.8.0_162
PATH=PATH:JAVA_HOME/bin:HOME/bin
export JAVA_HOME
export PATH
# Linux下
export JAVA_HOME=/usr/local/jdk1.8.0_131/
export CLASSPATH=.:JAVA_HOME/lib/dt.jar:JAVA_HOME/lib/tools.jar
export PATH=PATH:JAVA_HOME/bin
sudo source /etc/profile //立即生效
javac -version //验证
5.部署OCP
-
前提条件:
- 部署 OCP 的宿主机上已安装 Docker,Docker 的安装请参见互联网。
-
已参见 安装准备 获取 ocp-3.1.1-ce.tar.gz 软件包。
(tar xvf解包后有ocp_installer.sh和ocp3.1.1.tar.gz等文件) - 以 root 用户将软件包中的 ocp_installer.sh 文件上传至宿主机的任一目录下。
- 以 root 用户将软件包中的 OCP 镜像文件
ocp3.1.1.tar.gz
上传到宿主机的任一目录。
-
操作步骤:
-
1.以 root 用户登录 OCP 的宿主机,并进入到 ocp_installer.sh 文件所在路径下。
-
2.执行如下命令赋予 ocp_installer.sh 可执行权限。
chmod +x ocp_installer.sh
- 3.用 installer 生成配置文件,-c 后跟配置文件名称。
./ocp_installer.sh genconf -c ocp.yaml
- 4.修改 installer 生成配置文件 ocp.yaml。
OCP_IP_ARRAY=(192.168.99.160)
SSH_USER=root
SSH_PORT=22
SSH_AUTH='password'
SSH_PASSWORD='****'
SSH_KEY_FILE='/root/.ssh/id_rsa.pub' #注意这个秘钥目录需正确
OCP_METADB_HOST=192.168.99.160
OCP_METADB_PORT=2881
OCP_METADB_USER=ocp@ocp_meta
OCP_METADB_PASSWORD='****'
OCP_METADB_DBNAME=ocp_meta
OCP_MONITORDB_USER=ocp@ocp_monitor
OCP_MONITORDB_PASSWORD='****'
OCP_MONITORDB_DBNAME=ocp_monitor
OCP_WEB_PORT=8080
OCP_LB_VIP= #可不填
OCP_LB_VPORT= #可不填
OCP_IMAGE=/root/ocp3.1.1.tar.gz #前面解压出的镜像位置
OCP_CPU=16
OCP_MEMORY=20G
OCP_LOG_DIR=/tmp/ocp_logs
----其中应注意配置如下参数:----
- OCP_IP_ARRAY:填写 OCP 宿主机的 IP 地址。
- SSH_USER:安装 OCP 使用的用户,默认为 root。
- SSH_PASSWORD:宿主机 root 用户的密码。
- OCP_METADB_HOST:为 MetaDB 所在主机。与mini-single-example.yaml 文件中 servers 的值保持一致。
- OCP_METADB_PORT:为 MetaDB 的端口号,与mini-single-example.yaml 文件中 mysql_port 的值保持一致。
- OCP_METADB_USER: 创建租户时创建的 MetaDB 的用户,为 ocp@ocp_meta。
- OCP_METADB_PASSWORD: 创建租户时设置的 ocp@ocp_meta 的密码。
- OCP_METADB_DBNAME:MetaDB 的数据库名。
- OCP_MONITORDB_USER: 创建租户时创建的 MonitorDB 的用户,为 ocp@ocp_monitor。
- OCP_MONITORDB_PASSWORD: 创建租户时设置的 ocp@ocp_monitor 的密码。
- OCP_MONITORDB_DBNAME:MonitorDB 的数据库名。
- 5.执行如下命令安装社区版OCP。
./ocp_installer.sh install -c ocp.yaml
# 需要安装python sshpass等支持,否则可能会报错
升级python后验证一下yum是否可用,如果不可用需要修复yum
vim /usr/bin/yum
把#!/usr/bin/python 修改为#!/usr/bin/python2.7 (你升级后对应版本的文件夹where is python)
-
6.验证OCP
- OCP 部署完成后执行如下操作:
使用 docker stats ocp 命令查看当前 Docker 状态,确认 CPU、Memory 等信息正确。
执行 docker exec -it ocp bash 命令访问 Docker 镜像控制台,使用 pgrep -a java 命令确认 java 进程正、 JVM 启动参数符合预期。 -
验证 OCP 登录
在浏览器中输入OCP的访问地址,按回车键。
http://: /login
在显示的登录页面,输入 OCP 的用户名(admin)和密码(root)。
例如:http://192.168.99.160:8080 (部分浏览器不支持。)
- OCP 部署完成后执行如下操作:
- 7.使用功能介绍
https://open.oceanbase.com/docs/oceanbase-cloud-platform/oceanbase-cloud-platform-community/V3.1.1/check-after-installation -
8.注意事项
- 1.添加绑定主机时普通用户必须有sudo权限并且配置sudo免密,否则会失败
- 2.必须安装ocp agent相关依赖,否则自动安装ocp agent会失败
- 3.必须建立admin:admin用户和用户组
- 4.show parameters like 'cluster' 中的value对应集群名
三、部署OMS数据迁移工具
OMS 只支持部署在 Linux 系统的主机中。
安装OMS 前提得有 OB 集群和 OCP 。OCP 和 OB 的安装部署,这里就不重复了。
由于部署oms 会使用 80 、8080 和 8088 端口。其中 8080 跟 OCP 端口冲突,所以 oms 尽量不要跟 ocp 部署在一起,oms需要单独一台服务器部署。
安装镜像文件、参数文件都在ocp主机的 /root/t-oceanbase-antman/目录下,oms 配置的是另外一台服务器 IP,需要打通 ocp 机器到 oms 机器的 ssh 信任关系。
安装OMS前,确保源OB集群各个节点、OMS 部署机、目标集群的各个节点 NTP 服务同步。
安装OMS前,确保 OMS 部署机器的 /etc/hosts 文件配置与实际主机 IP 地址相符。
另外,确保 OMS 部署机可以通过网络访问 OBProxy 的 2883 端口、各台 Observer 的2881/2882 端口、OCP 节点的 80 端口,以及异构数据库服务端口,例如 Oracle 的 1521 端口。
否则oms添加数据源时,无法连接数据源。
1. 配置需求
1.)操作系统和端口限制
- OMS 社区版支持以 Docker 容器的方式部署于 Linux 系统主机中,暂不支持裸机部署。
-
在部署机上安装 OMS 社区版,需要使用以下端口。安装前请确认 OMS 社区版和 InfluxDB 所在宿主机相应的端口未被占用,端口策略正常开通。
-
OMS 社区版所在宿主机需要提供以下端口可用。
端口 | 描述 |
---|---|
8089 | OMS 社区版管理控制台对应端口。 |
2023 | sshd 服务。 |
8084 | supervisorctl Web 界面。 |
8088 | OMS 社区版的集群管控模块,在 supervisorctl 中的组件名为 oms_drc_cm 。 |
9000/9001 | 主机 Agent 进程的服务端口。 |
16000~1649917000~1749918000~184997100-7499 | OMS 社区版内部组件随机端口。 |
- InfluxDB 所在宿主机仅需要提供 InfluxDB 服务端口 8086 可用。
2.)NTP 服务
安装前请确保 OMS 社区版的 Meta 库和所有部署机器之间的 NTP 服务同步。
# OMS主机配置NTP client
ocp主机是ntp server端,其它主机是ntp client端
[root@obnfs201 ~]# yum -y install ntp ntpdate
[root@obnfs201 ~]# echo server 10.10.10.33 iburst >> /etc/ntp.conf
[root@obnfs201 ~]# echo restrict 10.10.10.0 nomodify notrap >> /etc/ntp.conf
[root@obnfs201 ~]# ntpdate -u 10.10.10.33
[root@obnfs201 ~]# hwclock -w
[root@obnfs201 ~]# systemctl restart ntpd
[root@obnfs201 ~]# systemctl enable ntpd
[root@obnfs201 ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*ocp201 LOCAL(0) 6 u 27 64 377 0.221 -2.837 1.974
[root@obnfs201 ~]#
3.)网络连通性
请确保 OMS 社区版部署机器和 OBProxy、OBServer、OCP,以及参与迁移的数据源之间的网络连通。
2.资源配置规格
- 基础服务和管控等常驻组件的标准资源规格建议如下。
资源类型/组件 | 基础服务 | 管控 | 总计 |
---|---|---|---|
CPU | 1C | 4C | 5C |
Memory | 1G | 7G | 8G |
Disk | 100G | 100G | 200G |
- 以单条 MySQL 数据库至 OceanBase 社区版的数据迁移链路为例进行计算,OMS 社区版各组件的标准资源规格建议如下。
资源类型/组件 | Store | JDBCWriter | Checker | 总计 |
---|---|---|---|---|
CPU | 4C | 2C | 2C | 8C |
Memory | 8G | 8G | 4G | 20G |
Disk | 取决于数据库端增量日志的生产速度和 OMS 社区版中增量数据的保存时间 | 5G | 5G | >10G |
- 资源规格说明:
- 全量组件
一条数据迁移链路包含了增量同步组件(Store + JDBCWriter)、全量迁移组件(Checker)和全量校验组件(Checker)。实际运行时,全量迁移和全量校验进程不会同时存在,所以估算链路资源占用时,Checker 只计入一份。 -
磁盘估算
OMS 社区版主要磁盘资源耗费在缓存增量拉取日志在 OMS 社区版内部存储,支持数据回拉再迁移。假设归档日志量为每天 1 TB,实际 OMS 社区版解析和业务相关的数据会少于 1 T,建议您按照 1:1 作为 OMS 社区版日志缓存来估算。
- 全量组件
3.环境准备
- 1.安装 Docker。部署机需要提前安装 Docker 软件,版本要求不低于 V1.13。
OMS主机安装docker
通过 Docker 镜像方式安装 OMS,需要提前在oms部署机安装 Docker 软件,
可以通过yum安装docker,也可以通过antman 脚本来安装docker
# cd /root/t-oceanbase-antman/clonescripts
# ./clone.sh -i
这里我用yum安装,注意根目录空间要足够,否则后面安装oms时会报空间不足。
[root@obnfs201 ~]# yum install -y docker
[root@obnfs201 ~]# docker -v
Docker version 1.13.1, build cccb291/1.13.1
[root@obnfs201 ~]# systemctl start docker
[root@obnfs201 ~]# systemctl status docker
# 上传oms镜像包到主机
-
2.准备数据库,用于存储 OMS 社区版的元信息。
- OMS 社区版运行时需要一个数据库实例,用于持久化其元信息。该数据库可以是 MySQL 或 OceanBase,推荐您使用 OceanBase 数据库。
- 在一个 OceanBase 集群中为 OMS 社区版创建一个 2C/4G 规格的 MySQL 兼容模式租户。请记录下该租户的连接信息,会在后续部署 OMS 时使用。
- 创建一个oceanbase 的sys租户下的用户
- 3.已获取 OMS 社区版安装包,通常安装包为以 oms 开头的 tar.gz 镜像文件。
4.操作步骤
- 1.登录 OMS 社区版部署机。
# 创建oms使用的数据库租户资源
CREATE RESOURCE UNIT unit1 MAX_CPU 2, MAX_MEMORY '4G', MAX_IOPS 1280,MAX_DISK_SIZE '20G', MAX_SESSION_NUM 640, MIN_CPU=1, MIN_MEMORY='1G', MIN_IOPS=128;
CREATE RESOURCE POOL pool1 unit='unit1',unit_num=1, zone_list=('zone1');
CREATE TENANT IF NOT EXISTS oms_tenant charset='utf8mb4', replica_num=1, zone_list=('zone1'), primary_zone='zone1', resource_pool_list=('pool1') SET ob_tcp_invited_nodes='%'
登陆root@租户设置密码
grant all on *.* to root@'%' identified by '123'
-
2.(可选)部署时序数据库。
如果您需要 OMS 社区版能够收集和展示历史监控数据,请部署时序数据库。如果无需展示监控曲线,请跳过本步骤。详情请参见 部署时序数据库。 -
3.准备配置文件。
在适当的目录下编辑 OMS 社区版启动配置文件。例如,您可以将配置文件创建为/root/config.yaml
。
请注意将相关参数替换为您部署的目标环境的实际值。
# 注意 !!
`config.yaml` 文件中的 Key: Value,
# 冒号后面必须加一个空格。
- 4.配置文件内容
# OMS 社区版部署必填配置
# OMS 社区版元数据库信息,即创建的租户所在 OceanBase 集群对应的信息
# 您需要提前准备一个 OceanBase 数据库,用于存放 OMS 社区版的元信息
oms_meta_host: 192.168.99.116
oms_meta_port: 2883
oms_meta_user: admin1@tenant_wise_p_oms
oms_meta_password: 123 #必须使用密码
用户可以自定义以下三个数据库的名称,OMS 社区版部署时会在元信息库中创建出这三个数据库
drc_rm_db: drc_rm_db
drc_cm_db: drc_cm_db
drc_cm_heartbeat_db: drc_cm_heartbeat_db
# OceanBase 社区版增量用户
# 当需要从 OceanBase 社区版消费增量日志时,请在 sys 租户下创建用户
# drc user 需要在待迁移的 OceanBase 集群 sys 租户下创建,然后在 OMS 社区版 yaml 文件中指定
drc_user: oms_drc_user
drc_password: OMSdrc0210
# OMS 社区版集群配置
# 通常配置为当前 OMS 社区版机器 IP
cm_url: http://127.0.0.1:8088
cm_location: 21
cm_region: Shanghai
cm_region_cn: 上海
cm_is_default: true
cm_nodes:
- 192.168.99.160
参数 | 描述 | 是否必选 |
---|---|---|
oms_meta_host | OMS 社区版元信息库的 IP 地址。 | 必选 |
oms_meta_port | OMS 社区版元信息库的访问端口。 | 必选 |
oms_meta_user | OMS 社区版访问元信息库的账号。 | 必选 |
oms_meta_password | OMS 社区版访问元信息库的密码。 | 必选 |
drc_rm_db | 管理控制台的数据库名称。 | 必选 |
drc_cm_db | 集群管理服务的元数据库名称。 | 必选 |
drc_cm_heartbeat_db | 集群管理服务的心跳库的名称。 | 必选 |
drc_user | 用于读取 OceanBase 社区版增量日志的账号名称,需要在 sys 租户下创建该用户。 | 必选 |
drc_password | drc_user 账号对应的密码。 |
必选 |
cm_url | OMS 社区版集群管理服务的地址。例如,http://VIP:8088。说明通常配置为当前 OMS 社区版机器 IP,不建议您使用 http://127.0.0.1:8088。 | 必选 |
cm_location | 地域码,取值范围为 [0,127]。每个地域一个数字,用户自行选择。 | 必选 |
cm_region | OMS 社区版服务器所在地域,例如 cn-jiangsu。 | 可选 |
cm_region_cn | 地域的中文标识。例如,江苏。 | 可选 |
cm_nodes | OMS 社区版集群管理服务的机器 IP 列表。 | 必选 |
cm_is_default | 标识是否默认 OMS 社区版集群管理服务。 | 可选,默认值为 true |
tsdb_service | 表示时序数据库的类型,包括 INFLUXDB 和 CERESDB 。 |
可选,默认值为 CERESDB |
tsdb_enabled | 表示是否开启指标汇报的功能(监控能力),包括 true 或 false 。 |
可选,默认值为 false |
tsdb_url | 部署时序数据库的机器地址。当 tsdb_enabled 为 true 时,请根据实际环境修改该参数。 |
可选 |
tsdb_username | 时序数据库的用户名。当 tsdb_enabled 为 true 时,请根据实际环境修改该参数。部署时序数据库后,需要您手动创建时序数据库用户,并填写用户名和密码。 |
可选 |
tsdb_password | 时序数据库的密码。当 tsdb_enabled 为 true 时,请根据实际环境修改该参数。 |
可选 |
- 5.加载下载的 OMS 社区版镜像文件至 Docker 容器的本地镜像仓库。
# 导入镜像
docker load -i <OMS 镜像路径>
# 查看镜像
[root@ocp201 t-oceanbase-antman]# docker images
REPOSITORY | TAG | IMAGE ID | CREATED | SIZE |
---|---|---|---|---|
reg.docker.alibaba-inc.com/oceanbase/oms | feature_3.2.2-ce_bp1 | ad4bf58a7f95 | 3 weeks ago | 2.57GB |
- 6.执行以下命令,启动容器。
# 需注意替换如下内容:
----
OMS_HOST_IP=xxx
CONTAINER_NAME=oms_xxx
'/data/config.yaml 需替换为配置文件所在位置'
替换最后的镜像内容为:REPOSITORY:TAG 对应值
reg.docker.alibaba-inc.com/oceanbase/oms:feature_3.2.2-ce
----
docker run -dit --net host \
-v /data/config.yaml:/home/admin/conf/config.yaml \
-v /data/oms/oms_logs:/home/admin/logs \
-v /data/oms/oms_store:/home/ds/store \
-v /data/oms/oms_run:/home/ds/run \
-e OMS_HOST_IP='OMS_HOST_IP' \
--privileged=true \
--pids-limit -1 \
--ulimit nproc=65535:65535 \
--name 'CONTAINER_NAME' \
reg.docker.alibaba-inc.com/oceanbase/oms:feature_3.2.2-ce
## 示例
sudo docker run -dit --net host \
-v /home/wise/config.yaml:/home/admin/conf/config.yaml \
-v /home/wise/logs:/home/admin/logs \
-v /home/wise/ds/store:/home/ds/store \
-v /home/wise/ds/run:/home/ds/run \
-e OMS_HOST_IP=192.168.99.160 \
--privileged=true \
--pids-limit -1 \
--ulimit nproc=65535:65535 \
--name 'oms_docker' \
reg.docker.alibaba-inc.com/oceanbase/oms:feature_3.2.2-ce
#查看本地容器的列表
[root@docker01 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
#彻底删除在运行中的容器
[root@docker01 ~]# docker rm -f 容器ID/name
参数 | 描述 |
---|---|
OMS_HOST_IP | 宿主机的 IP 地址。 |
CONTAINER_NAME | 创建容器的名称。 |
/data/oms/oms_logs | /data/oms/oms_logs 、/data/oms/oms_store 和 /data/oms/oms_run 可以替换为在您的 OMS 社区版部署机器上创建的挂载目录,分别存放 OMS 社区版运行过程中产生的日志文件、日志拉取组件和同步组件生成的文件,在本机进行持久化。注意在后续的版本重新部署、升级中,挂载目录的位置必须保持不变。 |
/data/oms/oms_store | |
/data/oms/oms_run | |
/home/admin/logs | /home/admin/logs 、/home/ds/run 和 /home/ds/store 为容器内的固定目录,路径不可以修改。 |
/home/ds/run | |
/home/ds/store | |
privileged | 为容器授予扩展权限。 |
pids-limit | 配置容器的进程数限制,-1 表示不限制。 |
ulimit nproc | 配置用户进程数的上限。 |
- 7.进入新容器。
docker exec -it 容器名 bash
- 8.执行元数据初始化操作。
bash /root/docker_init.sh
执行命令后,初始化操作的流程如下:
1. 在元数据库中初始化数据。
2. 生成各组件的配置文件。
3. 重启所有组件。
在执行 `docker_init.sh` 时,请关注执行时命令行的输出。待执行成功后,会提示您**【结束】全部初始化步骤执行成功**。
# **注意**
# 执行过程需要耗时 2~4 分钟,请您耐心等待,切勿中断执行。
`docker_init.sh` 脚本输出的信息如下所示:
# 【步骤一】校验 config.yaml 配置文件
python -m omsflow.scripts.units.oms_cluster_config --check /home/admin/conf/config.yaml
# 【步骤二】创建 OMS 元信息库
python -m omsflow.scripts.units.oms_init_manager --init-db
# 【步骤三】创建 OMS 各组件的配置文件
python -m omsflow.scripts.units.oms_init_manager --init-config-file
# 【步骤四】重启 OMS 所有组件 (大约需要两分钟,请耐心等待)
supervisorctl restart crond nginx oms_console oms_drc_cm oms_drc_supervisor sshd
supervisorctl status crond nginx oms_console oms_drc_cm oms_drc_supervisor sshd
supervisorctl status crond nginx oms_console oms_drc_cm oms_drc_supervisor sshd
# 【步骤五】初始化 OMS 资源标签和资源组
python -m omsflow.scripts.units.oms_cluster_manager add_resource
# 【结束】全部初始化步骤执行成功
--------------------------------
supervisorctl # 检查结果
执行 supervisorctl 命令,获取输出信息,确认各个服务均为 RUNNING 状态。
RUNNING 状态说明各个服务状态正常,OMS 社区版已在环境中正常运行。
登陆OMS端口http://10.0.0.9:8089/
用户admin
密码admin