OpenStack故障排查与性能调优:实战指南

OpenStack故障排查与性能调优:实战指南

一、故障排查方法论

1.1 排查流程


发现问题 → 分析日志 → 检查服务 → 定位根因 → 解决问题 → 验证恢复

1.2 常用排查命令


# 服务状态检查
systemctl status openstack-nova-api
systemctl status neutron-server

# OpenStack服务列表
openstack compute service list
openstack network agent list
openstack volume service list

# 日志查看
tail -f /var/log/nova/nova-api.log
tail -f /var/log/neutron/neutron-server.log

# 端点检查
openstack endpoint list
curl http://controller:5000/v3

二、常见故障处理

2.1 虚拟机创建失败

故障现象: 创建虚拟机一直卡在Scheduling状态

排查步骤:


# 1. 检查Nova Scheduler日志
tail -f /var/log/nova/nova-scheduler.log

# 2. 检查计算节点资源
openstack hypervisor list
openstack hypervisor show compute01

# 3. 检查Nova Compute服务
openstack compute service list

# 4. 检查镜像是否存在
openstack image list

# 5. 检查网络是否正常
openstack network list

解决方案:


# 如果是资源不足
openstack flavor list
# 选择合适规格

# 如果是服务问题
systemctl restart nova-scheduler
systemctl restart nova-compute

2.2 网络不通

故障现象: 虚拟机无法访问外网

排查步骤:


# 1. 检查网络命名空间
ip netns list

# 2. 检查路由器
openstack router show my-router

# 3. 检查浮动IP
openstack floating ip list

# 4. 检查安全组
openstack security group rule list default

# 5. 测试连通性
sudo ip netns exec qrouter- ping 8.8.8.8

解决方案:


# 重启网络服务
systemctl restart neutron-l3-agent
systemctl restart neutron-dhcp-agent

# 检查浮动IP分配
openstack floating ip create public
openstack server add floating ip my-instance 

2.3 存储卷挂载失败

故障现象: 无法将存储卷挂载到虚拟机

排查步骤:


# 1. 检查Cinder服务
openstack volume service list

# 2. 检查存储后端
cinder service-list

# 3. 查看Cinder日志
tail -f /var/log/cinder/cinder-volume.log

# 4. 检查iscsi服务
systemctl status tgt

解决方案:


# 重
systemctl restart启Cinder服务 cinder-volume
systemctl restart cinder-api

# 重新尝试挂载
openstack server detach volume my-instance my-volume
openstack server attach volume my-instance my-volume

三、性能调优

3.1 Nova计算优化


# /etc/nova/nova.conf

[DEFAULT]
# CPU调度优化
cpu_allocation_ratio = 16.0
ram_allocation_ratio = 1.5
disk_allocation_ratio = 1.0

# 实例数量限制
max_instances_per_project = 50

[libvirt]
# KVM性能优化
virt_type = kvm
cpu_mode = host-passthrough

# 内存优化
memory_backing = shared
hugepages_path = /dev/hugepages

# CPU pinning
# cpu_shared_set = 0-7
# cpu_exclusive_set = 8-15

# IO优化
disk_cachemodes = writeback

3.2 Neutron网络优化


# /etc/neutron/plugins/ml2/openvswitch_agent.ini

[ovs]
# VXLAN性能优化
enable_tunneling = True
local_ip = 10.0.0.11
tunnel_types = vxlan
l2_population = True

# ARP优化
arp_responder = True

# 流表优化
flow_table_size = 65536

[agent]
# 减少polling间隔
polling_interval = 2

# 启用本地DNS
enable_localdns = True

3.3 Cinder存储优化


# /etc/cinder/cinder.conf

[DEFAULT]
# I/O优化
volume_backend_name = ssd-backend
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver

# 多后端支持
enabled_backends = lvm,ceph

[lvm]
volume_group = cinder-volumes
target_helper = tgtadm
volume_clear = zero
volume_clear_size = 1

[ceph]
volume_driver = cinder.volume.drivers.rbd.RBDDriver
rbd_pool = volumes
rbd_flatten_volume_from_snapshot = False

3.4 系统级优化


# /etc/sysctl.conf

# 网络优化
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65535
net.ipv4.tcp_max_syn_backlog = 65535

# 内存优化
vm.swappiness = 10
vm.vfs_cache_pressure = 50

# 文件描述符
fs.file-max = 655350

# KVM优化
kernel.sched_min_granularity_ns = 10000000
kernel.sched_wakeup_granularity_ns = 15000000

四、性能监控

4.1 关键性能指标

指标 正常范围 告警阈值
CPU使用率 < 70% > 80%
内存使用率 < 80% > 90%
磁盘IOPS < 80% > 90%
网络带宽 < 70% > 85%
API响应时间 < 500ms > 1s

4.2 性能测试工具


# 使用fio进行存储性能测试
fio --name=random-read --ioengine=libaio --iodepth=32 --rw=randread --bs=4k --size=1G --numjobs=4 --runtime=60 --group_reporting

# 使用iperf进行网络性能测试
iperf3 -c 10.0.0.21 -P 4 -t 60

# 使用stress进行CPU压力测试
stress --cpu 4 --timeout 60s

五、最佳实践

5.1 故障预防

1. 定期巡检

2. 容量规划

3. 备份恢复

5.2 性能优化建议

1. 计算优化

2. 网络优化

3. 存储优化

六、总结

本文介绍了OpenStack故障排查和性能调优的完整指南。

核心要点:

下篇预告: 《OpenStack生产环境最佳实践》

发表回复

后才能评论