IaaS 资源层详解
IaaS 核心概念
IaaS(Infrastructure as a Service,基础设施即服务)是云计算的最底层服务模式,将计算、存储、网络资源以服务形式提供给用户,用户无需关心底层硬件。
用户视角:
我要一台 8C/32GB/200GB 的虚拟机,运行 CentOS 7
↓
CloudOS IaaS 层:
1. 调度器选择合适的计算节点
2. 从镜像服务获取 CentOS 7 镜像
3. 在 Ceph 上创建 200GB 系统盘
4. 分配虚拟网卡,接入租户网络
5. 启动 VM,返回 IP 地址计算服务(Nova)
虚拟机规格(Flavor)
CloudOS 预置多种规格,也支持自定义:
| 规格名称 | vCPU | 内存 | 系统盘 | 适用场景 |
|---|---|---|---|---|
| c1.small | 1 | 2GB | 40GB | 开发测试 |
| c1.medium | 2 | 4GB | 40GB | 轻量应用 |
| c1.large | 4 | 8GB | 40GB | Web 服务 |
| c1.xlarge | 8 | 16GB | 40GB | 中型应用 |
| m1.large | 4 | 32GB | 40GB | 内存密集 |
| m1.xlarge | 8 | 64GB | 40GB | 数据库 |
| g1.large | 8 | 64GB | 40GB + GPU×1 | AI 推理 |
VM 生命周期管理
创建(Create)
↓
运行(Running) ←→ 暂停(Paused)
↓ ↓
关机(Stopped) ←→ 挂起(Suspended)
↓
删除(Deleted)常用操作:
- 热迁移:VM 不停机迁移到其他计算节点
- 快照:对 VM 当前状态创建快照,支持回滚
- 克隆:基于现有 VM 快速创建相同配置的新 VM
- 调整规格:在线/离线调整 vCPU 和内存
CPU 超分比
CloudOS 支持 CPU 超分(Overcommit),默认比例:
物理 CPU 核数 × 超分比 = 可分配 vCPU 总数
示例:
物理 CPU:2 × 32 核 = 64 核
超分比:4:1
可分配 vCPU:64 × 4 = 256 vCPU注意:生产环境建议超分比不超过 4:1,数据库等 CPU 密集型应用建议 1:1 或 2:1。
网络服务(Neutron)
网络类型
| 网络类型 | 说明 | 适用场景 |
|---|---|---|
| 平面网络(Flat) | 直接映射物理网络,无隔离 | 管理网络 |
| VLAN 网络 | 基于 802.1Q VLAN 隔离 | 传统数据中心 |
| VxLAN 网络 | Overlay 隧道,支持大规模隔离 | 推荐,支持 1600 万租户 |
| GRE 网络 | 通用路由封装隧道 | 特殊场景 |
安全组(Security Group)
安全组是虚拟防火墙,控制 VM 的入站/出站流量:
bash
# 创建安全组
openstack security group create web-sg --description "Web服务器安全组"
# 允许 HTTP/HTTPS 入站
openstack security group rule create web-sg \
--protocol tcp --dst-port 80 --remote-ip 0.0.0.0/0
openstack security group rule create web-sg \
--protocol tcp --dst-port 443 --remote-ip 0.0.0.0/0
# 允许 SSH(仅限运维网段)
openstack security group rule create web-sg \
--protocol tcp --dst-port 22 --remote-ip 10.0.0.0/8浮动 IP(Floating IP)
浮动 IP 是外部可访问的公网 IP,通过 NAT 映射到 VM 的私有 IP:
外部网络 → 浮动IP(203.0.113.10) → NAT → VM私有IP(192.168.1.100)负载均衡(LBaaS)
CloudOS 内置负载均衡服务,支持:
- 协议:HTTP、HTTPS、TCP、UDP
- 算法:轮询、最少连接、源 IP Hash
- 健康检查:HTTP/TCP 健康探测
- SSL 卸载:在 LB 层终止 SSL,减轻后端压力
存储服务(Cinder/Swift)
块存储(Cinder)
块存储提供类似物理硬盘的存储卷,可挂载到 VM:
bash
# 创建 100GB 数据卷
openstack volume create --size 100 data-vol-01
# 挂载到 VM
openstack server add volume <vm-id> <volume-id>
# 创建卷快照
openstack volume snapshot create --volume data-vol-01 snap-20240101卷类型(Volume Type):
| 类型 | 后端 | IOPS | 适用场景 |
|---|---|---|---|
| standard | Ceph HDD | ~3000 | 普通应用 |
| ssd | Ceph SSD | ~50000 | 数据库 |
| high-perf | H3C 全闪 | ~500000 | 高性能计算 |
对象存储(Swift/RGW)
对象存储适合存储非结构化数据(图片、视频、备份文件):
python
import boto3
# 连接 H3C 对象存储(S3 兼容接口)
s3 = boto3.client(
's3',
endpoint_url='http://rgw.example.com:7480',
aws_access_key_id='your-access-key',
aws_secret_access_key='your-secret-key'
)
# 上传文件
s3.upload_file('local-file.txt', 'my-bucket', 'remote-file.txt')
# 下载文件
s3.download_file('my-bucket', 'remote-file.txt', 'downloaded.txt')
# 列出对象
response = s3.list_objects_v2(Bucket='my-bucket')
for obj in response['Contents']:
print(obj['Key'], obj['Size'])镜像服务(Glance)
支持的镜像格式
| 格式 | 说明 |
|---|---|
| qcow2 | QEMU 写时复制格式,推荐 |
| raw | 原始格式,性能最好 |
| vmdk | VMware 格式,迁移用 |
| iso | 光盘镜像,用于安装 |
镜像管理最佳实践
bash
# 上传镜像
openstack image create "CentOS-7.9" \
--file CentOS-7-x86_64-GenericCloud.qcow2 \
--disk-format qcow2 \
--container-format bare \
--public
# 查看镜像列表
openstack image list
# 设置镜像属性(最小内存要求)
openstack image set --min-ram 1024 <image-id>IaaS 资源配额管理
CloudOS 通过配额(Quota)限制每个租户的资源使用量:
租户配额示例:
├── vCPU:100 核
├── 内存:200 GB
├── 实例数:50 台
├── 浮动 IP:10 个
├── 安全组:20 个
├── 块存储:10 TB
└── 对象存储:50 TBbash
# 查看租户配额
openstack quota show <project-id>
# 修改配额
openstack quota set --cores 200 --ram 409600 <project-id>