文章总结: 本文档是OpenStackNova计算组件全面培训教材,涵盖基础架构、组件通信、调度原理及虚拟机生命周期管理。深入解析性能优化、高可用部署、故障排查与安全加固配置,并提供大量实战命令与配置示例,适合从入门到高级运维工程师学习参考。 综合评分: 82 文章分类: 云安全,安全培训,安全运营
OpenStack Nova 组件全面培训教材
原创
刘军军 刘军军
运维星火燎原
2026年1月23日 00:01 山西
第一部分:Nova 基础入门(适合初学者)
1.1 Nova 概述
什么是Nova?
Nova是OpenStack的计算服务组件,负责虚拟机的生命周期管理,包括创建、调度、销毁等操作。它是OpenStack最核心的组件之一。
Nova 的核心功能
- 实例管理:虚拟机的创建、启动、停止、重启、删除
- 计算资源管理:CPU、内存、磁盘资源的分配和管理
- 调度决策:根据策略选择合适的计算节点
- 镜像管理:与Glance集成管理虚拟机镜像
- 网络配置:与Neutron集成配置虚拟机网络
Nova 架构组件
| | | | | — | — | — | | 组件名称 | 功能描述 | 进程名称 | | nova-api | 接收和处理API请求 | nova-api | | nova-scheduler | 虚拟机调度决策 | nova-scheduler | | nova-compute | 计算节点上的虚拟机管理 | nova-compute | | nova-conductor | 数据库访问代理和安全层 | nova-conductor | | nova-consoleauth | 控制台连接认证 | nova-consoleauth | | nova-novncproxy | VNC代理服务 | nova-novncproxy |
1.2 Nova 基本概念
核心概念解析
# 实例 (Instance)
- 运行的虚拟机实例
- 包含操作系统和应用程序
# 镜像 (Image)
- 虚拟机的模板文件
- 支持多种格式: RAW, QCOW2, VHD, etc.
# 规格 (Flavor)
- 定义虚拟机的资源配置
- CPU、内存、磁盘大小
# 密钥对 (Keypair)
- SSH密钥对管理
- 用于安全登录虚拟机
# 安全组 (Security Group)
- 虚拟防火墙规则
- 控制网络访问权限
虚拟机生命周期状态
BUILDING → ACTIVE → STOPPED → PAUSED → SUSPENDED → RESCUED → ERROR → DELETED
1.3 快速开始:创建第一个虚拟机
环境准备
# 安装OpenStack客户端
pip install python-openstackclient
# 配置认证信息
export OS_AUTH_URL=http://controller:5000/v3
export OS_USERNAME=admin
export OS_PASSWORD=secret
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
创建虚拟机步骤
# 1. 查看可用镜像
openstack image list
# 2. 查看可用网络
openstack network list
# 3. 查看可用规格
openstack flavor list
# 4. 创建密钥对
openstack keypair create mykey > mykey.pem
chmod 600 mykey.pem
# 5. 创建虚拟机
openstack server create \
--flavor m1.small \
--image cirros \
--network private \
--key-name mykey \
my-first-vm
# 6. 查看虚拟机状态
openstack server list
openstack server show my-first-vm
虚拟机基本操作
# 启动虚拟机
openstack server start <server-id>
# 停止虚拟机
openstack server stop <server-id>
# 重启虚拟机
openstack server reboot <server-id>
# 删除虚拟机
openstack server delete <server-id>
# 查看控制台日志
openstack console log show <server-id>
第二部分:Nova 中级进阶(适合有一定基础)
2.1 Nova 架构深度解析
服务间通信机制
# RPC通信 (基于RabbitMQ)
nova-api → (AMQP) → nova-scheduler → (AMQP) → nova-compute
# 数据库访问
nova-compute → (通过nova-conductor) → MySQL数据库
# 安全设计
- nova-conductor作为数据库访问代理
- 计算节点无法直接访问数据库
配置文件结构
# 主要配置文件
/etc/nova/nova.conf
# 配置文件分段
[DEFAULT] # 通用配置
[api] # API服务配置
[scheduler] # 调度器配置
[compute] # 计算节点配置
[conductor] # conductor配置
[libvirt] # libvirt相关配置
[neutron] # 网络集成配置
[glance] # 镜像服务配置
2.2 Nova 调度机制
调度器类型
# 过滤器调度器 (FilterScheduler) - 默认
- 通过过滤器选择合适主机
- 支持权重计算
# 缓存调度器 (CachingScheduler)
- 缓存主机状态信息
- 提高调度性能
# 其他调度器
- ChanceScheduler: 随机选择
- SimpleScheduler: 简单选择
调度过滤器
# 常用过滤器
- AvailabilityZoneFilter: 可用域过滤
- RamFilter: 内存过滤
- DiskFilter: 磁盘过滤
- CoreFilter: CPU核心过滤
- ImagePropertiesFilter: 镜像属性过滤
- JsonFilter: JSON属性过滤
- NumInstancesFilter: 实例数量过滤
调度权重
# 权重计算器
- RamWeigher: 内存权重
- DiskWeigher: 磁盘权重
- MetricsWeigher: 指标权重
# 配置示例
[scheduler]
weight_classes = nova.scheduler.weights.ram.RamWeigher
ram_weight_multiplier = 1.0
2.3 虚拟机操作原理
虚拟机创建流程
1. API接收: nova-api接收创建请求
2. 验证请求: 检查配额、权限、参数
3. 调度决策: nova-scheduler选择主机
4. 资源预留: 在选定主机预留资源
5. 网络配置: 与Neutron交互创建端口
6. 镜像准备: 从Glance下载镜像
7. 实例化: libvirt创建虚拟机
8. 启动配置: cloud-init进行初始化
冷迁移 vs 热迁移
# 冷迁移 (Cold Migration)
- 虚拟机处于关机状态
- 数据完整拷贝到目标主机
- 简单可靠,但需要停机时间
# 热迁移 (Live Migration)
- 虚拟机运行状态下迁移
- 内存状态实时同步
- 需要共享存储或块存储迁移
2.4 高级虚拟机管理
规格管理
# 创建自定义规格
openstack flavor create \
--vcpus 4 \
--ram 8192 \
--disk 50 \
--property hw:cpu_policy=dedicated \
custom-large
# 规格属性配置
openstack flavor set \
--property hw:numa_nodes=2 \
--property hw:cpu_thread_policy=isolate \
custom-large
# 查看规格详情
openstack flavor show custom-large
镜像管理
# 从实例创建镜像
openstack server image create \
--name vm-backup \
--wait \
my-vm
# 镜像属性配置
openstack image set \
--min-disk 20 \
--min-ram 2048 \
--property hw_disk_bus=scsi \
vm-image
资源配额管理
# 查看项目配额
openstack quota show <project-id>
# 设置配额
openstack quota set \
--instances 20 \
--cores 40 \
--ram 65536 \
--volumes 10 \
<project-id>
# 默认配额配置
# /etc/nova/nova.conf
[quota]
instances = 10
cores = 20
ram = 51200
第三部分:Nova 高级运维(适合高级工程师)
3.1 Nova 性能优化
配置优化
# /etc/nova/nova.conf 优化配置
[DEFAULT]
# Worker进程数
api_workers = 4
metadata_workers = 2
osapi_compute_workers = 8
# 数据库连接池
max_pool_size = 30
max_overflow = 10
pool_timeout = 30
# 消息队列优化
rpc_conn_pool_size = 30
rpc_response_timeout = 60
计算节点优化
# Libvirt优化配置
[libvirt]
virt_type = kvm
cpu_mode = host-passthrough
inject_password = false
inject_key = false
inject_partition = -2
# 磁盘缓存策略
disk_cachemodes = network=writeback
hw_disk_discard = unmap
# CPU特性透传
cpu_model = host-passthrough
调度优化
# 调度器配置优化
[scheduler]
max_attempts = 10
worker_subprocess_check_interval = 5
# 过滤器配置
scheduler_available_filters = nova.scheduler.filters.all_filters
scheduler_default_filters = RetryFilter,AvailabilityZoneFilter,RamFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter
# 缓存优化
scheduler_host_subset_size = 1
3.2 高可用部署
控制节点高可用
# 多节点部署架构
Controller1: nova-api, nova-scheduler, nova-conductor
Controller2: nova-api, nova-scheduler, nova-conductor
Controller3: nova-api, nova-scheduler, nova-conductor
# API服务高可用 (HAProxy配置)
frontendnova-api
bind *:8774
modehttp
default_backendnova-api-backend
backendnova-api-backend
balanceroundrobin
servercontroller1 10.0.0.11:8774check
servercontroller2 10.0.0.12:8774check
servercontroller3 10.0.0.13:8774 check
计算节点高可用
# 实例疏散配置
[libvirt]
live_migration_uri = qemu+ssh://%s/system
live_migration_tunnelled = false
# 共享存储配置
[libvirt]
images_type = rbd
images_rbd_pool = instances
images_rbd_ceph_conf = /etc/ceph/ceph.conf
# 迁移超时配置
[libvirt]
live_migration_completion_timeout = 800
live_migration_progress_timeout = 150
3.3 故障排查和调试
服务状态检查
# 检查Nova服务状态
systemctl list-units --type=service | grep nova
# 检查消息队列状态
rabbitmqctl list_queues | grep nova
# 检查数据库连接
mysql -u nova -p -e "SELECT COUNT(*) FROM instances;"
# 检查计算节点状态
openstack compute service list
日志分析
# 关键日志文件
/var/log/nova/nova-api.log # API服务日志
/var/log/nova/nova-scheduler.log # 调度器日志
/var/log/nova/nova-compute.log # 计算节点日志
/var/log/nova/nova-conductor.log # conductor日志
# 日志分析技巧
grep"ERROR" /var/log/nova/nova-api.log
grep"WARNING" /var/log/nova/nova-compute.log
tail -f /var/log/nova/nova-scheduler.log
# 调试模式启用
[DEFAULT]
debug = true
verbose = true
虚拟机故障排查
# 查看虚拟机状态
openstack server show <server-id> -f json
# 查看虚拟机控制台
openstack console url show <server-id>
# 查看虚拟机日志
openstack console log show <server-id>
# 强制删除卡住虚拟机
nova force-delete <server-id>
3.4 监控和性能分析
监控指标
# 关键监控指标
- nova.running_vms: 运行中虚拟机数量
- nova.cpu_util: CPU使用率
- nova.memory_usage: 内存使用量
- nova.disk_usage: 磁盘使用量
- nova.uptime: 服务运行时间
# 使用Ceilometer收集指标
ceilometer statistics -m cpu_util -q resource_id=<server-id>
性能分析工具
# 虚拟机性能分析
virsh domstats <domain>
virsh cpu-stats <domain>
virsh domblkstat <domain>
# Libvirt调试
virsh -c qemu+ssh://compute-node/system list --all
# 性能瓶颈分析
perf stat -e cycles,instructions,cache-references,cache-misses virsh start <domain>
3.5 安全加固
服务安全配置
# API安全配置
[api]
auth_strategy = keystone
use_forwarded_for = true
osapi_compute_listen = 10.0.0.10
# SSL配置
[ssl]
enabled = true
cert_file = /etc/nova/ssl/cert.pem
key_file = /etc/nova/ssl/key.pem
# CORS配置
[cors]
allowed_origin = https://dashboard.example.com
计算节点安全
# Libvirt安全配置
[libvirt]
inject_password = false
inject_key = false
inject_partition = -2
# 镜像缓存安全
[libvirt]
remove_unused_base_images = true
remove_unused_original_minimum_age_seconds = 86400
# 虚拟机隔离
[libvirt]
security_driver = selinux
第四部分:实战案例和最佳实践
4.1 大规模部署实践
计算节点分组
# 主机聚合 (Host Aggregates)
openstack aggregate create high-memory-group
openstack aggregate set --property memory_mb=
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:运维星火燎原 刘军军 刘军军《OpenStack Nova 组件全面培训教材》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论