OpenStackNova组件全面培训教材

admin 2026-01-23 10:35:23 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文档是OpenStackNova计算组件全面培训教材,涵盖基础架构、组件通信、调度原理及虚拟机生命周期管理。深入解析性能优化、高可用部署、故障排查与安全加固配置,并提供大量实战命令与配置示例,适合从入门到高级运维工程师学习参考。 综合评分: 82 文章分类: 云安全,安全培训,安全运营


cover_image

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>

#&nbsp;停止虚拟机
openstack server stop <server-id>

#&nbsp;重启虚拟机
openstack server reboot <server-id>

#&nbsp;删除虚拟机
openstack server delete <server-id>

#&nbsp;查看控制台日志
openstack console log show <server-id>

第二部分:Nova 中级进阶(适合有一定基础)

2.1 Nova 架构深度解析

服务间通信机制

#&nbsp;RPC通信 (基于RabbitMQ)
nova-api → (AMQP) → nova-scheduler → (AMQP) → nova-compute

#&nbsp;数据库访问
nova-compute → (通过nova-conductor) → MySQL数据库

#&nbsp;安全设计
- nova-conductor作为数据库访问代理
- 计算节点无法直接访问数据库

配置文件结构

# 主要配置文件
/etc/nova/nova.conf

# 配置文件分段
[DEFAULT] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# 通用配置
[api] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;# API服务配置
[scheduler] &nbsp; &nbsp; &nbsp;&nbsp;# 调度器配置
[compute] &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;# 计算节点配置
[conductor] &nbsp; &nbsp; &nbsp;&nbsp;# &nbsp;conductor配置
[libvirt] &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;# libvirt相关配置
[neutron] &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;# 网络集成配置
[glance] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# 镜像服务配置

2.2 Nova 调度机制

调度器类型

# 过滤器调度器 (FilterScheduler) - 默认
-&nbsp;通过过滤器选择合适主机
-&nbsp;支持权重计算

# 缓存调度器 (CachingScheduler)
-&nbsp;缓存主机状态信息
-&nbsp;提高调度性能

# 其他调度器
-&nbsp;ChanceScheduler: 随机选择
-&nbsp;SimpleScheduler: 简单选择

调度过滤器

# 常用过滤器
-&nbsp;AvailabilityZoneFilter: 可用域过滤
-&nbsp;RamFilter: 内存过滤
-&nbsp;DiskFilter: 磁盘过滤
-&nbsp;CoreFilter: CPU核心过滤
-&nbsp;ImagePropertiesFilter: 镜像属性过滤
-&nbsp;JsonFilter: JSON属性过滤
-&nbsp;NumInstancesFilter: 实例数量过滤

调度权重

# 权重计算器
-&nbsp;RamWeigher: 内存权重
-&nbsp;DiskWeigher: 磁盘权重
-&nbsp;MetricsWeigher: 指标权重

# 配置示例
[scheduler]
weight_classes = nova.scheduler.weights.ram.RamWeigher
ram_weight_multiplier = 1.0

2.3 虚拟机操作原理

虚拟机创建流程

1.&nbsp;API接收: nova-api接收创建请求
2.&nbsp;验证请求: 检查配额、权限、参数
3.&nbsp;调度决策: nova-scheduler选择主机
4.&nbsp;资源预留: 在选定主机预留资源
5.&nbsp;网络配置: 与Neutron交互创建端口
6.&nbsp;镜像准备: 从Glance下载镜像
7.&nbsp;实例化: libvirt创建虚拟机
8.&nbsp;启动配置: cloud-init进行初始化

冷迁移 vs 热迁移

# 冷迁移 (Cold Migration)
-&nbsp;虚拟机处于关机状态
-&nbsp;数据完整拷贝到目标主机
-&nbsp;简单可靠,但需要停机时间

# 热迁移 (Live Migration)
-&nbsp;虚拟机运行状态下迁移
-&nbsp;内存状态实时同步
-&nbsp;需要共享存储或块存储迁移

2.4 高级虚拟机管理

规格管理

#&nbsp;创建自定义规格
openstack flavor create \
&nbsp; --vcpus 4 \
&nbsp; --ram 8192 \
&nbsp; --disk 50 \
&nbsp; --property hw:cpu_policy=dedicated \
&nbsp; custom-large

#&nbsp;规格属性配置
openstack flavor set \
&nbsp; --property hw:numa_nodes=2 \
&nbsp; --property hw:cpu_thread_policy=isolate \
&nbsp; custom-large

#&nbsp;查看规格详情
openstack flavor show custom-large

镜像管理

# 从实例创建镜像
openstack server image create \
&nbsp; --name&nbsp;vm-backup \
&nbsp; --wait \
&nbsp; my-vm

# 镜像属性配置
openstack image&nbsp;set&nbsp;\
&nbsp; --min-disk&nbsp;20&nbsp;\
&nbsp; --min-ram&nbsp;2048&nbsp;\
&nbsp; --property hw_disk_bus=scsi \
&nbsp;&nbsp;vm-image

资源配额管理

#&nbsp;查看项目配额
openstack quota show <project-id>

#&nbsp;设置配额
openstack quota set \
&nbsp; --instances 20 \
&nbsp; --cores 40 \
&nbsp; --ram 65536 \
&nbsp; --volumes 10 \
&nbsp; <project-id>

#&nbsp;默认配额配置
#&nbsp;/etc/nova/nova.conf
[quota]
instances = 10
cores = 20
ram = 51200

第三部分:Nova 高级运维(适合高级工程师)

3.1 Nova 性能优化

配置优化

# /etc/nova/nova.conf 优化配置
[DEFAULT]
# Worker进程数
api_workers&nbsp;=&nbsp;4
metadata_workers&nbsp;=&nbsp;2
osapi_compute_workers&nbsp;=&nbsp;8

# 数据库连接池
max_pool_size&nbsp;=&nbsp;30
max_overflow&nbsp;=&nbsp;10
pool_timeout&nbsp;=&nbsp;30

# 消息队列优化
rpc_conn_pool_size&nbsp;=&nbsp;30
rpc_response_timeout&nbsp;=&nbsp;60

计算节点优化

# Libvirt优化配置
[libvirt]
virt_type&nbsp;= kvm
cpu_mode&nbsp;= host-passthrough
inject_password&nbsp;=&nbsp;false
inject_key&nbsp;=&nbsp;false
inject_partition&nbsp;= -2

# 磁盘缓存策略
disk_cachemodes&nbsp;= network=writeback
hw_disk_discard&nbsp;= unmap

# CPU特性透传
cpu_model&nbsp;= host-passthrough

调度优化

# 调度器配置优化
[scheduler]
max_attempts&nbsp;=&nbsp;10
worker_subprocess_check_interval&nbsp;=&nbsp;5

# 过滤器配置
scheduler_available_filters&nbsp;= nova.scheduler.filters.all_filters
scheduler_default_filters&nbsp;= RetryFilter,AvailabilityZoneFilter,RamFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter

# 缓存优化
scheduler_host_subset_size&nbsp;=&nbsp;1

3.2 高可用部署

控制节点高可用

# 多节点部署架构
Controller1:&nbsp;nova-api,&nbsp;nova-scheduler,&nbsp;nova-conductor
Controller2:&nbsp;nova-api,&nbsp;nova-scheduler,&nbsp;nova-conductor
Controller3:&nbsp;nova-api,&nbsp;nova-scheduler,&nbsp;nova-conductor

#&nbsp;API服务高可用 (HAProxy配置)
frontendnova-api
&nbsp; &nbsp;&nbsp;bind&nbsp;*:8774
&nbsp; &nbsp;&nbsp;modehttp
&nbsp; &nbsp;&nbsp;default_backendnova-api-backend

backendnova-api-backend
&nbsp; &nbsp;&nbsp;balanceroundrobin
&nbsp; &nbsp;&nbsp;servercontroller1&nbsp;10.0.0.11:8774check
&nbsp; &nbsp;&nbsp;servercontroller2&nbsp;10.0.0.12:8774check
&nbsp; &nbsp;&nbsp;servercontroller3&nbsp;10.0.0.13:8774&nbsp;check

计算节点高可用

# 实例疏散配置
[libvirt]
live_migration_uri&nbsp;= qemu+ssh://%s/system
live_migration_tunnelled&nbsp;=&nbsp;false

# 共享存储配置
[libvirt]
images_type&nbsp;= rbd
images_rbd_pool&nbsp;= instances
images_rbd_ceph_conf&nbsp;= /etc/ceph/ceph.conf

# 迁移超时配置
[libvirt]
live_migration_completion_timeout&nbsp;=&nbsp;800
live_migration_progress_timeout&nbsp;=&nbsp;150

3.3 故障排查和调试

服务状态检查

#&nbsp;检查Nova服务状态
systemctl list-units --type=service | grep nova

#&nbsp;检查消息队列状态
rabbitmqctl list_queues | grep nova

#&nbsp;检查数据库连接
mysql -u nova -p -e "SELECT COUNT(*) FROM instances;"

#&nbsp;检查计算节点状态
openstack compute service list

日志分析

# 关键日志文件
/var/log/nova/nova-api.log&nbsp; &nbsp; &nbsp; # API服务日志
/var/log/nova/nova-scheduler.log&nbsp;# 调度器日志
/var/log/nova/nova-compute.log&nbsp; &nbsp;# 计算节点日志
/var/log/nova/nova-conductor.log&nbsp;# conductor日志

# 日志分析技巧
grep"ERROR"&nbsp;/var/log/nova/nova-api.log
grep"WARNING"&nbsp;/var/log/nova/nova-compute.log
tail -f&nbsp;/var/log/nova/nova-scheduler.log

# 调试模式启用
[DEFAULT]
debug&nbsp;= true
verbose&nbsp;= true

虚拟机故障排查

#&nbsp;查看虚拟机状态
openstack server show <server-id> -f json

#&nbsp;查看虚拟机控制台
openstack console url show <server-id>

#&nbsp;查看虚拟机日志
openstack console log show <server-id>

#&nbsp;强制删除卡住虚拟机
nova force-delete <server-id>

3.4 监控和性能分析

监控指标

# 关键监控指标
-&nbsp;nova.running_vms: 运行中虚拟机数量
-&nbsp;nova.cpu_util: CPU使用率
-&nbsp;nova.memory_usage: 内存使用量
-&nbsp;nova.disk_usage: 磁盘使用量
-&nbsp;nova.uptime: 服务运行时间

# 使用Ceilometer收集指标
ceilometer statistics -m cpu_util -q resource_id=<server-id>

性能分析工具

# 虚拟机性能分析
virsh domstats&nbsp;<domain>
virsh cpu-stats&nbsp;<domain>
virsh domblkstat&nbsp;<domain>

# Libvirt调试
virsh -c&nbsp;qemu+ssh://compute-node/system&nbsp;list&nbsp;--all

# 性能瓶颈分析
perf stat -e&nbsp;cycles,instructions,cache-references,cache-misses virsh start&nbsp;<domain>

3.5 安全加固

服务安全配置

# API安全配置
[api]
auth_strategy&nbsp;= keystone
use_forwarded_for&nbsp;=&nbsp;true
osapi_compute_listen&nbsp;=&nbsp;10.0.0.10

# SSL配置
[ssl]
enabled&nbsp;=&nbsp;true
cert_file&nbsp;= /etc/nova/ssl/cert.pem
key_file&nbsp;= /etc/nova/ssl/key.pem

# CORS配置
[cors]
allowed_origin&nbsp;= https://dashboard.example.com

计算节点安全

# Libvirt安全配置
[libvirt]
inject_password&nbsp;=&nbsp;false
inject_key&nbsp;=&nbsp;false
inject_partition&nbsp;= -2

# 镜像缓存安全
[libvirt]
remove_unused_base_images&nbsp;=&nbsp;true
remove_unused_original_minimum_age_seconds&nbsp;=&nbsp;86400

# 虚拟机隔离
[libvirt]
security_driver&nbsp;= selinux

第四部分:实战案例和最佳实践

4.1 大规模部署实践

计算节点分组

# 主机聚合 (Host Aggregates)
openstack aggregate create high-memory-group
openstack aggregate&nbsp;set&nbsp;--property memory_mb=

免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:运维星火燎原 刘军军 刘军军《OpenStack Nova 组件全面培训教材》

评论:0   参与:  0