OpenStack 常见问题及解决方法

原创
2016/01/24 18:08
阅读数 3.6K

OpenStack 常见问题及解决方法  


执行命令

sudo service nova-api restart

返回结果

restart: Unknown instance

有些读者可能刚开始接触Linux操作系统,对于这些简单的命令的运用还不熟悉,不知道如何解决。这个时候需要看明白错误提示,明白出错的原因,比较好的方法是使用搜索引擎搜索错误提示,明白出错的原因。

上面的问题原因是nova-api服务进程原本就没有启动,如果发出”service nova-api restart”命令重启nova-api服务进程,就会出现”未知进程”的错误提示了。

解决方法:

service nova-api start


如下面的问题:

启动rabbitmq-server服务进程

/etc/init.d/rabbimq-server restart

返回结果

Starting rabbitmq-server: FAILED - check /var/log/rabbitmq/startup_log, _err

rabbitmq-server.

从 错误提示可知,rabbitmq-server启动失败,但是没有具体的原因。这个时候可以查看rabbitmq-server服务的日志记录。结果中也 提示了“check /var/log/rabbitmq/start_log,_err”,意思为检查日志记录文件。

利用搜索引擎搜索日志记录文件中的错误记录,可能会找到解决的方法。

原因1

服务器的hostname修改过,重启之后rabbimq-server就可能不能启动了。

解决的办法:

编辑rabbitmq.conf配置文件


vi /etc/rabbitmq/rabbitmq.conf 

NODENAME=rabbitmq@hostname

NODE_IP_ADDRESS=172.0.0.1

NODENAME指定使用rabbimq-server进程的用户,hostname是服务器的hostname,NODE_IP_ADDRESS指定了服务器的IP地址。

重新启动rabbitmq-server

原因2:

重启服务器后,rabbitmq-server数据库绑定旧数据

解决办法:

删除rabbitmq-server的数据库

rm –rf /var/lib/rabbitmq/mnesia


下面给出OpenStack云平台涉及到的相关服务进程的日志记录的默认存放地址:

服务进程路径或文件

nova 服务(nova-api, nova-scheduler, nova-objectstore,nova-network,nova- compute,nova-volume)/var/log/nova(每项服务有对应的日志文件,请对应日志文件的文件名进行日志观察)

glance服务(glance-api,glance-regisry)/var/log/glance(每项服务有对应的日志文件,请对应日志文件的文件名进行日志观察)

keystone服务     /var/log/keystone/keystone.log,/var/log/syslog

rabbitmq服务     /var/log/rabbitmq

mysql服务         /var/log/mysql

libvirt服务          /var/log/libvirt

swift服务          /var/log/syslog

memcached服务    /var/log/memcached.log


?网络求助

当 碰上一些无法找到错误原因的问题,通过搜索引擎搜索问题的解决办法,又或者通过登录lauchpad.net进行问题的查询。在该网站上先查询确定是否有 同样的问题已经被解决。如果问题恰好已经被解决,可以参考问题的解决方法进行解决;如果是新的问题出现,可以发帖进行问题提问。

服务进程网站求助地址

novahttps://answers.launchpad.net/nova

glancehttps://answers.launchpad.net/glance

keystonehttps://answers.launchpad.net/keystone

swifthttps://answers.launchpad.net/swift


常见错误问题类型

1.输入的命令错误

执行创建网络命令

 nova-manage network create 192.168.0.0/24 1 255

返回结果

Command failed, please check log for more info

结果提示命令错误,但是旧版的官方文档是这样操作的。这种问题出现的原因就是参考了过时的安装文档导致安装失败。所以在安装部署OpenStack的时候记录安装的软件包的版本,这样在求助中说明更可以快速定位问题的原因。

解决方法:

正确的nova-manage network create命令要指定网络名称—label项,--bridge网桥名以及—bridge_interface网桥连接网卡。

nova-manage network create –label private 192.168.0.0/24 1 255 –bridge br100 –bridge_inteface eth1


2.没导入环境变量

问题1:

执行添加Keypair命令

euca-add-keypair test

返回结果

EC2_ACCESS_KEY environment variable must be set.

Connection failed

结果提示EC2_ACCESS_KEY环境变量尚未设置。这种情况在重登录服务器的时候出现,原因在于登出后原本的环境变量清空,需要重新设置环境变量。


解决办法

设置环境变量。具体添加环境变量的情况有两种:一是没有使用Keystone作为身份认证系统的Nova平台;二是使用Keystone作为身份认证系统的Nova平台,参考书本前面章节。


问题2:

执行命令

nova list

返回结果

You must provide a username, eithervia --username or via env[NOVA_USERNAME]

结果提示需要提供用户名或者设置环境变量,这种问题和问题1的出错原因是一样的。

解决办法:

设置环境变量。具体添加环境变量的情况有两种:一是没有使用Keystone作为身份认证系统的Nova平台;二是使用Keystone作为身份认证系统的Nova平台,参考书本前面章节。


3.导入错误的环境变量

执行命令查看虚拟机

euca-describe-instances

返回结果

Warning: failed to parse error message from AWS: <unknown>:1:0: syntax error

None: None

    返回结果提示语法错误,即环境变量的设置错误。出现问题的原因可能是使用了Keystone身份认证系统的OpenStack平台导入了使用过去的身份认证系统的环境变量(即nova-manage project zipfile命令产生的环境变量)。

解决办法:

    导入正确的环境变量。具体设置参考书本前面章节。

4.服务进程不可用

执行命令查看服务状态

nova-manage service list 

返回结果

nova-compute ubuntu01-machine nova enabled XXX 2011-11-21 07:05:02

    返回结果中nova-compute服务状态为不可用(XXX)。而可用的服务状态为-:)。

原因1:

nova-compute服务没有开启

解 决办法:在相应的节点上开启相应的服务。如例子的为:在ubuntu04-machine的节点上运行service nova- compute start,开启nova-compute服务。有时候配置错误的情况下nova-服务可能会在开启后自动关闭,执行 ps –ef|grep nova-compute命令查看进程中是否该服务正常运行。

原因2:

rabbitmq-server没有开启,导致不能通信。

解决办法:

开启rabbitmq-server服务进程

/etc/init.d/rabbitmq-server start

原因3:

服务器时间没有同步。

解决办法:

    使用ntp服务进行服务器时间同步。具体步骤参考书本前面章节内容。


执行命令

swift –A http://172.0.0.1:5000 –U admin –K password stat –V 2


返回结果

[Errno 111] ECONNREFUSED

返回结果只提示拒绝连接,查看Swift的服务日志/var/log/swift,发现没有任何记录。根据思考,swift使用keystone作为了身份认证系统,因此很有可能是Keystone服务出错。认真搜索日志文件,发现下面信息

Mar 14 08:31:18 nova-compute-3 init: keystone main process (7584) terminated with status 255

由此可见,Keystone服务被终结,导致访问Swift失败。

解决原因:

开启Keystone服务


5.端口占用

执行命令:

开启glance-api服务

service glance-api start

返回结果:

Starting the Token Authentication component

Traceback (most recent call last):

  File "/usr/bin/glance-api", line 66, in <module>

    server.start(app, int(conf['bind_port']), conf['bind_host'])

  File "/usr/lib/pymodules/python2.6/glance/common/wsgi.py", line 65, in start

    socket = eventlet.listen((host, port), backlog=backlog)

  File "/usr/lib/pymodules/python2.6/eventlet/convenience.py", line 38, in listen

    sock.bind(addr)

  File "<string>", line 1, in bind

socket.error: [Errno 98] Address already in use

返回的结果提示”Address already in use”。通过搜索引擎搜索,得出端口被占用的原因。出现问题应该是有其他进程占用了glance-api要使用的端口导致glance-api进程启动失败。

解决办法:

    终结占用端口的进程,或者修改glance-api服务进程使用的端口。修改glance-api服务端口需要在glance-api.conf配置文件中—bind_port配置项指定。


展开阅读全文
打赏
1
4 收藏
分享
加载中
更多评论
打赏
0 评论
4 收藏
1
分享
返回顶部
顶部