Nova计算服务详解:从原理到生产实践
Nova计算服务详解:从原理到生产实践
一、Nova概述
1.1 Nova是什么?
Nova是OpenStack的计算资源管理中心,负责管理虚拟机的整个生命周期,包括创建、启动、停止、重启、迁移、快照等操作。
Nova的核心功能:
- 虚拟机生命周期管理
- 资源调度与分配
- 虚拟化技术支持
- 实例快照与备份
1.2 Nova架构
Nova采用分布式微服务架构:
| 组件 | 部署位置 | 功能描述 |
|---|---|---|
| nova-api | Controller | API服务入口 |
| nova-scheduler | Controller | 资源调度 |
| nova-conductor | Controller | 数据库协调 |
| nova-compute | Compute节点 | 管理虚拟机 |
| nova-novncproxy | Controller | VNC控制台 |
二、Nova核心概念
2.1 Flavor(规格)
Flavor定义虚拟机的硬件配置模板:
# 查看Flavor列表
openstack flavor list
# 创建自定义Flavor
openstack flavor create --ram 4096 --disk 40 --vcpus 2 m2.small
# 设置元数据
openstack flavor set --property hw:cpu_policy=dedicated m2.small
默认Flavor配置:
| Flavor | VCPU | RAM(MB) | Disk(GB) |
|---|---|---|---|
| m1.tiny | 1 | 512 | 1 |
| m1.small | 1 | 2048 | 20 |
| m1.medium | 2 | 4096 | 40 |
| m1.large | 4 | 8192 | 80 |
2.2 Image(镜像)
镜像是虚拟机实例的操作系统模板:
# 查看镜像列表
openstack image list
# 创建镜像
openstack image create "Ubuntu 20.04" \
--file ubuntu-20.04.qcow2 \
--disk-format qcow2 \
--container-format bare \
--public
2.3 Instance(实例)
Instance是Nova管理的虚拟机实例:
# 创建虚拟机
openstack server create --flavor m1.small \
--image cirros \
--network private \
--key-name mykey \
my-instance
# 查看列表
openstack server list
# 查看详情
openstack server show my-instance
# 控制台日志
openstack console log show my-instance --lines 50
# 生命周期管理
openstack server start my-instance
openstack server stop my-instance
openstack server reboot my-instance
# 删除虚拟机
openstack server delete my-instance
2.4 Key Pair(密钥对)
# 创建密钥对
openstack keypair create mykey > mykey.pem
# 导入公钥
openstack keypair create --public-key ~/.ssh/id_rsa.pub myuserkey
2.5 Security Group(安全组)
# 创建安全组
openstack security group create web
# 添加规则
openstack security group rule create --protocol tcp \
--dst-port 22 \
--remote-ip 0.0.0.0/0 \
web
# 关联安全组
openstack server add security group web my-instance
2.6 Floating IP(浮动IP)
# 创建浮动IP
openstack floating ip create public
# 绑定到虚拟机
openstack server add floating ip my-instance 192.168.100.100
三、Nova配置文件详解
# /etc/nova/nova.conf
[DEFAULT]
log_dir = /var/log/nova
use_neutron = True
scheduler_default_filters = RetryFilter,AvailabilityZoneFilter,RamFilter,ComputeFilter,ImagePropertiesFilter
allow_resize_to_same_host = True
novncproxy_base_url = http://controller:6080/vnc_auto.html
vncserver_proxyclient_address = controller
vncserver_listen = 0.0.0.0
[database]
connection = mysql+pymysql://nova:nova_db_pass@controller/nova
[api]
auth_strategy = keystone
[neutron]
auth_url = http://controller:5000
auth_type = password
username = neutron
password = neutron_pass
[placement]
auth_url = http://controller:5000
auth_type = password
username = placement
password = placement_pass
四、Hypervisor配置
4.1 KVM配置
# 验证KVM支持
kvm-ok
# 查看KVM模块
lsmod | grep kvm
# 启用嵌套虚拟化
echo 'options kvm-intel nested=Y' > /etc/modprobe.d/kvm-nested.conf
4.2 Libvirt配置
# /etc/libvirt/libvirtd.conf
listen_addr = "0.0.0.0"
unix_sock_group = "libvirtd"
unix_sock_ro_perms = "0777"
unix_sock_rw_perms = "0770"
auth_unix_ro = "none"
auth_unix_rw = "none"
五、常见问题与解决方案
5.1 虚拟机创建失败
# 检查调度器日志
tail -f /var/log/nova/nova-scheduler.log
# 检查计算服务
openstack compute service list
# 检查hypervisor资源
openstack hypervisor list
openstack hypervisor show
5.2 VNC控制台无法访问
# 检查nova-novncproxy服务
systemctl status nova-novncproxy
# 检查VNC配置
grep -E "novncproxy_base_url|vncserver" /etc/nova/nova.conf
# 检查防火墙
iptables -L -n | grep 6080
5.3 迁移失败
# 检查迁移状态
openstack server migration list
# 查看迁移日志
tail -f /var/log/nova/nova-compute.log
# 检查共享存储
mount | grep nfs
# 检查安全组(需允许迁移流量)
六、生产环境最佳实践
6.1 资源规划
# 为不同工作负载配置不同Flavor
# 计算密集型:m2.compute-optimized
# 内存密集型:m2.memory-optimized
# 通用型:m2.general-purpose
6.2 调度器优化
# /etc/nova/nova.conf
[DEFAULT]
# 使用更精细的调度器
scheduler_default_filters = RetryFilter,AvailabilityZoneFilter,RamFilter,CoreFilter,DiskFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,AggregateInstanceExtraSpecsFilter
# 启用weighing
scheduler_weight_classes = nova.scheduler.weights.all_weighers
# 预留资源
reserved_host_memory_mb = 512
reserved_host_disk_mb = 5000
6.3 高可用配置
# 启用多路径
max_paths = 4
# 配置迁移超时
migration_wait_timeout = 300
block_migration_completion_timeout = 600
七、性能调优
7.1 计算节点优化
# 优化KVM性能
cat >> /etc/sysctl.conf << 'EOF'
# KVM性能优化
kernel.sched_min_granularity_ns = 10000000
kernel.sched_wakeup_granularity_ns = 15000000
vm.swappiness = 10
EOF
sysctl -p
7.2 存储性能优化
# 使用本地SSD存储
instances_path = /var/lib/nova/instances
# 配置缓存
disk_cachemodes = writeback
八、总结
本文详细介绍了Nova计算服务的核心概念、配置方法和最佳实践。
核心要点:
下篇预告: 《Neutron网络服务详解》
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。







