外观
OceanBase OCP部署
OCP部署准备
1. 硬件要求
| 组件 | 最低配置 | 推荐配置 |
|---|---|---|
| CPU | 8核 | 16核及以上 |
| 内存 | 16GB | 32GB及以上 |
| 磁盘 | 200GB SSD | 500GB SSD及以上 |
| 网络 | 1Gbps | 10Gbps及以上 |
2. 软件要求
| 组件 | 版本要求 |
|---|---|
| 操作系统 | CentOS 7.2+ / RedHat 7.2+ |
| JDK | 1.8.0_202及以上 |
| MySQL | 5.7.20+ / 8.0.17+ |
| Nginx | 1.16.1+ |
| Redis | 5.0+ |
| ZooKeeper | 3.4.14+ |
| OceanBase | 2.2.x+ |
3. 网络要求
| 网络类型 | 要求 |
|---|---|
| 端口开放 | 80, 443, 2881, 2882, 3888, 2181, 6379等 |
| 网络延迟 | 节点间网络延迟 < 1ms |
| 带宽 | 节点间带宽 > 1Gbps |
4. 系统配置
4.1 关闭防火墙
bash
systemctl stop firewalld
systemctl disable firewalld4.2 关闭SELinux
bash
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 04.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.conf4.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
EOFOCP部署方式
1. 单节点部署
单节点部署适用于测试环境或小规模生产环境,部署步骤如下:
1.1 安装依赖
bash
yum install -y wget curl gcc gcc-c++ make cmake openssl-devel zlib-devel libaio-devel libcurl-devel libxml2-devel1.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/profile1.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 redis1.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 start1.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.sh2. 集群部署
集群部署适用于大规模生产环境,提供高可用性和扩展性,部署步骤如下:
2.1 部署架构
OCP集群部署架构包括:
- 3个OCP Server节点
- 3个MySQL节点(主从复制或MGR)
- 3个Redis节点(集群模式)
- 3个ZooKeeper节点(集群模式)
- 2个Nginx节点(负载均衡)
2.2 部署步骤
- 准备所有节点:按照单节点部署的要求,准备所有节点的系统环境
- 部署基础服务:
- 部署3个ZooKeeper节点,形成集群
- 部署3个Redis节点,形成集群
- 部署3个MySQL节点,配置主从复制或MGR
- 部署OCP Server:
- 在3个节点上部署OCP Server
- 配置OCP Server的集群参数
- 启动所有OCP Server节点
- 部署Nginx:
- 在2个节点上部署Nginx
- 配置Nginx负载均衡,指向OCP Server节点
- 启动Nginx服务
- 验证部署:
- 访问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=18000002. 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=03. 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=34. 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=rootOCP部署验证
1. 访问OCP Web界面
bash
# 访问OCP Web界面
http://ocp-host:8080
# 或使用HTTPS
https://ocp-host:4432. 登录OCP
- 打开浏览器,输入OCP的访问地址
- 输入用户名和密码(默认用户名:admin,默认密码:admin123)
- 登录OCP控制台
3. 验证OCP功能
- 集群管理:验证是否能够查看和管理OceanBase集群
- 租户管理:验证是否能够创建和管理租户
- 监控告警:验证是否能够查看监控数据和配置告警
- 备份恢复:验证是否能够创建和管理备份恢复任务
- 用户管理:验证是否能够创建和管理用户
- 系统管理:验证是否能够管理OCP的系统配置
4. 验证OCP高可用性
- 模拟节点故障:关闭一个OCP Server节点
- 验证服务可用性:确认OCP服务仍然可用
- 验证数据一致性:确认数据没有丢失
- 恢复节点:重新启动故障节点,确认节点能够重新加入集群
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部署方案
实施步骤:
- 准备一台符合要求的服务器
- 按照单节点部署的步骤,部署OCP及其依赖服务
- 配置OCP连接OceanBase集群
- 验证OCP的功能
实施效果:
- 成功部署了OCP,能够管理OceanBase测试集群
- 部署简单,维护成本低
- 满足测试环境的需求
案例2:集群OCP部署
背景:某公司需要部署OCP管理多个OceanBase生产集群,集群规模大,对可用性要求高。
解决方案:采用集群OCP部署方案
实施步骤:
- 准备11台服务器,包括3个OCP Server节点、3个MySQL节点、3个Redis节点、2个Nginx节点
- 部署基础服务(ZooKeeper、Redis、MySQL)
- 部署OCP Server集群
- 部署Nginx负载均衡
- 配置OCP连接所有OceanBase集群
- 验证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的步骤:
- 备份OCP的配置文件和数据库
- 下载最新版本的OCP安装包
- 停止当前OCP服务
- 解压新版本安装包,覆盖旧版本
- 执行升级脚本
- 启动OCP服务
- 验证升级结果
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日志
