最近遇到个问题:自制的虚拟机镜像可以启动成功,可以ping通floating ip, 但SSH时认证通不过,说是public/private key与用户名不匹配。自己上网查了下,有可能是metadata服务没起的缘故,就启动这个服务,结果一直起不来,日志中错误信息如下:
2013-01-29 17:12:10 DEBUG nova.wsgi [-] Loading app metadata from /etc/nova/api-paste.ini from (pid=32335) load_app /usr/lib/python2.6/site-packages/nova/wsgi.py:371
2013-01-29 17:12:10 CRITICAL nova [-] [Errno 98] Address already in use
2013-01-29 17:12:10 TRACE nova Traceback (most recent call last):
2013-01-29 17:12:10 TRACE nova   File "/usr/bin/nova-api-metadata", line 44, in <module>
2013-01-29 17:12:10 TRACE nova     server = service.WSGIService('metadata')
2013-01-29 17:12:10 TRACE nova   File "/usr/lib/python2.6/site-packages/nova/service.py", line 584, in __init__
2013-01-29 17:12:10 TRACE nova     port=self.port)
2013-01-29 17:12:10 TRACE nova   File "/usr/lib/python2.6/site-packages/nova/wsgi.py", line 72, in __init__
2013-01-29 17:12:10 TRACE nova     self._socket = eventlet.listen((host, port), backlog=backlog)
2013-01-29 17:12:10 TRACE nova   File "/usr/lib/python2.6/site-packages/eventlet/convenience.py", line 38, in listen
2013-01-29 17:12:10 TRACE nova     sock.bind(addr)
2013-01-29 17:12:10 TRACE nova   File "<string>", line 1, in bind
2013-01-29 17:12:10 TRACE nova error: [Errno 98] Address already in use
2013-01-29 17:12:10 TRACE nova 貌似端口被占用了,但是我查了下metadata服务的默认端口是8775,而nova-api的端口就是8775,所以这个metadata服务无法启动。之后找了一些资料,修改了nova.conf里面的一些配置,如下:enabled_apis=metadata,ec2,osapi_compute,osapi_volume
metadata_host=10.10.1.162
metadata_port=8779metadata_listen=0.0.0.0
metadata_listen_port=8779
metadata_manager=nova.api.manager.MetadataManager结果还是不行,目前实在是想不到该如何解决了,有人遇到过同样的问题吗?SSH认证通不过究竟是啥原因?
这个openstack-nova-metadata-api服务,启动时能指定端口吗?

解决方案 »

  1.   

    controller节点 启nova-api  computer节点 启nova-metadata-api
      

  2.   


    那controller和computer的nova配置里面需要加上metadata_host的配置么? 如果要配的话分别指向哪儿?
      

  3.   

    自己解决了无法SSH的问题,为啥会出现这个问题暂时还没搞的很清楚,但是修改了两个地方就可以SSH了。
    1)将compute节点中nova.conf的libvirt_type从qemu改为kvm
    2)制作镜像时修改/boot/grub/grub.conf然后在kernel的quiet后面加上enforcing=0然后就可以了SSH了。撒下花,卡在这儿很久了,终于搞定了。