《OpenStack高可用集群(下册):部署与运维》—11.4OpenStack高可用集群基础服务部署

举报
华章计算机 发表于 2019/05/29 20:54:32 2019/05/29
【摘要】 本书摘自《OpenStack高可用集群(下册):部署与运维》一书中的第11章,第11.4.1节,作者是山金孝。

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。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。