整个安装过程,报错是最经常的事,毕竟openstack的很多东西都还不成熟,冷静的排错才是王道,尽管openstack错误不断,但是最终他还是能跑起来的。
出错时候,我本着内事问百度,外事问谷歌的原则寻求帮助,另外也从网上的同行朋友处汲取帮助,可以说错误是多种多样的,这里也只能列举几种常见的错误,未尽之处,各位按照查自己的步骤,查log,查bug列表,查launchpad,求助中国同行朋友,求助邮件列表里的外国朋友的顺序排错吧。
1 各组件同步数据库时候报错:
这个时候报错大体上都是数据库拒绝访问或者找不到数据库,排错方法如下:
1. 检查数据库里是否建立了相应数据库
2. 检查数据库的权限是否存在问题,ubuntu 12.04 mysql需要给本机一个权限,
添加grant all on keystone.* to ‘keystone’@'controller’ identified by ‘ruijie’;给本机一个权限
3. 检查配置文件中mysql的地址、用户名、密码是否填写正确
2 Details: [Errno 111] Connection refused
这类错误很明显是keystone和相应模块的连接问题,检查keystone的日志,如果没有相应服务的报错记录,猜测应该是其他部件的授权地址出错,有相应记录,一般是授权出错,检查各部件配置文件中的授权token是否正确,检查keystone的数据是否正确,用户、服务、endpoint是否存在。如果之前的办法还是不行,重启服务,或者直接aptget remove —purge相应组件,重新安装。
3 依赖包错误
例子:ImportError: No module named keystone.middleware.auth_token
由于swift原来是独立的项目,所以Swift安装后需要keystone的相应模块,如果没有就会报这个错误,解决方法也很简单:apt-get install python-keystone python-keystoneclient
手动安装,常常会出现这种错误,但是往往以google就能解决
4本身bug错误
ValueError: invalid literal for int() with base 10: 'true'
在启动swift代理节点的时候,很郁闷的是,我明明没改几个地方,为什么值会错误,这个错误只要将配置文件中改为delay_auth_decision = 1就可以了,大众化的bug你一问度娘,答案就出来了,如果自己没有做致命修改,基本可以怀疑是openstack的问题
5实例错误
最为普遍,也最头大,原因五花八门,表现为服务在nova-manage service list中都正常,但是启动实例时出错,这时需特别注意dashboard启动实例时出错的位置,networking?还是spaning?还是scheduler?不同阶段查看不同地方的日志,最常见的有以下几个:
1. 网络配置错误导致分配不了IP地址,如果IP地址未分配那么可能就是这个错误
解决;核对标准配置文件,检查网络配置错误
2. rabbitmq或者其他什么组件没有运行
查看日志即可发现,这个的原因又很多样,这些组件正常情况下,是不会停掉的,一般是错误修改配置后才会,回忆自己出错之前做的修改,还原回来即可修复
6 僵尸实例的产生
僵尸实例一般是非法的关闭nova或者底层虚拟机,又或者在实例错误时删除不了的错误,注意用virsh list检查底层虚拟机是否还在运行,有的话停掉,然后直接进入数据库删除。
# mysql -u root -p
Enter password:
mysql> use nova;
mysql> SET FOREIGN_KEY_CHECKS=0;
Query OK, 0 rows affected (0.00 sec)
mysql> delete from instances where id = '29';
Query OK, 1 row affected (0.04 sec)
mysql> delete from instances where id = '30';
Query OK, 1 row affected (0.04 sec)
mysql> SET FOREIGN_KEY_CHECKS=1;
Query OK, 0 rows affected (0.00 sec)
8月3日
root@openstack-controller:~# keystone user-list
Expecting authentication method via
either a service token, --token or env[SERVICE_TOKEN],
or credentials, --os_username or env[OS_USERNAME].
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=admin
export OS_AUTH_URL=http://localhost:5000/v2.0/
root@openstack-controller:~# glance index
Failed to show index. Got error:
There was an error connecting to a server
Details: [Errno 111] Connection refused
初步判定为keystone的问题检查keystone的日志为空。。。
删除service和endpoint重试
就是glance与keystone的连接问题
应该先装好keystone后装glance
这里删除glance重新配aptget remove --purge
同时注意删除数据库
Starting proxy-server...(/etc/swift/proxy-server.conf)
Traceback (most recent call last):
File "/usr/bin/swift-proxy-server", line 22, in <module>
run_wsgi(conf_file, 'proxy-server', default_port=8080, **options)
File "/usr/lib/python2.7/dist-packages/swift/common/wsgi.py", line 122, in run_wsgi
loadapp('config:%s' % conf_file, global_conf={'log_name': log_name})
File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 247, in loadapp
return loadobj(APP, uri, name=name, **kw)
File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 271, in loadobj
global_conf=global_conf)
File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 296, in loadcontext
global_conf=global_conf)
File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 320, in _loadconfig
return loader.get_context(object_type, name, global_conf)
File "/usr/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 450, in get_context
global_additions=global_additions)