主题
OpenStack 千节点架构设计
1. 整体架构
1.1 设计原则
| 原则 | 说明 |
|---|---|
| 高可用 | 所有控制节点三副本部署,消除单点故障 |
| 可扩展 | 计算节点支持在线扩容,存储节点支持动态扩容 |
| 松耦合 | 控制平面与数据平面分离,组件间通过消息队列通信 |
| 自动化 | 全链路自动化部署、运维、监控 |
| 安全合规 | 多租户隔离、网络微分段、全链路审计 |
1.2 版本选型
| 组件 | 版本 | 说明 |
|---|---|---|
| OpenStack | 2024.2 (Dalmatian) 或 2025.1 (Epoxy) | 最新稳定版本 |
| Ceph | Reef (18.2.x) 或 Squid (19.2.x) | 与 OpenStack 兼容 |
| OVN | 24.03+ | 替代传统 OVS agent |
| 操作系统 | Rocky Linux 9.x / Ubuntu 22.04 LTS | 企业级长期支持 |
| Docker | 24.x | Kolla-Ansible 容器化 |
| MariaDB | 10.11+ Galera Cluster | 高可用数据库 |
| RabbitMQ | 3.12+ Mirrored Queue | 消息队列 |
| HAProxy | 2.8+ | API 负载均衡 |
| Keepalived | 2.2+ | VIP 高可用 |
1.3 部署工具选型: Kolla-Ansible
选择理由:
- 容器化部署: 所有服务以 Docker 容器运行,升级回滚方便
- 生产验证: 全球数千家企业生产环境使用
- 自动化程度高: Ansible 驱动,支持幂等操作
- 社区活跃: OpenStack 官方推荐
| 工具 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| Kolla-Ansible | 容器化、自动化 | 学习曲线陡 | 大规模生产 ✅ |
| TripleO | RH 官方支持 | 复杂度高 | RHOS 用户 |
| OpenStack-Ansible | 灵活度高 | 非容器化 | 定制需求 |
2. 节点角色规划
2.1 节点类型与数量
| 角色 | 数量 | CPU | 内存 | 系统盘 | 数据盘 |
|---|---|---|---|---|---|
| Controller | 5 | 32C | 256GB | 2x480G SSD RAID1 | 2x1.92T NVMe |
| Compute | 1000+ | 64C-128C | 512GB-1TB | 2x480G SSD RAID1 | - |
| Storage OSD | 30+ | 32C | 128GB | 2x480G SSD RAID1 | 12x8T HDD + 2x1.92T NVMe |
| Ceph Mon | 3 | 16C | 64GB | 2x480G SSD RAID1 | 2x1.92T NVMe |
| Network | 4 | 16C | 64GB | 2x480G SSD RAID1 | - |
| Management | 3 | 16C | 64GB | 2x480G SSD RAID1 | 4x4T RAID5 |
总计: ~1045+ 台物理服务器
2.2 超分比设计
| 资源 | 超分比 | 说明 |
|---|---|---|
| vCPU | 4:1 (通用) / 2:1 (高性能) | 按业务类型配置 |
| 内存 | 1:1 (不超分) | 生产环境建议 |
| 磁盘 | 按实际容量 | Ceph 提供 |
2.3 服务组件矩阵
| 服务 | Controller | Compute | Storage | Network |
|---|---|---|---|---|
| Keystone | ✅ | - | - | - |
| Nova API | ✅ | - | - | - |
| Nova Compute | - | ✅ | - | - |
| Nova Scheduler | ✅ | - | - | - |
| Neutron Server | ✅ | - | - | - |
| OVN NB/SB | ✅ | - | - | - |
| ovn-controller | - | ✅ | - | ✅ |
| Glance | ✅ | - | - | - |
| Cinder API | ✅ | - | - | - |
| Ceph MON/OSD | - | - | ✅ | - |
| Horizon | ✅ | - | - | - |
| Heat | ✅ | - | - | - |
| Octavia | ✅ | - | - | ✅ |
| Barbican | ✅ | - | - | - |
3. 高可用设计
3.1 控制平面 HA
- 5 控制节点: 满足 Galera 奇数要求,支持 2 节点故障
- MariaDB Galera: 5 节点同步复制
- RabbitMQ: 5 节点镜像队列
- HAProxy + Keepalived: 主备 VIP 自动切换
3.2 数据平面 HA
| 组件 | 高可用策略 |
|---|---|
| 计算节点 | VM HA — 故障自动重建 |
| Ceph 存储 | 3 副本 + CRUSH 跨机架 |
| 网络 | OVN 多活网关 |
| 负载均衡 | Octavia active-standby |
3.3 故障域隔离
机架1 机架2 机架3 机架4 机架5
┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐
│Ctrl-1│ │Ctrl-2│ │Ctrl-3│ │Ctrl-4│ │Ctrl-5│
│Stor-1│ │Stor-2│ │Stor-3│ │Stor-4│ │Stor-5│
│Comp │ │Comp │ │Comp │ │Comp │ │Comp │
└──────┘ └──────┘ └──────┘ └──────┘ └──────┘- 控制节点跨 5 机架,任意 2 机架故障不影响服务
- Ceph CRUSH 规则确保副本跨机架
- 每机架独立 TOR 交换机上联 Spine
4. 迁移策略 (Virsh → OpenStack)
4.1 迁移路径
| 阶段 | 内容 | 周期 |
|---|---|---|
| Phase 1 | 资产清点、依赖分析、网络/容量规划 | 4-6 周 |
| Phase 2 | OpenStack 上线、新业务部署、灰度迁移 | 8-12 周 |
| Phase 3 | 剩余 VM 迁移、旧平台下线 | 4-6 周 |
4.2 VM 迁移方法
| 方法 | 场景 | 停机时间 |
|---|---|---|
| virt-v2v + 镜像导入 | 离线迁移 | 分钟级 |
| 块设备热迁移 | 在线迁移 | 秒级 |
| OVA/OVF 导入 | 跨平台 | 分钟级 |
bash
# 迁移示例
# 1. 导出磁盘
qemu-img convert /var/lib/libvirt/images/vm.qcow2 -O raw vm.raw
# 2. 上传 Glance
openstack image create "vm" --file vm.raw --disk-format raw --container-format bare
# 3. 创建实例
openstack server create "vm-new" --image "vm" --flavor "m1.large" --network "biz-net"