Skip to content

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.small12GB40GB开发测试
c1.medium24GB40GB轻量应用
c1.large48GB40GBWeb 服务
c1.xlarge816GB40GB中型应用
m1.large432GB40GB内存密集
m1.xlarge864GB40GB数据库
g1.large864GB40GB + GPU×1AI 推理

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适用场景
standardCeph HDD~3000普通应用
ssdCeph SSD~50000数据库
high-perfH3C 全闪~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)

支持的镜像格式

格式说明
qcow2QEMU 写时复制格式,推荐
raw原始格式,性能最好
vmdkVMware 格式,迁移用
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 TB
bash
# 查看租户配额
openstack quota show <project-id>

# 修改配额
openstack quota set --cores 200 --ram 409600 <project-id>

褚成志的云与计算笔记