openstack中利用screen命令重启服务
在openstack的老一点的版本中,通常使用./rejoin-stack.sh重新启动所有指定的服务,在最新的master分支中,并没有rejoin-stack.sh,那么是不是重启服务只能先./unstack.sh,然后再./stack.sh。当然不是了,这样极其浪费时间。事实上,我们可以通过窗口管理器管理每一个已经启动的openstack服务,在使用devstack安装部署openstack后,多个openstack服务进程共享一个物理终端的窗口管理器,这个screen session里包含了多个screen窗口,每个对应一个openstack服务。我们可以在devstack目录下运行screen -x stack弹出这个共享的screen窗口,如下所示:
我们可以看到这里总共开启了20个服务进程,最后一个是horizon,之后可以使用ctrl+a+' 进入交换窗口,然后输入对应服务进程的number(也可以直接ctrl+a+n切换到下一个服务进程对应的窗口,或者ctrl+a+p切换到上一个服务对应的窗口),在这里,我们直接输入6进入n-api*窗口,也就是openstack nova的API服务,如下所示:
之后进入nova API窗口,ctrl+c 关闭nova API服务,如下所示:
关闭nova API服务后,我们运行nova list 将会出现错误,此时,我们在screen窗口按向上键,就可以回滚到开启nova API服务的命令,是/usr/local/bin/glance-api --config-file=/etc/glance/glance-api.conf & echo $! >/opt/stack/status/stack/g-api.pid; fg || echo "g-api failed to start" | tee "/opt/stack/status/stack/g-api.failure",
按回车运行此命令后,如下所示:
这将会开启nova API服务,再运行nova list将不会出现错误。
至此,重启openstack服务的讲解已经完成。需要重启别的服务也只需要切换到对应窗口先ctrl+c,再按向上键后回车运行即可。