单位有一个小型的使用OpenStack搭建的私有云平台,昨天在使用Horizon创建一个实例时,发现该实例创建失败,任务状态一直显示为Building,随后可以在分配给该实例的计算节点上的compute.log中发现如下信息:


compute.log:2015-06-08 16:23:17 WARNING nova.compute.manager [-] Found 4 in the database and 3 on the hypervisor.
compute.log:2015-06-08 16:23:17 WARNING nova.compute.manager [-] [instance: d078bb27-0c78-4534-ae25-c58703488eff] Instance found in database but not known by hyperv
isor. Setting power state to NOSTATE

用google搜索了一下,没得到什么有效的信息,于是去查了一下该计算节点的其他服务日志,发现其他服务日志中,只有api.log中可以发现该实例相关的消息请求记录,其他均没有发现与该实例相关的记录,也没有错误或者警告的信息。

后查询nova数据库,在compute_nodes表和instances表中找到该实例的相关记录。

这说明nova-db接收并响应了api的请求,但消息发送给nova-compute服务时出了问题,具体是消息队列还是nova-compute的问题,尚不清楚。


折腾了一天,没有找到好的解决办法,于是第二天一早对该计算节点的nova所有相关服务进行了重启,问题解决:

for srv in api cert network scheduler compute consoleauth ; do service openstack-nova-$srv restart; done


后记:重启相关服务是没有办法的办法,在遇到类似情况时,可能会解决问题。但是尚不清楚问题的症结所在(日志中查不出来,搜索了compute.log的那两条警告也没什么结果),同时也不排除是使用的openstack的版本比较陈旧(Essex,2012年的东西)遗留的BUG导致的问题。