Error: No valid host was found.

使用openstack创建虚拟机经常会遇到以下的这个错误
Error: No valid host was found. There are not enough hosts available.
从字面意思就可以看出是无法找到可用的host的资源来创建虚拟机。

再深一层的分析就是为什么会无法找到host主机呢?
原因有多种,有可能是计算节点down了,但这个原因相信大家都能轻易的分析出来。
下面就从个人遇到的这个问题时来简单的梳理下找问题流程。
问题:
创建虚拟机时出现No valid host was found. There are not enough hosts available错误

似乎看不出什么实质性的东西。于是去后台/var/log/nova/目录下查看几个日志文件,发现了nova-conductor.log的下面这一段

上面提示Failed to schedule instances,于是就查看了nova-schedule.log文件,发现没什么有用信息
于是,打开了nova的debug,将nova.conf文件的debug=true
default_level=DEBUG
重启openstack-nova-*所有服务,再次新建虚拟机

再次查看nova-schedule.log文件
发现下面这个东西

There are 0 hosts available but 1 instances requested to build

让我十分不解
于是我查看了

nova-status upgrade check

显示没有任何问题

根据nova-schedule.log文件的debug信息查看了

/usr/lib/python2.7/site-packages/nova/scheduler/filter_scheduler.py:
/usr/lib/python2.7/site-packages/nova/filters.py

得出了一个似乎没什么帮助的结果:
在虚拟机创建过程中,nova-schedule进行host资源调度,将我这台唯一的计算节点给过滤掉了(all in one),
调度的流程大概是这样

注:图片来自于这里

然后我就陷入了沉思,究竟是什么原因让nova-scheduler将唯一的host过滤掉。
于是想到了几个,内存,磁盘不足?这个在之前已经验证排除。
网络存在问题?查看systemcl status neutron-*发现所有组件都正常运行
于是又再次使用neutron agent-list命令看
发现了有些异常!!!
这里写图片描述
居然没有openvswitch这个agent

这里说明下:我使用的是ocata的版本,官方默认的是使用Linuxbridge,因为需要测试下路由的dvr功能,所以使用openvswitch。

systemctl查看状态明明是运行着

认真一看,发现最后有一个错误的提示。
然后打开日志查看,发现了这个错误

提示我的provider网络的网桥没有找到
然后用ovs-vsctl show查看了网桥

对比一看,确实没有enp0s31f6这个网桥,于是打开openvswitch.ini查看配置,发现

bridge_mappings = provider:enp0s31f
居然写成了网卡名了,都怪之前配过Linuxbridge,很自然的配成了网卡名
改成bridge_mappings = br-provider后,重启网络,果然
neutron agent-list 上面就有了openvswitch,openvswitch也不再报错,创建虚拟机也没问题
就是因为网络的问题,nova-scheduler把唯一的计算资源也filter掉了。就没有后面的事了。

整体总结下:
竟然因为这个配置错误花了一个早上的时间,中间还经历错误地方源码查看的弯路,还在有些懊悔之时,突然意识到了严重的问题,对neutron的原理还很表面,对于配置选项也不明所以,对openvswitch和Linuxbridge的区别又说不出具体等等,于是要赶紧填坑,留下此博客告诫自己,说不定也可以帮助其他人。。。。

参考:
源码分析虚拟机创建过程:
https://blog.csdn.net/u014022631/article/details/52530212
官网对每个agent配置详解:
https://docs.openstack.org/ocata/config-reference/networking/networking_options_reference.html#open-vswitch-agent-configuration-options

猜你喜欢

转载自blog.csdn.net/energysober/article/details/80098913