一、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.conf

    compute_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. 创建虚拟机完整流程

  1. 用户向nova-api发送boot请求(携带keystone token)
  2. nova-api验证token并初始化数据库记录
  3. nova-api通过rpc.call请求nova-scheduler分配主机
  4. scheduler通过过滤和权重选出最优计算节点
  5. scheduler更新数据库并通过rpc.cast通知nova-compute
  6. compute通过nova-conductor获取虚拟机信息
  7. compute向glance-api获取镜像(携带token)
  8. compute向neutron-server申请网络资源
  9. 创建完成返回用户

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控制台可验证网络连通性
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐