红联Linux门户
Linux帮助

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

发布时间:2015-10-07 10:32:26来源:linux网站作者:wang_san_shi

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配置排除错误。


OpenStack制作Ubuntu镜像:http://www.linuxdiyf.com/linux/11877.html

为OpenStack制作CoreOS虚拟机镜像(基于CoreOS官方提供镜像):http://www.linuxdiyf.com/linux/11940.html

使用ISO文件制作OpenStack使用的CoreOS镜像:http://www.linuxdiyf.com/linux/11941.html

使用官方Fedora22 ISO镜像制作OpenStack云镜像:http://www.linuxdiyf.com/linux/12814.html