外观
OceanBase 部署规范
硬件配置规范
1. 服务器选型
根据业务规模和性能要求,选择合适的服务器配置:
| 配置类型 | CPU | 内存 | 存储 | 网络 | 适用场景 |
|---|---|---|---|---|---|
| 入门级 | 8核 | 32GB | 1TB SSD | 千兆网卡 | 开发测试、小规模应用 |
| 标准级 | 16核 | 64GB | 2TB SSD | 万兆网卡 | 中等规模应用、生产环境 |
| 高性能级 | 32核 | 128GB+ | 4TB SSD | 万兆网卡×2 | 大规模应用、核心业务 |
| 超高性能级 | 64核 | 256GB+ | 8TB SSD+ | 25G/100G网卡 | 超大规模应用、金融级业务 |
2. CPU 配置要求
- CPU 架构:推荐使用 x86_64 架构,支持 AES-NI 指令集
- CPU 主频:推荐 2.5GHz 以上
- CPU 核心数:根据业务负载选择,推荐 16 核以上
- CPU 缓存:推荐 L3 缓存 16MB 以上
3. 内存配置要求
- 内存容量:推荐内存容量为 CPU 核心数的 4-8 倍
- 内存类型:推荐使用 DDR4 内存,频率 2666MHz 以上
- 内存通道:推荐使用 8 通道内存配置,提高内存带宽
- 内存可靠性:推荐启用 ECC 内存,提高数据可靠性
4. 存储配置要求
- 存储介质:推荐使用 SSD 存储,提高 I/O 性能
- 存储容量:
- 数据盘:根据数据量和副本数计算,推荐每节点 2TB 以上
- 日志盘:推荐每节点 1TB 以上,使用高性能 SSD
- 系统盘:推荐 200GB 以上
- 存储阵列:生产环境推荐使用 RAID 卡,配置 RAID 10
- I/O 性能:
- 随机读写 IOPS:推荐 10 万以上
- 顺序读写带宽:推荐 1GB/s 以上
- 延迟:推荐 1ms 以下
5. 网络配置要求
- 网络带宽:推荐使用万兆网卡,核心节点推荐使用 25G/100G 网卡
- 网络接口:推荐每节点配置 2 个以上网络接口,分离业务流量和管理流量
- 网络拓扑:推荐使用 spine-leaf 架构,减少网络延迟
- 网络设备:推荐使用高性能交换机,支持低延迟转发
软件配置规范
1. 操作系统要求
| 操作系统 | 版本要求 | 推荐版本 |
|---|---|---|
| CentOS | 7.6 及以上 | 7.9 |
| Red Hat | 7.6 及以上 | 7.9 |
| Ubuntu | 18.04 及以上 | 20.04 |
| SUSE | 12 SP5 及以上 | 15 SP3 |
2. 操作系统配置
2.1 系统参数配置
编辑 /etc/sysctl.conf,添加以下内容:
txt
# 文件描述符限制
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
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_max_orphans = 32768
# 内存管理配置
vm.swappiness = 0
vm.min_free_kbytes = 2097152
vm.dirty_ratio = 80
vm.dirty_background_ratio = 5应用系统参数:
bash
sysctl -p2.2 资源限制配置
编辑 /etc/security/limits.conf,添加以下内容:
txt
* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536
* soft stack 65536
* hard stack 655362.3 文件系统配置
- 文件系统类型:推荐使用 ext4 或 xfs 文件系统
- 挂载选项:添加
noatime,nodiratime选项,提高 I/O 性能 - 磁盘调度策略:推荐使用 deadline 调度策略
bash
# 查看当前磁盘调度策略
cat /sys/block/sda/queue/scheduler
# 设置磁盘调度策略为 deadline
echo deadline > /sys/block/sda/queue/scheduler3. 依赖软件安装
3.1 必要依赖
bash
# CentOS/RHEL
yum install -y yum-utils device-mapper-persistent-data lvm2 gcc gcc-c++ make openssl-devel zlib-devel libaio-devel libevent-devel libxml2-devel libtool
# Ubuntu
dpkg --add-architecture i386
apt-get update
apt-get install -y libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 build-essential libssl-dev zlib1g-dev libaio-dev libevent-dev libxml2-dev libtool3.2 OceanBase 相关软件
- OBD:OceanBase 部署工具,用于集群部署和管理
- OCP:OceanBase 云平台,用于集群监控和管理(可选)
- OBProxy:OceanBase 代理,用于客户端连接管理
网络规划规范
1. 网络架构设计
- 网络分区:将网络分为业务网络、管理网络和复制网络
- 业务网络:用于客户端访问,推荐使用万兆网卡
- 管理网络:用于集群管理和监控,推荐使用千兆网卡
- 复制网络:用于节点间数据复制,推荐使用万兆网卡
2. IP 地址规划
- 节点 IP:为每个节点分配固定 IP 地址
- VIP 地址:为集群分配 VIP 地址,用于故障转移
- 端口规划:
- MySQL 端口:2881
- RPC 端口:2882
- OBProxy 端口:2883
- OCP 端口:8080(HTTP)、443(HTTPS)
- Prometheus 端口:9090
- Grafana 端口:3000
3. 网络安全配置
- 防火墙配置:开放必要端口,关闭不必要的服务
- 网络隔离:使用 VLAN 或子网隔离不同类型的网络流量
- 网络监控:部署网络监控工具,监控网络流量和延迟
- 网络冗余:配置链路聚合,提高网络可靠性
存储规划规范
1. 存储架构设计
- 存储分离:将数据存储和日志存储分离,提高 I/O 性能
- 多路径配置:配置多路径软件,提高存储可靠性
- 存储冗余:使用 RAID 10 或多副本存储,提高数据可靠性
2. 存储目录规划
| 目录类型 | 推荐路径 | 用途 | 存储要求 |
|---|---|---|---|
| 系统目录 | / | 操作系统安装 | 200GB SSD |
| 数据目录 | /data/oceanbase | 数据文件存储 | 2TB+ SSD |
| 日志目录 | /log/oceanbase | 日志文件存储 | 1TB+ 高性能 SSD |
| 安装目录 | /home/oceanbase | 软件安装 | 100GB SSD |
| 临时目录 | /tmp | 临时文件存储 | 100GB SSD |
3. 存储性能优化
- SSD 优化:启用 TRIM 功能,提高 SSD 性能和寿命
- I/O 调度:使用 deadline 调度策略
- 文件系统优化:添加
noatime,nodiratime挂载选项 - 禁用磁盘缓存:生产环境推荐禁用磁盘缓存,使用电池备份的 RAID 卡缓存
安全配置规范
1. 系统安全加固
- 关闭不必要的服务:关闭 telnet、ftp 等不必要的服务
- 启用防火墙:配置 iptables 或 firewalld,开放必要端口
- 禁用 root 远程登录:创建普通用户,使用 sudo 授权管理
- 启用 SELinux:生产环境推荐启用 SELinux,配置为 enforcing 模式
- 定期更新系统补丁:定期更新操作系统和软件补丁
2. 数据库安全配置
- 设置强密码:为数据库用户设置强密码,定期更换
- 最小权限原则:为用户分配最小必要权限
- 启用审计日志:记录数据库操作日志,便于审计和故障排查
- 加密通信:启用 TLS/SSL 加密,保护数据传输安全
- 定期备份:定期备份数据库,确保数据安全
3. 访问控制配置
- 网络访问控制:使用防火墙限制数据库访问 IP
- 用户访问控制:配置用户访问策略,限制用户权限
- 应用访问控制:使用应用账户访问数据库,避免直接使用管理员账户
- 审计和监控:监控数据库访问行为,及时发现异常访问
部署架构规范
1. 集群架构设计
- 节点数量:推荐 3 个以上节点,确保高可用性
- 副本数:推荐 3 副本配置,提高数据可靠性
- Zone 配置:根据数据中心或可用区配置 Zone,推荐每个 Zone 部署相同数量的节点
- RootService 配置:推荐每个 Zone 部署一个 RootService,提高集群可靠性
2. 部署模式选择
根据业务需求和技术能力,选择合适的部署模式:
| 部署模式 | 部署工具 | 适用场景 | 优势 | 劣势 |
|---|---|---|---|---|
| OBD 部署 | OBD | 开发测试、生产环境 | 部署简单、配置灵活 | 管理功能有限 |
| OCP 部署 | OCP | 生产环境、大规模集群 | 管理功能全面、可视化操作 | 部署复杂、资源消耗大 |
| 手动部署 | 手动 | 特殊场景、定制化部署 | 高度定制化 | 部署复杂、容易出错 |
| 容器部署 | Docker/K8s | 云原生环境、微服务架构 | 部署灵活、资源隔离 | 性能开销、管理复杂 |
3. 高可用性设计
- 多副本部署:部署 3 副本或以上,确保数据可靠性
- 跨可用区部署:在不同可用区部署节点,提高集群可用性
- 故障自动转移:启用故障自动转移功能,减少故障恢复时间
- 负载均衡:部署多个 OBProxy 实例,实现负载均衡和故障转移
4. 扩展性设计
- 水平扩展:支持在线添加节点,扩展集群容量
- 资源池扩展:支持在线扩展资源池,调整资源分配
- 租户扩展:支持在线创建租户,隔离不同业务
- 存储扩展:支持在线扩展存储容量,满足业务增长需求
部署流程规范
1. 部署前准备
- 环境检查:检查硬件、软件、网络和存储配置
- 规划设计:设计集群架构、网络规划和存储规划
- 文档准备:准备部署文档、配置模板和应急预案
- 工具准备:准备部署工具和监控工具
2. 部署实施
- 基础环境配置:配置操作系统、网络和存储
- 软件安装:安装 OceanBase 相关软件
- 集群部署:使用 OBD 或 OCP 部署集群
- 集群配置:配置集群参数和租户资源
- 功能验证:验证集群功能和性能
3. 部署后验证
- 集群状态检查:检查集群状态和节点状态
- 性能测试:进行性能测试,验证集群性能
- 故障测试:进行故障测试,验证集群高可用性
- 监控配置:配置监控和告警
- 文档更新:更新部署文档和运维手册
最佳实践
1. 硬件配置最佳实践
- 优先选择高性能 SSD 存储,提高 I/O 性能
- 使用万兆网卡,满足节点间数据复制需求
- 配置足够的内存,提高查询性能和并发能力
- 启用 ECC 内存,提高数据可靠性
2. 网络配置最佳实践
- 分离业务网络、管理网络和复制网络
- 使用固定 IP 地址,避免 IP 地址冲突
- 配置合理的 MTU 值,提高网络传输效率
- 启用网络监控,及时发现网络问题
3. 存储配置最佳实践
- 分离数据存储和日志存储,提高 I/O 性能
- 使用 RAID 10 配置,提高存储可靠性和性能
- 配置合理的文件系统挂载选项,提高 I/O 性能
- 定期监控存储使用情况,避免存储容量不足
4. 安全配置最佳实践
- 启用 TLS/SSL 加密,保护数据传输安全
- 配置强密码策略,定期更换密码
- 启用审计日志,便于审计和故障排查
- 定期进行安全扫描,发现安全漏洞
5. 部署架构最佳实践
- 部署 3 个以上节点,确保高可用性
- 配置 3 副本,提高数据可靠性
- 跨可用区部署,提高集群可用性
- 部署多个 OBProxy 实例,实现负载均衡和故障转移
常见问题(FAQ)
Q1: 如何选择合适的服务器配置?
A1: 选择服务器配置需要考虑以下因素:
- 业务规模:根据数据量和并发用户数选择
- 性能要求:根据 QPS/TPS 要求选择
- 可靠性要求:根据业务重要性选择
- 预算限制:在满足性能和可靠性要求的前提下,考虑预算限制
Q2: 生产环境推荐使用哪种部署模式?
A2: 生产环境推荐使用 OCP 部署模式,OCP 提供了全面的集群管理功能,包括监控、告警、备份恢复和性能优化等。对于小规模集群或资源有限的环境,可以使用 OBD 部署模式。
Q3: 如何配置跨可用区部署?
A3: 配置跨可用区部署需要以下步骤:
- 在每个可用区部署相同数量的节点
- 为每个可用区创建一个 Zone
- 配置副本分布策略,确保每个 Zone 都有副本
- 配置 RootService 分布,确保每个 Zone 都有 RootService
Q4: 如何优化 OceanBase 存储性能?
A4: 优化 OceanBase 存储性能可以从以下几个方面入手:
- 使用高性能 SSD 存储
- 分离数据存储和日志存储
- 配置合理的文件系统挂载选项
- 使用 deadline 磁盘调度策略
- 调整 OceanBase 存储相关参数
Q5: 如何确保 OceanBase 集群的安全性?
A5: 确保 OceanBase 集群的安全性可以从以下几个方面入手:
- 启用 TLS/SSL 加密,保护数据传输安全
- 配置强密码策略,定期更换密码
- 启用审计日志,便于审计和故障排查
- 配置网络访问控制,限制数据库访问 IP
- 定期进行安全扫描,发现安全漏洞
Q6: 如何规划 OceanBase 集群的扩展性?
A6: 规划 OceanBase 集群的扩展性需要考虑以下因素:
- 业务增长趋势:根据业务增长趋势规划集群容量
- 节点扩展能力:确保集群支持在线添加节点
- 资源扩展能力:确保集群支持在线扩展资源
- 存储扩展能力:确保集群支持在线扩展存储容量
Q7: 如何验证 OceanBase 集群的性能?
A7: 验证 OceanBase 集群的性能可以使用以下方法:
- 使用压测工具(如 SysBench、TPCC)进行性能测试
- 监控集群关键性能指标(如 QPS、TPS、响应时间)
- 进行并发测试,验证集群并发处理能力
- 进行大数据量测试,验证集群处理大规模数据的能力
Q8: 如何制定 OceanBase 集群的备份策略?
A8: 制定 OceanBase 集群的备份策略需要考虑以下因素:
- 数据重要性:根据数据重要性选择备份频率
- 恢复时间目标(RTO):根据 RTO 要求选择备份类型
- 恢复点目标(RPO):根据 RPO 要求选择备份频率
- 存储成本:在满足 RTO 和 RPO 要求的前提下,考虑存储成本
