Skip to content

OceanBase OCP部署

OCP部署准备

1. 硬件要求

组件最低配置推荐配置
CPU8核16核及以上
内存16GB32GB及以上
磁盘200GB SSD500GB SSD及以上
网络1Gbps10Gbps及以上

2. 软件要求

组件版本要求
操作系统CentOS 7.2+ / RedHat 7.2+
JDK1.8.0_202及以上
MySQL5.7.20+ / 8.0.17+
Nginx1.16.1+
Redis5.0+
ZooKeeper3.4.14+
OceanBase2.2.x+

3. 网络要求

网络类型要求
端口开放80, 443, 2881, 2882, 3888, 2181, 6379等
网络延迟节点间网络延迟 < 1ms
带宽节点间带宽 > 1Gbps

4. 系统配置

4.1 关闭防火墙

bash
systemctl stop firewalld
systemctl disable firewalld

4.2 关闭SELinux

bash
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0

4.3 调整内核参数

bash
cat > /etc/sysctl.d/ob.conf << EOF
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
EOF

sysctl -p /etc/sysctl.d/ob.conf

4.4 调整资源限制

bash
cat > /etc/security/limits.d/ob.conf << EOF
* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536
* soft stack 20480
* hard stack 20480
* soft core unlimited
* hard core unlimited
EOF

OCP部署方式

1. 单节点部署

单节点部署适用于测试环境或小规模生产环境,部署步骤如下:

1.1 安装依赖

bash
yum install -y wget curl gcc gcc-c++ make cmake openssl-devel zlib-devel libaio-devel libcurl-devel libxml2-devel

1.2 安装JDK

bash
wget https://download.oracle.com/otn/java/jdk/8u301-b09/d3c52aa6bfa54d3ca74e617f18309292/jdk-8u301-linux-x64.tar.gz
tar -zxvf jdk-8u301-linux-x64.tar.gz -C /usr/local/

echo 'export JAVA_HOME=/usr/local/jdk1.8.0_301
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' > /etc/profile.d/java.sh
source /etc/profile

1.3 安装MySQL

bash
# 使用yum安装MySQL 5.7
yum localinstall -y https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
yum install -y mysql-community-server
systemctl start mysqld
systemctl enable mysqld

# 获取初始密码
grep 'temporary password' /var/log/mysqld.log

# 修改密码
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'OceanBase123!';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'OceanBase123!' WITH GRANT OPTION;
FLUSH PRIVILEGES;

1.4 安装Redis

bash
yum install -y redis
systemctl start redis
systemctl enable redis

1.5 安装ZooKeeper

bash
tar -zxvf zookeeper-3.4.14.tar.gz -C /usr/local/
mkdir -p /usr/local/zookeeper-3.4.14/data
mkdir -p /usr/local/zookeeper-3.4.14/logs

echo 'tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper-3.4.14/data
dataLogDir=/usr/local/zookeeper-3.4.14/logs
clientPort=2181' > /usr/local/zookeeper-3.4.14/conf/zoo.cfg

cd /usr/local/zookeeper-3.4.14/bin
./zkServer.sh start

1.6 安装OCP

bash
# 下载OCP安装包
tar -zxvf ocp-xxx.tar.gz -C /opt/

# 配置OCP
cd /opt/ocp/conf
cp ocp.properties.template ocp.properties
# 修改ocp.properties中的配置,包括数据库连接、Redis连接、ZooKeeper连接等

# 初始化数据库
cd /opt/ocp/bin
./init_db.sh

# 启动OCP
./start.sh

2. 集群部署

集群部署适用于大规模生产环境,提供高可用性和扩展性,部署步骤如下:

2.1 部署架构

OCP集群部署架构包括:

  • 3个OCP Server节点
  • 3个MySQL节点(主从复制或MGR)
  • 3个Redis节点(集群模式)
  • 3个ZooKeeper节点(集群模式)
  • 2个Nginx节点(负载均衡)

2.2 部署步骤

  1. 准备所有节点:按照单节点部署的要求,准备所有节点的系统环境
  2. 部署基础服务
    • 部署3个ZooKeeper节点,形成集群
    • 部署3个Redis节点,形成集群
    • 部署3个MySQL节点,配置主从复制或MGR
  3. 部署OCP Server
    • 在3个节点上部署OCP Server
    • 配置OCP Server的集群参数
    • 启动所有OCP Server节点
  4. 部署Nginx
    • 在2个节点上部署Nginx
    • 配置Nginx负载均衡,指向OCP Server节点
    • 启动Nginx服务
  5. 验证部署
    • 访问OCP的Web界面
    • 验证OCP的各项功能
    • 验证OCP的高可用性

OCP配置

1. 数据库配置

OCP需要连接MySQL数据库存储元数据,配置文件为ocp.properties中的数据库相关配置:

properties
# 数据库连接配置
spring.datasource.url=jdbc:mysql://mysql-host:3306/ocp?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=OceanBase123!

# 数据库连接池配置
spring.datasource.hikari.maximum-pool-size=100
spring.datasource.hikari.minimum-idle=10
spring.datasource.hikari.idle-timeout=300000
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.max-lifetime=1800000

2. Redis配置

OCP需要连接Redis存储缓存数据,配置文件为ocp.properties中的Redis相关配置:

properties
# Redis连接配置
spring.redis.host=redis-host
spring.redis.port=6379
spring.redis.password=
spring.redis.database=0

# Redis连接池配置
spring.redis.jedis.pool.max-active=100
spring.redis.jedis.pool.max-wait=-1ms
spring.redis.jedis.pool.max-idle=10
spring.redis.jedis.pool.min-idle=0

3. ZooKeeper配置

OCP需要连接ZooKeeper存储分布式锁和配置信息,配置文件为ocp.properties中的ZooKeeper相关配置:

properties
# ZooKeeper连接配置
zookeeper.servers=zk1:2181,zk2:2181,zk3:2181
zookeeper.session.timeout=30000
zookeeper.connection.timeout=30000
zookeeper.retry.base.sleep.time=1000
zookeeper.retry.max.count=3

4. OceanBase连接配置

OCP需要连接OceanBase集群进行管理,配置文件为ocp.properties中的OceanBase相关配置:

properties
# OceanBase连接配置
oceanbase.rootservice.list=192.168.1.20:2882
oceanbase.cluster.name=obcluster
oceanbase.sys.username=root@sys
oceanbase.sys.password=root

OCP部署验证

1. 访问OCP Web界面

bash
# 访问OCP Web界面
http://ocp-host:8080
# 或使用HTTPS
https://ocp-host:443

2. 登录OCP

  1. 打开浏览器,输入OCP的访问地址
  2. 输入用户名和密码(默认用户名:admin,默认密码:admin123)
  3. 登录OCP控制台

3. 验证OCP功能

  1. 集群管理:验证是否能够查看和管理OceanBase集群
  2. 租户管理:验证是否能够创建和管理租户
  3. 监控告警:验证是否能够查看监控数据和配置告警
  4. 备份恢复:验证是否能够创建和管理备份恢复任务
  5. 用户管理:验证是否能够创建和管理用户
  6. 系统管理:验证是否能够管理OCP的系统配置

4. 验证OCP高可用性

  1. 模拟节点故障:关闭一个OCP Server节点
  2. 验证服务可用性:确认OCP服务仍然可用
  3. 验证数据一致性:确认数据没有丢失
  4. 恢复节点:重新启动故障节点,确认节点能够重新加入集群

OCP部署最佳实践

1. 部署规划

  • 硬件规划:根据集群规模和业务需求,合理规划硬件资源
  • 网络规划:设计合理的网络架构,确保节点间网络通畅
  • 存储规划:选择高性能的存储设备,确保数据的可靠性和性能
  • 安全规划:配置防火墙、SSL/TLS、访问控制等安全措施

2. 性能优化

  • 数据库优化:优化MySQL的配置,提高OCP的元数据访问性能
  • Redis优化:优化Redis的配置,提高OCP的缓存性能
  • JVM优化:优化OCP的JVM参数,提高OCP的运行性能
  • 连接池优化:优化数据库连接池和Redis连接池的配置

3. 安全加固

  • 访问控制:配置OCP的访问控制,限制用户的访问权限
  • SSL/TLS:启用OCP的SSL/TLS功能,加密通信数据
  • 审计日志:启用OCP的审计日志,记录所有操作
  • 定期备份:定期备份OCP的元数据,确保数据安全

4. 监控告警

  • 监控OCP本身:监控OCP的运行状态、性能指标和资源使用情况
  • 配置告警规则:配置合理的告警规则,及时发现和处理问题
  • 监控基础服务:监控MySQL、Redis、ZooKeeper等基础服务的状态

5. 升级维护

  • 定期升级:定期升级OCP到最新版本,获取新功能和 bug 修复
  • 备份数据:在升级前备份OCP的元数据,确保升级失败时可以恢复
  • 测试升级:在测试环境中测试升级过程,验证升级的可行性
  • 滚动升级:对于集群部署,采用滚动升级方式,确保服务可用性

OCP部署常见问题

1. OCP启动失败

问题描述:执行./start.sh后,OCP启动失败

可能原因

  • 数据库连接失败
  • Redis连接失败
  • ZooKeeper连接失败
  • 端口被占用
  • 配置文件错误

解决方法

  • 检查数据库、Redis、ZooKeeper的连接配置
  • 检查端口是否被占用:netstat -tlnp | grep 端口号
  • 查看OCP日志,定位具体错误:tail -f /opt/ocp/logs/ocp.log
  • 检查配置文件中的参数是否正确

2. 无法访问OCP Web界面

问题描述:浏览器无法访问OCP的Web界面

可能原因

  • OCP服务未启动
  • 防火墙未关闭
  • 端口未开放
  • Nginx配置错误

解决方法

  • 检查OCP服务是否启动:./status.sh
  • 检查防火墙状态:systemctl status firewalld
  • 检查端口是否开放:netstat -tlnp | grep 8080
  • 检查Nginx配置是否正确

3. OCP连接OceanBase失败

问题描述:OCP无法连接OceanBase集群

可能原因

  • OceanBase集群未启动
  • OceanBase连接配置错误
  • OceanBase的root@sys密码错误
  • 网络连接失败

解决方法

  • 检查OceanBase集群状态:obd cluster display obcluster
  • 检查OCP配置文件中的OceanBase连接参数
  • 验证OceanBase的root@sys密码是否正确
  • 检查OCP节点与OceanBase节点之间的网络连接

4. OCP监控数据缺失

问题描述:OCP的监控页面没有数据

可能原因

  • 监控采集器未启动
  • 监控数据存储配置错误
  • 网络连接失败

解决方法

  • 检查监控采集器的状态
  • 检查监控数据存储的配置
  • 检查监控采集器与OCP之间的网络连接

OCP部署案例分析

案例1:单节点OCP部署

背景:某公司需要部署OCP管理一个OceanBase测试集群,集群规模较小,对可用性要求不高。

解决方案:采用单节点OCP部署方案

实施步骤

  1. 准备一台符合要求的服务器
  2. 按照单节点部署的步骤,部署OCP及其依赖服务
  3. 配置OCP连接OceanBase集群
  4. 验证OCP的功能

实施效果

  • 成功部署了OCP,能够管理OceanBase测试集群
  • 部署简单,维护成本低
  • 满足测试环境的需求

案例2:集群OCP部署

背景:某公司需要部署OCP管理多个OceanBase生产集群,集群规模大,对可用性要求高。

解决方案:采用集群OCP部署方案

实施步骤

  1. 准备11台服务器,包括3个OCP Server节点、3个MySQL节点、3个Redis节点、2个Nginx节点
  2. 部署基础服务(ZooKeeper、Redis、MySQL)
  3. 部署OCP Server集群
  4. 部署Nginx负载均衡
  5. 配置OCP连接所有OceanBase集群
  6. 验证OCP的功能和高可用性

实施效果

  • 成功部署了高可用的OCP集群,能够管理多个OceanBase生产集群
  • OCP具有高可用性,单个节点故障不会影响服务
  • 能够满足大规模生产环境的需求

常见问题(FAQ)

Q1: OCP支持管理哪些版本的OceanBase?

A1: OCP支持管理OceanBase 2.2.x及以上版本,建议使用最新版本的OCP管理最新版本的OceanBase,以获得最佳的兼容性和功能支持。

Q2: OCP的默认用户名和密码是什么?

A2: OCP的默认用户名为admin,默认密码为admin123,首次登录后建议立即修改密码。

Q3: OCP需要多少资源?

A3: OCP的资源需求取决于管理的OceanBase集群规模和业务量,一般来说:

  • 管理1-10个OceanBase集群,建议使用16核32GB内存
  • 管理10-50个OceanBase集群,建议使用32核64GB内存
  • 管理50个以上OceanBase集群,建议使用64核128GB内存

Q4: 如何备份OCP的数据?

A4: OCP的数据主要存储在MySQL数据库中,备份OCP的数据就是备份MySQL数据库:

  • 可以使用MySQL的备份工具(如mysqldump、xtrabackup)备份数据库
  • 可以配置MySQL的主从复制,实现数据的实时备份
  • 可以使用云服务的备份功能,如RDS的自动备份

Q5: 如何升级OCP?

A5: 升级OCP的步骤:

  1. 备份OCP的配置文件和数据库
  2. 下载最新版本的OCP安装包
  3. 停止当前OCP服务
  4. 解压新版本安装包,覆盖旧版本
  5. 执行升级脚本
  6. 启动OCP服务
  7. 验证升级结果

Q6: OCP支持哪些浏览器?

A6: OCP支持以下浏览器:

  • Chrome 80+
  • Firefox 75+
  • Safari 13+
  • Edge 80+

Q7: 如何监控OCP本身?

A7: 可以通过以下方式监控OCP本身:

  • 使用OCP自带的监控功能,监控OCP的运行状态
  • 使用Prometheus + Grafana监控OCP的JVM、数据库连接等指标
  • 使用Zabbix等监控工具监控OCP的进程、端口等

Q8: OCP的日志在哪里?

A8: OCP的日志默认位于/opt/ocp/logs/目录下,主要包括:

  • ocp.log:OCP的主要日志
  • access.log:HTTP访问日志
  • error.log:错误日志
  • gc.log:JVM GC日志