OpenStack 常见问题及解决方法

OpenStack 常见问题及解决方法  


执行命令
python

sudo service nova-api restartmysql

返回结果sql

restart: Unknown instance数据库

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

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

解决方法:api

service nova-api start服务器


以下面的问题:网络

启动rabbitmq-server服务进程app

/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配置项指定。