设为首页 收藏本站
查看: 3491|回复: 0

[经验分享] 在Openstack H版部署Nova Cell 时 ,终端输入nova service-list 和 nova host-list 命令将报错

[复制链接]

尚未签到

发表于 2015-4-12 09:10:51 | 显示全部楼层 |阅读模式
  
  关于Cell的基本介绍,可以参考贤哥的一篇文章:
      【OpenStack】G版中关于Nova的Cell  http://blog.iyunv.com/lynn_kong/article/details/8564558
  详细的代码分析,可以参考gaoxingnengjisuan的blog:
       OpenStack Nova-cell服务的源码解析(编者注:G版) http://blog.iyunv.com/gaoxingnengjisuan/article/details/14216977
  
  
  Cell的服务部署:
DSC0000.png
  Cell的消息路由:
DSC0001.png
  
   按照官方的推荐部署方案部署:即API Cell只部署nova-api,nova-cells服务,在Child Cell中部署除nova-api之外的全部cell服务(在本人的实际部署中,nova-compute单独部署在另一个节点)


在部署完nova-cells的服务之后,API cell上输入nova-manage service list,输出正常,但只显示本机的nova服务:




Binary           Host                                   Zone             Status     State Updated_At
nova-cells       API-cell                             internal         enabled    :-)   2014-04-04 09:57:47




在Child Cell 或nova-Compute节点上,输入nova-manage service list,输出也正常,但也只显示本Cell的nova服务:




Binary                   Host                                 Zone             Status     State Updated_At
nova-cert                Cell                                 internal         enabled    :-)   2014-04-04 10:00:11
nova-conductor       Cell                                 internal         enabled    :-)   2014-04-04 10:00:19
nova-consoleauth     Cell                                internal         enabled    :-)   2014-04-04 10:00:12
nova-scheduler        Cell                                 internal         enabled    :-)   2014-04-04 10:00:12
nova-cells               Cell                                 internal         enabled    :-)   2014-04-04 10:00:11
nova-compute     Computer3                         nova             enabled    :-)   2014-04-04 10:00:13
  


但是,在任意节点 终端输入 nova service-list 和 nova   host-list 命令将报错:

  命令报错:
  ERROR: Theserver has either erred or is incapable of performing the requested operation.(HTTP 500) (Request-ID: req-dfa169cf-db9e-44c6-b51b-0d80e4a89e3b)
  
  跟踪 API Cell 节点的 nova-api.log, 输出如下错误信息:



2014-04-04 15:17:25.151 3172 ERROR nova.api.openstack [req-dfa169cf-db9e-44c6-b51b-0d80e4a89e3b 836609a159f244738933dc7c5cb6266a d965a
339b99a4d2da2be18bd0334b9ff] Caught error: invalid literal for int() with base 10: 'api!cell@1'
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack Traceback (most recent call last):
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/nova/api/openstack/__init__.py", line 1
19, in __call__
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack     return req.get_response(self.application)
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/webob/request.py", line 1296, in send
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack    application, catch_exc_info=False)
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/webob/request.py", line 1260, in call_a
pplication
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack    app_iter = application(self.environ, start_response)
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack     return resp(environ, start_response)
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/keystoneclient/middleware/auth_token.py
", line 539, in __call__
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack     return self.app(env, start_response)                               [26/1914]
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack     return resp(environ, start_response)
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack     return resp(environ, start_response)
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/routes/middleware.py", line 131, in __c
all__
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack    response = self.app(environ, start_response)
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 144, in __call__
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack     return resp(environ, start_response)
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 130, in __call__
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack     resp = self.call_func(req, *args, **self.kwargs)
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/webob/dec.py", line 195, in call_func
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack     return self.func(req, *args, **kwargs)
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/nova/api/openstack/wsgi.py", line 938,
in __call__
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack    content_type, body, accept)
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/nova/api/openstack/wsgi.py", line 997,
in _process_stack
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack    action_result = self.dispatch(meth, request, action_args)
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/nova/api/openstack/wsgi.py", line 1078,
in dispatch
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack     return method(req=request, **action_args)
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/nova/api/openstack/compute/contrib/serv
ices.py", line 139, in index
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack    services = self._get_services_list(req, detailed)
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/nova/api/openstack/compute/contrib/serv
ices.py", line 117, in _get_services_list
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack    services = self._get_services(req)
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/nova/api/openstack/compute/contrib/serv
ices.py", line 86, in _get_services
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack    context, set_zones=True)
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/nova/compute/cells_api.py", line 469, in service_get_all
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack    services)
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/nova/objects/base.py", line 606, in obj
_make_list
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack    **extra_args)
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/nova/objects/service.py", line 67, in _
from_db_object
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack    service[key] = db_service[key]
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/nova/objects/base.py", line 405, in __s
etitem__
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack    setattr(self, name, value)
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack   File "/usr/lib/python2.7/dist-packages/nova/objects/base.py", line 66, in sett
er
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack     return setattr(self, get_attrname(name), typefn(value))
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack ValueError: invalid literal for int() with base 10: 'api!cell@1'
2014-04-04 15:17:25.151 3172 TRACE nova.api.openstack
2014-04-04 15:17:25.154 3172 INFO nova.api.openstack [req-dfa169cf-db9e-44c6-b51b-0d80e4a89e3b 836609a159f244738933dc7c5cb6266a d965a3
39b99a4d2da2be18bd0334b9ff] http://192.168.122.12:8774/v2/d965a339b99a4d2da2be18bd0334b9ff/os-services returned with HTTP 500
2014-04-04 15:17:25.155 3172 INFO nova.osapi_compute.wsgi.server [req-dfa169cf-db9e-44c6-b51b-0d80e4a89e3b 836609a159f244738933dc7c5cb
6266a d965a339b99a4d2da2be18bd0334b9ff] 192.168.122.14 "GET /v2/d965a339b99a4d2da2be18bd0334b9ff/os-services HTTP/1.1" status: 500 len
: 335 time: 0.1216350
  
  
  后来查询了N久,发现社区已有人提出Bugs:https://bugs.launchpad.net/nova/+bug/1251043
  并已解决:
    Reviewed: https://review.openstack.org/81282
  Committed: https://git.openstack.org/cgit/openstack/nova/commit/?id=0df94733f7283cbc1e9ae7d27f5cd443158cae8e
  
  因为在Cell中,主机名的ID 前面加了一个前缀:cell routing path,所以格式为@ID,而nova object模块里,会用一个int()的方法来将id的字符串变为整数,而int('api!cell@1')显然会报一个ValueError!
  
  Patch 中给出的办法就是用一个代理类ServiceProxy,来处理附加在id前面的cell_paths,如下:



class ServiceProxy(object):
def __init__(self, obj, cell_path):
self._obj = obj
self._cell_path = cell_path
@property
def id(self):
return cells_utils.cell_with_item(self._cell_path, self._obj.id)
def __getitem__(self, key):
if key == 'id':
return self.id
return getattr(self._obj, key)
def __getattr__(self, key):
return getattr(self._obj, key)
  
  
  目前,输入nova service-list,得到正常输出,返回各个节点的nova服务,问题解决:
DSC0002.jpg
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-56175-1-1.html 上篇帖子: 用pdb调试OpenStack Havana 下篇帖子: [转]Openstack Havana Dashboard测试和使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表