OpenStack核心组件深度解析:从Nova调度到Neutron网络虚拟化的实战指南
一、Nova计算服务高级特性
1. 调度器过滤器详解
RamFilter
-
作用:过滤掉不能满足flavor内存需求的计算节点
-
内存超配:通过
ram_allocation_ratio控制,默认值1.5(可调整为5) -
配置位置:
/etc/nova/nova.conf第210行ram_allocation_ratio = 1.5
DiskFilter
- 作用:过滤掉不能满足flavor磁盘需求的计算节点
- 磁盘超配:通过
disk_allocation_ratio控制,默认值为1
CoreFilter
- 作用:过滤掉不能满足flavor vCPU需求的计算节点
- vCPU超配:通过
cpu_allocation_ratio控制,默认值为16 - 注意:默认filter列表不包含CoreFilter,需手动添加
ComputeFilter
- 作用:只选择nova-compute服务正常工作的节点(必选)
ComputeCapabilitiesFilter
- 作用:根据计算节点的特性(如CPU架构)筛选
- 用法:在flavor的metadata中指定capabilities(如
capabilities:cpu_info:arch设为x86_64)
ImagePropertiesFilter
- 作用:根据镜像的属性筛选匹配的计算节点
- 示例:在镜像metadata中设置
hypervisor_type=kvm,则只调度到KVM节点
ServerGroupAntiAffinityFilter
-
作用:尽量将实例分散部署到不同节点
-
创建策略组:
nova server-group-create --policy anti-affinity group-1 nova boot --hint group=group-1 inst1
ServerGroupAffinityFilter
-
作用:尽量将实例部署到同一节点
-
创建策略组:
nova server-group-create --policy affinity group-2
2. 权重(Weight)机制
-
默认算法:根据计算节点空闲内存量打分,空闲越多权重越大
-
日志查看:
cat /var/log/nova/nova-scheduler.log | grep weight
3. nova-compute组件
-
功能:虚拟机生命周期操作的真正执行者,调用对应hypervisor driver
-
Driver配置:
/etc/nova/nova.confcompute_driver = libvirt.LibvirtDriver -
Driver路径:
/usr/lib/python3.6/site-packages/nova/virt/
4. RabbitMQ监控
-
启用管理插件:
rabbitmq-plugins enable rabbitmq_management rabbitmqctl add_user user_admin passwd_admin rabbitmqctl set_user_tags user_admin administrator rabbitmqctl set_permissions -p / user_admin ".*" ".*" ".*" -
访问地址:
http://controller:15672 -
关键指标:Unacked Message(应为0,持续增长表示队列积压)
5. Nova控制台服务
nova-novncproxy:基于Web浏览器的VNC访问nova-spicehtml5proxy:基于HTML5浏览器的SPICE访问nova-xvpnvncproxy:基于Java客户端的VNC访问
6. 创建虚拟机完整流程
- 用户向nova-api发送boot请求(携带keystone token)
- nova-api验证token并初始化数据库记录
- nova-api通过rpc.call请求nova-scheduler分配主机
- scheduler通过过滤和权重选出最优计算节点
- scheduler更新数据库并通过rpc.cast通知nova-compute
- compute通过nova-conductor获取虚拟机信息
- compute向glance-api获取镜像(携带token)
- compute向neutron-server申请网络资源
- 创建完成返回用户
7. 实例常用操作
| 操作 | 说明 | 状态 |
|---|---|---|
| Soft Reboot | 仅重启操作系统 | 运行中 |
| Hard Reboot | 相当于关机再开机 | 重启 |
| Pause | 保存状态到内存 | Paused |
| Suspend | 保存状态到磁盘 | Shut Down |
| Shelve | 作为镜像保存到Glance并删除实例 | Shelved |
| Lock | 防止意外删除 | Locked |
-
锁定策略配置:
/etc/openstack-dashboard/nova_policy.json"os_compute_api:os-lock-server:unlock": "rule:admin_api"
二、Cinder块存储管理
1. Cinder架构组件
- Cinder-API:接收REST请求,参数校验,配额预留
- Cinder-Scheduler:收集后端容量信息,通过filter+weigher选择最优后端
- Cinder-Volume:调用具体driver在后端存储上创建卷
- Cinder-Backup:将卷数据备份到其他存储介质
- SQL DB:存储卷、快照、备份等元数据
2. 后端存储类型
-
LVM(默认):实验环境配置
vgdisplay cinder-volumes # 查看卷组 -
其他支持:SAN、Ceph、Sheepdog、EMC、华为等(以driver形式集成)
3. 调度器过滤器(Cinder)
-
AvailabilityZoneFilter:按可用区过滤存储节点# cinder.conf storage_availability_zone=az1 default_availability_zone=nova -
CapacityFilter:过滤存储空间不足的节点 -
CapabilitiesFilter:根据Volume Type指定的特性过滤
4. 挂载卷流程
- Nova调用Cinder-API创建卷,传递主机信息(hostname, iSCSI initiator等)
- Cinder-Volume通知存储允许主机访问,返回连接信息(iSCSI portal, NFS path等)
- Nova识别磁盘设备并传递给hypervisor挂载
三、Swift对象存储
1. Swift特点
- 非文件系统,属于对象存储
- 适合永久性静态数据长期存储(虚拟机镜像、图片、邮件备份)
- 无中心单元,提供更强的扩展性、冗余和持久性
2. 核心概念
- Ring(环):将虚拟节点(分区)映射到物理存储设备,包括Account Ring、Container Ring、Object Ring
- Zone:提供数据隔离和容灾
- Replica:副本数
3. 实验:添加新磁盘并配置Swift后端
-
分区并格式化为xfs
-
挂载到
/srv/node/obs1和/srv/node/obs2 -
修改权限:
chown swift:swift obs1 obs2 -
创建ring:
swift-ring-builder container.builder create 12 2 1 swift-ring-builder container.builder add z1-192.168.108.10:6001/obs1 100 swift-ring-builder container.builder rebalance -
配置glance使用Swift后端(修改
glance-api.conf中的default_store=swift)
4. 华为OBS体验
- OBS Browser+客户端下载和使用
- 创建桶、上传下载对象
四、Heat编排服务
1. Heat作用
- 通过声明性模板(YAML格式)编排复合云应用程序
- 与其他OpenStack核心项目紧密集成,自动创建资源并满足依赖关系
2. 架构组件
- Heat-API:提供REST API入口
- Heat-API-CFN:兼容AWS CloudFormation API
- Heat-Engine:核心,实现任务调度和资源生命周期管理
3. Heat模板结构(YAML)
heat_template_version: 2018-08-31
description: 模板描述
parameters:
image_name_1:
type: string
default: <image-id>
resources:
mykey:
type: OS::Nova::KeyPair
web_secgroup:
type: OS::Neutron::SecurityGroup
private_net:
type: OS::Neutron::Net
instance1:
type: OS::Nova::Server
properties:
image: { get_param: image_name_1 }
flavor: Flavor_web
networks: [{ port: { get_resource: instance_port } }]
outputs:
private_key:
value: { get_attr: [mykey, private_key] }
4. 创建堆栈
- 在Horizon中选择“编排” > “堆栈” > “创建堆栈”
- 上传模板文件或直接粘贴模板内容
五、Neutron网络服务
1. Linux网络虚拟化技术
| 技术 | 类型 | 说明 |
|---|---|---|
| TAP | 二层设备 | 模拟二层网络设备,收发以太网帧 |
| TUN | 三层设备 | 模拟三层网络设备,收发IP包 |
| VETH Pair | 虚拟以太网对 | 一端发出数据另一端接收,用于连接不同网络组件 |
| Linux Bridge | 二层交换机 | 绑定物理/虚拟设备为端口,基于MAC转发 |
| Open vSwitch | 分布式虚拟交换机 | 支持VLAN、VxLAN、GRE、流表、QoS等高级特性 |
2. Linux Bridge管理命令
brctl addbr BRIDGE # 添加网桥
brctl addif BRIDGE DEVICE # 添加接口到网桥
3. Open vSwitch常用命令
ovs-vsctl add-br BRIDGE
ovs-vsctl add-port BRIDGE PORT
ovs-vsctl show BRIDGE
ovs-vsctl dump-flows BRIDGE
4. Neutron核心概念
| 概念 | 说明 |
|---|---|
| Network | 隔离的二层广播域(local/flat/VLAN/VxLAN/GRE) |
| Subnet | IPv4/IPv6地址段,指定CIDR和IP范围 |
| Port | 虚拟交换机端口,绑定MAC和IP |
| Router | 实现跨网段通信(通过namespace隔离) |
- 关系:Project 1:N Network,Network 1:N Subnet,Subnet 1:N Port,Port 1:1 VIF
5. Neutron架构组件
- Neutron Server:提供API,调用Plugin
- Plugin:维护逻辑网络状态,调用Agent
- Agent:在network provider上实现具体功能
- Queue:组件间通信(RabbitMQ)
- Database:存储网络状态
6. OVN(Open Virtual Network)实验
-
查看OVN代理:
openstack network agent list -
查看OVN北向数据库:
ovn-nbctl show -
配置ML2驱动:
/etc/neutron/plugins/ml2/ml2_conf.ini[ml2] type_drivers = geneve,flat tenant_network_types = geneve mechanism_drivers = ovn [ml2_type_geneve] vni_ranges = 1:65536
7. 创建网络和路由器
-
创建内网(neiwang-1):192.168.11.0/24,网关192.168.11.1
-
创建外网(waiwang):192.168.108.0/24(共享,外部网络)
-
创建路由器(router1):
- 设置网关:外网waiwang,启用SNAT
- 添加接口:连接内网neiwang-1(IP默认为网关地址)
-
OVN验证:
ovn-nbctl show # 显示switch(内网/外网)、router、端口映射、NAT规则
8. 实例网络连接
- 创建实例时必须选择内网(neiwang-1)
- 实例自动从子网获取IP(如192.168.11.4)
- 通过路由器SNAT访问外网
- VNC控制台可验证网络连通性
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)