OpenStack使用Horizon登录报错问题的解决

OpenStack使用Horizon登录报错问题的解决

1、现象
安装完horizon后,输入URL可以访问登录页面,但是在登录页面输入用户名和密码,登录报错。

2、分析及解决
分别使用keystone、cinder、glance、neutron、nova(这次环境中控制节点上安装了这些组件)的客户端命令调用其API进行检测:
如使用以下命令:
#keystone user-list
#cinder endpoints
#glance image-list
#neutron subnet-list
#nova image-list

发现neutron subnet-list命令输出异常:
Authentication required.

查看neutron日志:
#tail -f -n 1000 /var/log/neutron/server.log | more


2015-04-17 09:10:26.173 1843 WARNING keystoneclient.middleware.auth_token [-] Aut
horization failed for token b6982224b184ebba284a6bb4ecbee0ae
2015-04-17 09:11:12.320 1843 WARNING keystoneclient.middleware.auth_token [-] Une
xpected response from keystone service: {u’error’: {u’message’: u’Could not find
user, %SERVICE_USER%.’, u’code’: 401, u’title’: u’Unauthorized’}}
猜测是用户配置出了问题。

另外从Horizon的日志也可以看出是neutron组件出了问题:
tail -f /var/log/apache2/error.log

[Fri Apr 17 01:17:14 2015] [error]     headers=headers, params=params)
[Fri Apr 17 01:17:14 2015] [error]   File “/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py”, line 1168, in retry_request
[Fri Apr 17 01:17:14 2015] [error]     headers=headers, params=params)
[Fri Apr 17 01:17:14 2015] [error]   File “/usr/lib/python2.7/dist-packages/neutronclient/v2_0/client.py”, line 1103, in do_request
[Fri Apr 17 01:17:14 2015] [error]     resp, replybody = self.httpclient.do_request(action, method, body=body)
[Fri Apr 17 01:17:14 2015] [error]   File “/usr/lib/python2.7/dist-packages/neutronclient/client.py”, line 190, in do_request
[Fri Apr 17 01:17:14 2015] [error]     self.authenticate()
[Fri Apr 17 01:17:14 2015] [error]   File “/usr/lib/python2.7/dist-packages/neutronclient/client.py”, line 226, in authenticate
[Fri Apr 17 01:17:14 2015] [error]     token_url = self.auth_url + “/tokens”
[Fri Apr 17 01:17:14 2015] [error] TypeError: unsupported operand type(s) for +: ‘NoneType’ and ‘str’

此时去确认neutron配置文件:
#more /etc/neutron/neutron.conf
果然发现问题,这里的问题是用户密码设置错误,在配置文件中更改密码,horizon登录正常。

3、同类问题扩展
这类问题除了组件配置文件配置问题外,也有可能是endpoint设置有问题(同样可以用组件客户端命令输出来确认),只不过此时要在mysql数据库中查找并修改配置信息:

mysql -uroot -p

mysql> show databases;
mysql> use keystone
mysql> select * from endpoint;
mysql> create table endpoint_bak as select * from endpoint;
mysql> update endpoint set url=‘http://192.168.10.1:9696’ where id=‘b1945b7a91d74093ae12146000119267’;

4、总结
horizon登录错误时,可能是因为endpoint配置错误或者用户密码租户等配置错误,总之首先要确认每个组件的客户端命令是否输出正常,发现不正常输出的组件后,查看其日志或endpoint配置排除错误。

作者:wang_san_shi
来源:CSDN
原文:https://blog.csdn.net/wang_san_shi/article/details/45099513
版权声明:本文为博主原创文章,转载请附上博文链接!

©️2020 CSDN 皮肤主题: 终极编程指南 设计师:CSDN官方博客 返回首页