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网络服务详解》

发表回复

后才能评论