使用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 (部分浏览器不支持。)

  • 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 表示时序数据库的类型,包括 INFLUXDBCERESDB 可选,默认值为 CERESDB
tsdb_enabled 表示是否开启指标汇报的功能(监控能力),包括 truefalse 可选,默认值为 false
tsdb_url 部署时序数据库的机器地址。当 tsdb_enabledtrue 时,请根据实际环境修改该参数。 可选
tsdb_username 时序数据库的用户名。当 tsdb_enabledtrue 时,请根据实际环境修改该参数。部署时序数据库后,需要您手动创建时序数据库用户,并填写用户名和密码。 可选
tsdb_password 时序数据库的密码。当 tsdb_enabledtrue 时,请根据实际环境修改该参数。 可选
  • 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

Copyright © 2009 - Now . XPBag.com . All rights Reserved.
夜心的小站 » 使用Docker部署OceanBase、OMS、OCP系统

提供最优质的资源集合

立即查看 了解详情