OpenStack可靠性测试失败:RDO Packstack多节点节点检测延迟异常
解决OpenStack节点故障检测延迟与实例可靠性问题
嘿,你遇到的这个节点下线要等1分钟才被检测到、实例故障后没正常处理的问题,在Packstack默认部署的OpenStack多节点环境里真的挺常见的,我帮你拆解下核心原因和对应的修复方案:
1. 优先调小故障检测的超时阈值
默认配置下,OpenStack的心跳检测间隔太保守,这就是为啥要等一分钟才发现节点挂了。咱得修改几个关键参数:
- 在控制节点的
/etc/nova/nova.conf里调整:# 控制节点判定计算节点下线的超时时间,默认60秒,改成10秒 service_down_time = 10 # 计算节点向控制节点上报状态的间隔,默认60秒,改成5秒 report_interval = 5 - 在所有计算节点的
/etc/nova/nova.conf里同样设置report_interval = 5,然后重启计算节点的nova服务:sudo systemctl restart openstack-nova-compute - 另外别忘了Neutron的代理检测,在控制节点的
/etc/neutron/neutron.conf里改:
重启Neutron服务:# Neutron判定网络代理下线的超时,默认60秒,改成10秒 agent_down_time = 10sudo systemctl restart neutron-server
2. 开启实例自动疏散功能
你提到实例在节点下线后状态异常,大概率是Packstack默认没开自动疏散(Evacuate)。咱得把这个功能打开,让故障节点上的实例自动迁移到正常节点:
在控制节点的/etc/nova/nova.conf里添加:
# 开启自动疏散 auto_evacuate = True # 节点被判定下线后,延迟多久开始疏散,和前面的service_down_time匹配就行,设15秒 auto_evacuate_delay = 15
然后重启nova的调度和conductor服务:
sudo systemctl restart openstack-nova-scheduler openstack-nova-conductor
如果想要热迁移(Live Migration)(实例不中断的迁移),还得配置共享存储——所有计算节点要能访问同一个NFS/Ceph存储,这样实例的磁盘文件能被多个节点读取。配置好共享存储后,在nova.conf里加:
live_migration_flag = VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE
3. 验证调整效果
改完参数后,手动测试下:断开compute1的网络,然后在控制节点用命令看节点状态,正常10-15秒内就会显示down:
openstack compute service list --host compute1
同时,故障节点上的实例应该会被自动疏散到其他计算节点,你可以用openstack server list看实例的主机变化。
4. 排查防火墙和网络连通性
有时候延迟也可能是心跳端口被防火墙拦了,确保控制节点和计算节点之间开放这些端口:
- 5672(RabbitMQ消息队列,用于服务心跳)
- 8774(Nova API端口)
- 9696(Neutron API端口)
用nc命令测试下连通性,比如:
nc -zv compute1 5672
如果不通,就调整防火墙规则开放这些端口。
内容的提问来源于stack exchange,提问作者Bahjat
相关产品推荐
相关产品推荐

