通过源代码安装OpenStack,服务都是通过手动启动的,特别是在控制节点,要启动一大堆服务也挺麻烦的,并且我发现在用nova-all启动nova相关服务时nova-compute有时会报timeout错误而无法启动(),可能是nova-compute对其它服务存在依赖,得等其它服务启动完成才能启动,或者有时不希望在控制节点运行nova-compute服务,因此得把nova的相关服务一个一个的启动。为了方便我这里用了一个简单的文件openstack,内容如下:
-
#! /usr/bin/env bash
-
# start all needed services on control node
-
-
LOGDIR=/var/log/nova
-
keystone-all 1>/dev/null 2>&1 &
-
glance-control all start 1>/dev/null 2>&1
-
nova-api >${LOGDIR}/nova.api.log 2>&1 &
-
nova-xvpvncproxy >${LOGDIR}/nova.xvpvncproxy.log 2>&1 &
-
nova-network >${LOGDIR}/nova.network.log 2>&1 &
-
nova-objectstore >${LOGDIR}/nova.objectstore.log 2>&1 &
-
nova-scheduler >${LOGDIR}/nova.scheduler.log 2>&1 &
-
nova-cert >${LOGDIR}/nova.cert.log 2>&1 &
-
nova-consoleauth >${LOGDIR}/nova.consoleauth.log 2>&1 &
这样要运行的时候在终端输入:source ./openstack即可(这里我是以root用户运行的)
查看运行的服务可以用:jobs
要结束一个服务可以用:kill %num(这里num为作业编号,通过jobs获得)
这里我主要关心nova的调试信息,因此将他们保存为对应的log文件,方便查看。这里我没有运行nova-volume,因为需要一个卷nova-volumes,采用文件创建的nova-volumes在系统重启后不会自动挂载,反正暂时也没用nova-volume就先不管了,也没有运行nova-compute,如果一起运行的话很可能会报timeout错而启动不起来,建议等这些服务运行起来一个时间再单独运行(如果你想在控制节点运行nova-compute的话)。
北方工业大学 | 云计算研究中心 | 姜永