14. 云平台服务器重启注意事项


由于服务器重启,导致云平台服务异常。因此写一个简单的文档,供参考!

14.1. 核心服务状态检查

14.1.1. cinder服务

../_images/cinder_status.png

cinder 服务状态正常

14.1.2. neutron服务

../_images/neutron_status.png

neutron 服务状态异常

14.1.3. nova服务

../_images/nova_bad_status.png

nova 服务状态异常

14.1.4. glance 服务

../_images/glance_status.png

glance 服务状态正常

14.1.5. 消息队列服务状态

在控制节点,使用如下的命令:

rabbitmqctl status
../_images/rabbitmq_status.png

rabbitmq 服务状态正常

14.1.6. Ceph集群状态

在ceph集群上任意一个节点,使用ceph –s 命令:

../_images/ceph_status2.png

rabbitmq 服务状态正常

14.2. 异常服务重启

从上面的可以看到,nova服务、neutron服务异常,我们需要手动重启异常服务。

14.2.1. 重启neutron服务

  • 首先在网络节点:

    cd /usr/bin/;
    for i in neutron*; do service $i restart; done;
    
  • 然后在控制节点:

    cd /usr/bin/;
    for i in neutron*; do service $i restart; done;
    
  • 然后检查状态:

    ../_images/neutron_status2.png
    ../_images/neutron_status3.png
    ../_images/neutron_status4.png

    看最后一张图,neutron服务状态正常了。

14.2.2. 重启nova服务

  1. 在控制节点

    cd /usr/bin;
    for i in nova*; do service $i restart; done
    
  2. 然后在计算节点:

    cd /usr/bin;
    for i in nova*; do service $i restart; done
    
  3. 检查服务:

    ../_images/nova_status2.png
    ../_images/nova_status3.png

    可以看到,nova服务状态也正常了。

14.3. 启动虚拟机测试

租户用户登录,然后创建虚拟机。使用cirros测试镜像。

../_images/lanch_instance_test1.png
../_images/lanch_instance_test2.png
../_images/lanch_instance_test3.png

从最后一张图可以看到,虚拟机创建成功。至此,云平台核心服务正常。

14.4. 脚本

另外,自己写了一个简单的脚本,检查OpenStack相关 核心组件的服务状态。该脚本基于Ubuntu部署的OpenStack!

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#! /usr/bin/env bash

error_log='/smbshare/os_status.log'
if [[ ! -e $error_log ]];then
    touch $error_log
fi

source /root/openstackrc
set -ex

nova service-list
cinder service-list
neutron agent-list

set +ex

echo -e "\n" && sleep 2

# 检查glance 服务是否启动
# 后面睡眠两秒是保证结果在终端顺序输出,否则可能会交织在一起!
echo -e "\e[1;31m++ check glance service status \e[0m"
ps -ef | grep glance | grep -v grep
echo
netstat -pltn | grep 9292
echo -e "\n" && sleep 2

# 检查keystone 服务是否启动
echo -e "\e[1;31m++ check keystone service status \e[0m"
ps -ef | grep keystone | grep -v grep
echo
netstat -pltn | grep 5000
echo -e "\n" && sleep 2

#swift stat

cd /usr/bin
##ser=`for com in cinder glance nova keystone heat ceilometer neutron; do for i in $com-*; do [[ ! $i =~ "bak" ]] && service $i status; done; done 2>/dev/null | grep process | awk '{print $1}'`
#ser=`for com in cinder glance nova keystone neutron; do for i in $com-*; do [[ ! $i =~ "bak" ]] && service $i status; done; done 2>/dev/null | awk '{print $1}'`
#for i in $ser; do service $i status; done

echo -e "\e[1;31m++ check recognized binary service status \e[0m"
echo "" > $error_log
for com in nova cinder neutron glance keystone heat ceilometer;
do
    #for i in $com*; do [[ ! $i =~ "bak" ]] && service $i status 2>/dev/null; done
    for i in $com*; do [[ ! $i =~ "bak" ]] && service $i status 2>>$error_log; done
    echo
done #2>/dev/null
#echo -e "\n" && sleep 2
echo && sleep 2

echo -e "\e[1;31m++ check rabbitmq-server status \e[0m"
set -ex
rabbitmqctl status