理论上,生产环境的OpenStack集群尽量不要关闭,但由于某些原因你肯定会遇到需要关闭整个集群的,如计划中的机房断电,版本升级等。特别是物理断电要特别谨慎,因为会导致磁盘故障,以及数据状态的混乱,从而导致各类问题的出现。我经常遇到的问题是,当物理断电后,mariadb galera 启动失败,这个组件可是核心组件,数据库起不来,那么整个openstack集群就停摆了。
一般关闭的顺序是这样的,先关闭OpenStack上的虚拟机,接着关闭计算节点、Ceph节点、控制节点。如果用了“超融合架构”,将Ceph和Compute放在一起了,关机计算节点之前 ,需要先执行ceph osd set noout,才能关闭。
注意:请确认虚拟机之间是否有特殊的关闭顺序要求。
设置noout标记,防止因为Ceph节点断电引起重平衡
a、登陆到Controller节点或者Ceph OSD节点,执行:
ceph osd set noout
b、确认集群状态,可以看到noout 标记
# ceph -s cluster 7eb2b84a-c73e-4050-b735-3ba643ffc603 health HEALTH_WARN noout flag(s) set
登陆每一个计算节点,执行:
poweroff
poweroff
假设你有3个控制节点(标配就是3个),首先判断哪一台主机上拥有keepalive主IP,首先关闭其他2台控制节点,最后关闭拥有keepalive主IP的控制节点,并且记住关闭的顺序,后面启动的时候需要相反的顺序启动:
(1)首先判断哪一台主机上拥有keepalive主IP,假设192.168.1.140是HA地址,用命令 ip a |grep 192.168.1.140 判断,假设controller01拥有keepalive主IP;
(2)登陆到其他两台控制节点controller02节点和controller03节点,分别执行:
poweroff
每个节点关闭完成,多等几分钟,使集群有充足的时间在剩余的控制节点之间重新分配服务。
(3)最后登陆到controller01节点,执行:
poweroff
至此,集群已经安全关闭。
重启集群过程正好相反,先启动控制节点,再启动Ceph节点,最后启动计算节点,启动计算节点后再登录web管理界面将相应的虚拟机启动。
需要特别注意的是,启动控制节点的时候,按照关闭相反的顺序进行启动。
?
原文地址:http://blog.51cto.com/yuweibing/2085924