第一次部署openstack的时候就遇见了这个问题,当时的版本是havana,
现在部署essex的时候又遇到了这个问题,经过一番折腾,解决了这个问题,记录下来,以免以后忘记。
===========================================================
1.查看/var/log/nova/nova-compute.log文件其中出现了这样的情况:
Domain not found: no domain with matching name ‘instance-00000008‘
2.备份文档/usr/lib/python2.7/dist-packages/nova/virt/libvirt/connection.py为commection.py.bak
3.编辑/usr/lib/python2.7/dist-packages/nova/virt/libvirt/connection.py
找到这么一行:virt_dom = self._conn.lookupByName(instance[‘name‘])
然后删除这一行
在在删除的位置添加:
# NOTE: In case of no domain up try: virt_dom = self._conn.lookupByName(instance[‘name‘]) except Exception, e: virt_dom = None
再找到这一行 xml = virt_dom.XMLDesc(0)进行删除 这一行的上一句:if not xml:
再在删除的地方添加:
if virt_dom: xml = virt_dom.XMLDesc(0) else: xml = self.to_xml(instance, network_info)
最后找到这么一行:
self.destroy(instance, network_info, cleanup=False) 这一行的下一行为( self.plug_vifs(instance, network_info)) 并在其前一行添加
if virt_dom:
进入目录cd /var/lib/nova/instances/instance-00000008
在这个目录下执行命令
virsh define libvirt.xml
然后重启实例。接着重启了nova-compute服务,查看nova-manage service list 发现依然是XXX,并在log中看到这样的情况:
CRITICAL nova [-] invalid syntax (connection.py, line 397) #说明在397行的语法有问题。
然后将
/usr/lib/python2.7/dist-packages/nova/virt/libvirt/connection.py 改名字为connection.py.bak2 (之所以为编号2,因为之前已经创建过connection.py.bak)
这个时候将
/usr/lib/python2.7/dist-packages/nova/virt/libvirt/connection.py.bak改为connection.py
并赋予权限:chmod 777 connection.py
重启nova-compute服务,service nova-compute restart 再查看nova-manage service list 服务都变成了笑脸;
Binary Host Zone Status State Updated_At
nova-consoleauth server1 nova enabled :-)2014-01-08 02:45:57
nova-cert server1 nova enabled :-) 2014-01-08 02:46:02
nova-scheduler server1 nova enabled :-) 2014-01-08 02:46:02
nova-compute server1 nova enabled :-) 2014-01-08 02:46:05
nova-network server1 nova enabled :-) 2014-01-08 02:46:03
nova-volume server1 nova enabled :-) 2014-01-08 02:46:03
部署OpenStack问题汇总(四)--openstack中nova-compute状态status显示为'XXX'的问题