《OpenStack高可用集群(下册):部署与运维》—11.4OpenStack高可用集群基础服务部署
11.4OpenStack高可用集群基础服务部署
11.4.1 Pacemaker集群管理软件部署
Pacemaker是OpenStack高可用集群的大脑,负责对全部基础软件服务和OpenStack核心组件服务的资源调度和管理,因此在OpenStack高可用集群部署中,第一步要完成的工作便是在控制节点上部署Pacemaker集群。更多关于Pacemaker集群资源管理器的工作原理和使用方法请参考第3章。本节重点介绍如何在三节点的控制节点集群中安装部署Pacemaker,而关于本节介绍的Pacemaker自动部署代码,可以参考笔者位于github的开源项目Openstack-HA-Deployment。在本章介绍的OpenStack高可用集群部署环境中,控制节点为运行在VMware虚拟机上的KVM虚拟机,而KVM虚拟机的系统在镜像创建时已通过脚本注入的形式进行了部分初始化设置,因此本节在KVM虚拟机控制节点中部署Pacemaker时,仅需做部分系统设置,在正式创建Pacemaker集群之前,需要在控制节点系统中进行以下的准备工作。
安装集群相关软件包:
yum install -y pcs pacemaker corosync fence-agents-all resource-agents
启动pcsd进程:
systemctl enable pcsd.service
systemctl start pcsd.service
禁用Firewalld和SELinux
systemctl disable firewalld.service
systemctl stop firewalld.service
setenforce 0
配置时钟同步服务器NTP:
sed -i s/^server.*// /etc/ntp.conf
echo "server $ntp_server iburst" >> /etc/ntp.conf
echo "SYNC_HWCLOCK=yes" >> /etc/sysconfig/ntpdate
systemctl enable ntpd.service
systemctl start ntpd.service
设置Fencing设备秘钥key:
mkdir -p /etc/cluster
echo ${fence_xvm} > /etc/cluster/fence_xvm.key
由于控制节点controller1-vm、controller2-vm和controller3-vm之间需要进行无秘钥SSH信任互访,因此需要建立节点之间的SSH信任关系。对于脚本自动化部署,可以通过expect工具和ssh-copy-id命令实现。假设nodes_list变量代表了全部控制节点主机名列表,则节点互信脚本可参考如下实现:
for i in `echo $nodes_list|awk '{print $2,$3}'`
do
expect << EOF
set timeout 2
spawn ssh-copy-id root@$i
expect {
"yes/no" {send "yes\r";exp_continue}
"password" {send "root\r";exp_continue}
}
EOF
done
在shell脚本中,expect工具通常用于应对交互式的命令行输出问题,而ssh-copy-id会自动将本地节点的公钥分发到目标节点上。Pacemaker集群软件安装完成后,默认在系统中自动创建一个名为hacluster的集群用户。为了将节点加入集群,需要为各个控制节点的hacluster用户设置密码:
echo ${hacluster_passwd}|passwd --stdin hacluster
这里的${hacluster_passwd}为用户指定的密码,设置完成之后,便可在任意控制节点上创建Pacemaker集群。在创建过程中,需要为集群节点进行授权,同时需要指定集群名称和需要加入集群的节点主机名:
pcs cluster auth $nodes_list -u hacluster -p ${hacluster_passwd} --force
pcs cluster setup --force --name $ha_cluster_name $nodes_list
pcs cluster enable --all
pcs cluster start --all
为了实现对控制节点的Fencing操作,需要为Pacemaker集群配置Stonith资源。根据11.3.2节介绍的KVM虚拟机Fencing配置,Pacemaker的Stonith资源创建命令如下:
pcs stonith create fence1 fence_xvm multicast_address=225.0.0.1
pcs stonith create fence2 fence_xvm multicast_address=225.0.0.2
pcs stonith create fence3 fence_xvm multicast_address=225.0.0.3
pcs resource defaults resource-stickiness=INFINITY
Pacemaker集群和Stonith资源创建完成后,在任何一个控制节点均可以查看Pacemaker集群及其资源运行状态。pcs status命令将会显示集群及其资源的详细信息。对于本节创建的Pacemaker集群,将会看到如下集群状态信息:
[root@controller1-vm ~]# pcs status
Cluster name: openstack-ha
Last updated: Tue Nov 29 22:05:21 2016 Last change: Tue Nov 29 22:05:01 2016 by root via cibadmin on controller1-vm
Stack: corosync
Current DC: controller1-vm (version 1.1.13-10.el7-44eb2dd) - partition with quorum
3 nodes and 3 resources configured
Online: [ controller1-vm controller2-vm controller3-vm ]
Full list of resources:
fence1 (stonith:fence_xvm): Started controller1-vm
fence2 (stonith:fence_xvm): Started controller2-vm
fence3 (stonith:fence_xvm): Started controller3-vm
PCSD Status:
controller1-vm: Online
controller2-vm: Online
controller3-vm: Online
Daemon Status:
corosync: active/enabled
pacemaker: active/enabled
pcsd: active/enabled
从控制节点controller1-vm的集群状态信息中可以看出,集群当前DC为controller1-vm,集群共有三个成员节点(controller1-vm、controller2-vm和controller3-vm)和三个资源(stonith资源),集群名称为openstack-ha,三个节点全部为online状态。在OpenStack高可用集群,尤其是生产环境中,节点隔离(Fencing)对于集群数据的完整性是非常重要的,因此建议在部署后续OpenStack相关服务之前,事先对Pacemaker集群的Stonith资源进行有效性验证。节点隔离有效性可以通过pcs stonith命令进行验证,具体过程可参考如下方式进行。
显示当前Pacemaker集群中的stonith资源:
[root@controller1-vm ~]# pcs stonith show
fence1 (stonith:fence_xvm): Started controller1-vm
fence2 (stonith:fence_xvm): Started controller2-vm
fence3 (stonith:fence_xvm): Started controller3-vm
假设需要将controller3-vm节点隔离(使用--off参数表示关闭节点而不是默认的reboot),则可以通过如下命令实现:
[root@controller1-vm ~]# pcs stonith fence controller3-vm --off
Node: controller3-vm fenced
检查KVM虚拟机controller3-vm是否已被关闭:
[root@controller3 ~]# virsh list --all
Id Name State
----------------------------------------------------
- controller3-vm shut off
确认controller3-vm已经被关闭之后,通过pcs stonith confirm命令告知Pacemaker集群资源管理器controller3-vm节点已经被隔离:
[root@controller1-vm ~]# pcs stonith confirm controller3-vm
Node: controller3-vm confirmed fenced
此时再检查Pacemaker集群及其资源运行状态,查看controller3-vm是否已经为offline状态。正常情况下被隔离后的controller3-vm在集群中应该为offline,具体如下:
[root@controller1-vm ~]# pcs status
Cluster name: openstack-ha
Last updated: Tue Nov 29 22:54:45 2016 Last change: Tue Nov 29 22:05:01 2016 by root via cibadmin on controller1-vm
Stack: corosync
Current DC: controller2-vm (version 1.1.13-10.el7-44eb2dd) - partition with quorum
3 nodes and 3 resources configured
Online: [ controller1-vm controller2-vm ]
OFFLINE: [ controller3-vm ]
……
至此,OpenStack高可用集群配置的第一步,即Pacemaker集群创建已经成功完成,后续只需将与各个OpenStack高可用集群相关的服务以Pacemaker资源形式添加到集群中即可,具体部署过程参见后续章节。此外,本节Pacemaker集群自动部署的源代码可参见笔者位于Github上的开源项目,对应的部署脚本为1_create_openstack_pacemaker_cluster.sh。
- 点赞
- 收藏
- 关注作者
评论(0)