OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容

2024年 5月 7日 45.9k 0

准备工作

一、服务器准备

用途 OS CPU(core) 内存(GB) 磁盘(GB) IP 备注
中控机,部署OBD CentOS Linux release 7.9.2009 8 15 400 192.168.0.220 虚拟机
observer CentOS Linux release 7.9.2009 16 25 400 192.168.0.221 虚拟机
observer CentOS Linux release 7.9.2009 16 25 400 192.168.0.223 虚拟机
observer CentOS Linux release 7.9.2009 16 25 400 192.168.0.224 虚拟机
backup CentOS Linux release 7.9.2009 4 8 400 192.168.0.222 虚拟机
OCP-Server Kylin Linux Advanced Server release V10 (Lance) 6 30 400 192.166.0.87 虚拟机
MetaDB + MonitorDB Kylin Linux Advanced Server release V10 (Lance) 16 30 400 192.166.0.89 虚拟机

二、软件准备

1、在OceanBase官网下载社区版一键安装包

https://www.oceanbase.com/softwarecenter

根据自己的操作系统按需下载

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-1

三、资源规划

1、内存

observer节点是25G内存,预留2G给操作系统,剩余23G可分给OB

2、磁盘

observer节点是400G磁盘空间,其中/home的磁盘空间剩余330G,则OB的全部数据都放在/home中

OB运行时的磁盘空间占用大致分为3部分:数据 + redolog + 运行日志

其中 运行日志大致分为4个种类,每种日志的每个文件最大为256M,若每种日志最大保留10个文件,且开启enable_syslog_wf,则运行日志最大占用磁盘空间为 4 * 10 * 2 * 256M = 20G

另,需要预留部分空间给操作系统的其进程,因此可分给OB的磁盘空间大约300G

因为没有其他磁盘,所以OB的data和redolog都放在一起,空间比例按照2:1分配,因此为data分配200G,log分配100G(不小于分配给OB内存的3倍)

磁盘占用项 数值
数据库运行日志 20G
数据库数据 200G
redolog 100G

四、操作系统配置

1、创建admin用户(中控机 + observer节点)

# useradd -U admin -d /home/admin -s /bin/bash
    
# mkdir -p /home/admin
    
# sudo chown -R admin:admin /home/admin

# passwd admin

# 密码:自行设置

# 为admin用户设置sudo权限

# vim /etc/sudoers
    
# 添加以下内容:

# admin		ALL=(ALL)       NOPASSWD: ALL

2、上传OceanBase All in One安装包到服务器(中控机)

上传到 /home/admin/install 目录

3、注意操作系统时间的配置(中控机 + observer节点)

如果服务器不能链接外网,则需要部署一个NTP服务器,集群和这个服务器保持时间同步

如果可以连接外网,看看是否安装了 chrony,安装了以后可以自动同步网络时间

4、配置limits.conf(中控机 + observer节点)

# sudo vim /etc/security/limits.conf

# 增加或修改以下内容

root soft nofile 655350
root hard nofile 655350
* soft nofile 655350
* hard nofile 655350
* soft stack 20480
* hard stack 20480
* soft nproc 655360
* hard nproc 655360
* soft core unlimited
* hard core unlimited

退出当前会话,ulimit -a验证是否生效

查看 /etc/security/limits.d/20-nproc.conf 文件中是否存在 nproc 的配置,若存在需同步修改该文件中 nproc 的值

5、配置 /etc/sysctl.conf(中控机 + observer节点)

sudo vim /etc/sysctl.conf

# 新增或修改以下内容

fs.aio-max-nr=1048576 # 修改内核异步 I/O 限制
net.core.somaxconn = 2048 # Socket 监听队列的最大长度,频繁建立连接需要调大该值
net.core.netdev_max_backlog = 10000 # 协议栈处理的缓冲队列长度,设置的过小有可能造成丢包   
net.core.rmem_default = 16777216 # 接收缓冲区队列的默认长度
net.core.wmem_default = 16777216 # 发送缓冲区队列的默认长度
net.core.rmem_max = 16777216 # 接收缓冲区队列的最大长度
net.core.wmem_max = 16777216 # 发送缓冲区队列的最大长度

net.ipv4.tcp_rmem = 4096 87380 16777216 # Socket 接收缓冲区的大小,分别为最小值、默认值、最大值
net.ipv4.tcp_wmem = 4096 65536 16777216 # Socket 发送缓冲区的大小,分别为最小值、默认值、最大值
net.ipv4.tcp_max_syn_backlog = 16384 # 处于 SYN_RECVD 状态的连接数
net.ipv4.tcp_fin_timeout = 15 # Socket 主动断开之后 FIN-WAIT-2 状态的持续时间
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_tw_reuse = 1 # 允许重用处于 TIME WAIT 状态的 Socket
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_slow_start_after_idle=0 # 禁止 TCP 连接从 Idle 状态的慢启动,降低某些情况的网络延迟

vm.swappiness = 0 # 优先使用物理内存
vm.min_free_kbytes = 2097152
vm.max_map_count=655360
fs.file-max=6573688

# 系统内核dump日志存储目录,结合具体使用修改目录位置
kernel.core_pattern = /home/admin/core-dump/core-%e-%p-%t

6、关闭防火墙和SELinux(中控机 + observer节点)

# 关闭防火墙
sudo systemctl status firewalld
sudo systemctl disable firewalld
sudo systemctl stop firewalld

# 关闭SELinux
sudo vim /etc/selinux/config

# 将以下内容改为 disabled
SELINUX=disabled

# 查看 SELinux 状态
sudo sestatus

# 重启

7、手动关闭透明大页

echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled

OBD白屏部署单机版OB-CE4.2.1

一、软件部署规划

192.168.0.220(以下简称220)中控机上安装OBD,并通过OBD在192.168.0.221(以下简称221)上部署单机版OB

虽然应用可直连OB,但考虑到后续扩容的需求,因此在220上同时安装OBProxy,应用连接OBProxy,这样后续可在用户无感知的情况下扩容

IP 部署内容
192.168.0.220 OBD
192.168.0.220 OBProxy
192.168.0.221 OB数据库

二、解压、安装OBD、启动OBD WEB

1、 解压、安装OBD

# su admin

# cd install

# tar -xzf oceanbase-all-in-one-*.tar.gz && rm -rf oceanbase-all-in-one-*.tar.gz

# cd oceanbase-all-in-one/bin/

# ./install.sh

# echo "source ~/.oceanbase-all-in-one/bin/env.sh" >> ~/.bashrc

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-2

2、启动 OBD WEB

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-3

3、访问白屏安装页面

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-4

选择 OceanBase 及配套工具

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-5

集群名称自定义,只安装OBProxy,OCP Express 和 OBAgent不安装,后续直接安装完整版OCP

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-6

OBServer节点按照预定的计划,使用221,OBProxy使用220,部署用户为之前创建的admin用户

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-7

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-8

注意,部署过程中,如果log和data在一个磁盘上,则会报警,但不影响安装,如下

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-9

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-10

4、安装成功,查询集群状态

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-11

三、连接OBProxy、创建租户

1、 查询数据库版本

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-12

2、 查询集群资源

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-13

因为是新创建的数据库,且只需要一个用户租户,所以直接根据集群剩余资源创建 RESOURCE UNIT、RESOURCE POOL和TENANT即可

3、 创建资源单元

CREATE RESOURCE UNIT test_unit_config MEMORY_SIZE = '14G', MAX_CPU = 13, MIN_CPU = 13, LOG_DISK_SIZE = '90G', IOPS_WEIGHT = 1;

4、 创建资源池

CREATE RESOURCE POOL test_pool_01 UNIT='test_unit_config', UNIT_NUM=1, ZONE_LIST=('zone1');

5、 创建租户

CREATE TENANT obtest PRIMARY_ZONE='zone1', RESOURCE_POOL_LIST=('test_pool_01') set OB_TCP_INVITED_NODES='%', ob_compatibility_mode='mysql';

查询创建好的租户

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-1

四、部分参数调整

1、 在SYS租户上,查询并设置一些配置项

# 限制打印程序日志的带宽
SHOW PARAMETERS LIKE '%syslog_io_bandwidth_limit%';
ALTER SYSTEM SET syslog_io_bandwidth_limit = '10M';

# 事务执行时间超过一定的阈值,打印 slow trans 日志
SHOW PARAMETERS LIKE '%trace_log_slow_query_watermark%';
ALTER SYSTEM SET trace_log_slow_query_watermark = '10s';

2、 登录新创建的租户(obtest),查询并设置一些系统变量

# 设置 SQL 最大执行时间(微秒)
SHOW variables LIKE '%ob_query_timeout%';
SET GLOBAL ob_query_timeout = 7200000000;

# 设置最大网络包大小
SHOW variables LIKE '%max_allowed_packet%';
SET GLOBAL max_allowed_packet = 41943040;

# 用于 SQL 执行的租户内存百分比限制
SHOW VARIABLES LIKE '%ob_sql_work_area_percentage%';
SET GLOBAL ob_sql_work_area_percentage = 10;

以上系统变量设置完成后,重新开启会话即可查询到生效后到系统变量

五、修改obtest租户的密码

租户创建完成后,默认的root用户没有密码

登录 root@obtest 修改密码

ALTER USER root IDENTIFIED BY '密码';

TPCC性能测试

使用obd做tpcc测试,测试流程参考官网

https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000218148

测试命令如下

obd test tpcc distributedob \
--tenant=obtest --user=root --password=密码 --database=test \
--warehouses=10 \
--run-mins=10 \
--optimization=1 \
--tmp-dir=/home/admin/tpcc/tmp

测试结果如下

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-15

中控机负载

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-16

observer负载

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-17

部署OCP4.2.1

在准备工作——服务器准备中,已经安装好了2台虚拟机 192.166.0.87 和 192.166.0.89,用来部署OCP相关服务,部署完成后,将接管部署在 192.168.0.221 上的OB

一、用户准备

参考准备工作——操作系统配置——创建admin用户

二、软件准备

参考:https://www.oceanbase.com/docs/common-ocp-1000000000368848

将OCP安装包,上传到 192.166.0.87 的某个目录

确保已经安装好JDK1.8,并要求构建版本号至少需为161

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-18

三、目录准备

mkdir /data

chown -R admin:admin /data

四、启动OBD WEB,白屏安装OCP

1、浏览器进入安装页面

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-19

2、选择安装OCP

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-20

3、安装OCP的同时安装全新的Oceanbase数据库作为OCP的数据库

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-21

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-22

4、OCP-Server和OCP的数据库不放在一起

之前准备了2台虚拟机分别为192.166.0.87(以下简称87)和192.166.0.89(以下简称89);在87上安装OCP-Server,在89上安装OCP依赖的数据库

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-23

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-24

注意下面的ocp.site.url设置,这是OCP的管理页面的地址

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-25

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-26

安装成功

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-27

5、登录OCP管理页面

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-28

目前遇到问题:使用admin用户安装完OCP后,启动成功,但是进入管理页面,无法查看服务器参数和数据等监控信息。这是因为 Pre check for create host 任务执行失败,这个任务失败的原因是admin用户执行clockdiff检查OCP-Server和数据库之间的时差时没有权限,只能通过sudo运行,但是OCP程序没有使用sudo调用clockdiff,导致失败。目前准备先跳过时差检查,官方准备在下一个版本修复这个问题

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-29

上面这个问题发生了 KylinOS V10 中,在CentOS 7.9中,虽然非root用户依然无法执行 clockdiff,但可以通过 sudo setcap cap_net_raw+ep /usr/sbin/clockdiff 命令,使admin用户可以不用sudo依然可以执行 clockdiff,从而解决这个问题

初始化成功

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-30

使用OCP4.2.1接管OB4.2.1

一、打开OceanBase云平台

其中 proxyro 的密码,可在待被接管集群的OBD部署主机上,通过 obd cluster edit-config <集群名称> 中查到,属性为:observer_sys_password

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-31

二、新建机型,按照要求输入

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-32

三、选择凭据中,新增一个凭据,使用非root用户

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-33

四、之后,OCP会创建一个接管集群的任务(Take over primary OB cluster)

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-34

五、如下所示,OCP已经接管了之前部署的OB集群(单体)

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-35

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-36

使用OCP扩容成3节点OB集群(1-1-1架构)

一、登录OCP云平台

二、添加主机

1、之前我们已经在220上部署了单节点的OB数据库,现在需要使用OCP将其扩容成3节点的OB集群,另外两个节点已经配置好(223和224),现在需要加入到OCP的主机管理中

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-37

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-38

2、OCP会为新添加的主机创建一个添加任务(主要是检查时间差和安装OCP Agent),等待执行完毕

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-39

3、OCP会检查新添加主机的一些重要配置,不满足需求时会提示

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-40

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-41

4、此时可以选择自动修复

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-42

5、全部修复完成后,就可以作为待扩容节点加入到集群了

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-43

三、扩容

1、点击需要扩容的集群,进入集群详细视图

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-44

2、点击扩展分布式集群

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-45

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-46

3、选择之前添加的主机

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-47

4、点击确定,扩容

扩容时发现缺少软件包oceanbase-ce-libs-4.2.1.3-103000032023122818.el7.x86_64.rpm

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-48

去官网下载缺少的软件包

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-49

上传缺少的软件包

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-50

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-51

重新扩容集群

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-52

发现还缺少软件包,重复之前的操作,去官网下载软件包,并上传到OCP

OCP成功创建集群扩容计划,等待扩容成功

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-53

扩容报错,“Cannot get disk usage of /home/admin/fvob/oceanbase/store, reason: failed to get disk usage: no such file or directory”

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-54

需要在扩容的2个节点上,创建好所有需要的目录(在 /home/admin/fvob/oceanbase 下)

mkdir -p /home/admin/fvob/oceanbase/store/{clog,slog,sstable}

跳过Make dir for ob子任务

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-55

扩容任务继续执行

任务执行到 Run io calibration(IO校准任务)时,出现任务无法执行完毕、长时间重复查询的情况

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-56

执行下面的查询,发现STATUS是FAILED状态

SELECT svr_ip, svr_port, storage_name, status, start_time, finish_time FROM GV$OB_IO_CALIBRATION_STATUS 
WHERE svr_ip = '192.168.0.223' AND svr_port = 2882;

SELECT svr_ip, svr_port, storage_name, status, start_time, finish_time FROM GV$OB_IO_CALIBRATION_STATUS 
WHERE svr_ip = '192.168.0.224' AND svr_port = 2882;

在sys租户上,手动执行校准任务后,STATUS变为READY

ALTER SYSTEM RUN JOB "io_calibration" SERVER = '192.168.0.223:2882';

ALTER SYSTEM RUN JOB "io_calibration" SERVER = '192.168.0.224:2882';

重试 Run io calibration,执行成功

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-57

Add OB zone 任务执行成功后,业务租户的 Batch add tenant replica 任务执行失败

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-58

提示资源不足

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-59

查询 GV$OB_SERVERS 视图,发现 zone1 的 memory_limit 是 23G(之前手动部署OB的时候填写的值),而 zone2 和 zone3 的 memory_limit 都是20G

在OCP云平台中,进入集群管理页面,点击待扩容集群,进入集群参数管理页面,修改 memory_limit 参数的值为23G,生效范围是集群

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-60

重新查询 GV$OB_SERVERS 视图,几个 zone 的 memory_limit 都是 23G 了,重试任务

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-61

Batch create resource pool 执行通过

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-62

集群扩容成功

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-63

OB‐CE‐4.2.1安装部署 性能测试 OCP部署 扩容-64

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论