高可用集群corosync+pacemaker之pcs安装使用
前文我们介绍了高可用集群corosync+pacemaker的集群管理工具crmsh的常用命令的使用,回顾请参考https://www.cnblogs.com/qiuhom-1874/tag/crmsh/;今天我们来简单介绍另一款集群管理工具pcs;
一、环境准备
1、集群各节点同步时间和配置hosts文件解析各节点主机名;
提示:各节点都要去验证,是否时间同步了,hosts主机名解析;做了以上几步以后,如果有需要可把各节点的ssh互信也配置起来,方便各主机间互相拷贝文件;
2、在集群各节点安装程序包
yum install pacemaker pcs psmisc policycoreutils-python -y
提示:在集群各节点执行以上命令安装程序包;
3、程序包安装完成以后,在各节点启动pcsd,并把pcsd设置为开机自动启动
systemctl enable pcsd --now
提示:到此pcsd安装和启动就完成了;
二、利用pcs来快速创建启动集群
1、在集群各节点上给hacluster用户设定相同的密码
echo "you password" |passwd --stdin hacluster
提示:也可以不用这个用户,新建一个用户也行,总之在集群各节点上有一个一模一样的账号,并且密码也必须相同;建议使用hacluster用户;
2、认证各节点的用户名和密码
提示:如果集群主机特别多可以用shell的大括号展开特性;这个不需要在每个节点上做,在当前pcs所在节点上做就行了;
3、创建集群
4、启动集群
好了,到此一个3节点的corosync+pacemaker集群就创建启动好了;
验证:在各节点查看corosync pacemaker是否都启动了?
node01
node02
node03
提示:在node03上查看pacemaker时,它这里告诉我们我配置了stonith选项,却没有发现stonith设备;
三、pcs管理集群
1、查看集群状态
验证集群配置信息
2、关闭stonith选项
提示:可以看到我们关闭了stonith选项以后,再次验证集群配置就没有报任何错误了;
验证:在node03上查看pacemaker的状态,看看是否还会有stonith的错误?
提示:可以看到在集群的DC(node03)节点上查看pacemaker的状态,没有发现stonith相关错误;
3、查看pcs的帮助信息
[root@node01 ~]# pcs Usage: pcs [-f file] [-h] [commands]... Control and configure pacemaker and corosync. Options: -h, --help Display usage and exit. -f file Perform actions on file instead of active CIB. --debug Print all network traffic and external commands run. --version Print pcs version information. List pcs capabilities if --full is specified. --request-timeout Timeout for each outgoing request to another node in seconds. Default is 60s. --force Override checks and errors, the exact behavior depends on the command. WARNING: Using the --force option is strongly discouraged unless you know what you are doing. Commands: cluster Configure cluster options and nodes. resource Manage cluster resources. stonith Manage fence devices. constraint Manage resource constraints. property Manage pacemaker properties. acl Manage pacemaker access control lists. qdevice Manage quorum device provider on the local host. quorum Manage cluster quorum settings. booth Manage booth (cluster ticket manager). status View cluster status. config View and manage cluster configuration. pcsd Manage pcs daemon. node Manage cluster nodes. alert Manage pacemaker alerts. client Manage pcsd client configuration. [root@node01 ~]#
提示:pcs命令的用法很简单,就是pcs + 选线 +子命令,其中一个子命令对应一个对象的管理,比如cluster就是对集群配置相关管理,resource就是资源相关配置;如果我们要查看一个子命令的详细用法,可以使用pcs + 子命令 --help来查看;
4、列出资源代理
5、查看指定资源代理的帮助
提示:这个帮助信息和我们之前用crmsh的帮助信息类似,如果对应参数后面有required就表示这个参数是必选参数;
示例:利用ocf:heartbeat:IPaddr定义一个vip资源
[root@node01 ~]# pcs resource create webip ocf:heartbeat:IPaddr ip="192.168.0.199" nic="ens33" cidr_netmask="24" [root@node01 ~]# pcs resource webip (ocf::heartbeat:IPaddr): Started node01.test.org [root@node01 ~]# pcs status Cluster name: mycluster Stack: corosync Current DC: node03.test.org (version 1.1.21-4.el7-f14e36fd43) - partition with quorum Last updated: Sat Sep 5 11:58:49 2020 Last change: Sat Sep 5 11:58:40 2020 by root via cibadmin on node01.test.org 3 nodes configured 1 resource configured Online: [ node01.test.org node02.test.org node03.test.org ] Full list of resources: webip (ocf::heartbeat:IPaddr): Started node01.test.org Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled [root@node01 ~]#
提示:创建资源的方式和crmsh的方式很类似,只是命令不同而已,都是要给资源取一个名称,然后指定资源代理,然后给定参数直接创建即可;使用pcs resource命令可以列出资源列表;
创建一个web资源
把webip和webserver归并为一个组
查看集群配置
将节点node02设置为standby状态
提示:可以看到node02设置为standby状态以后,运行在node02上的资源也随之迁往其他节点;
将node02上线
提示:上线不再是crmsh里的online命令,而是unstandby;
手动迁移资源到其他节点
提示:前边crmsh里执行手动迁移资源,它默认会在配置界面给我们添加一条位置约束,pcs也是一样的套路,它也会给配置界面添加一条位置约束;
查看配置信息中位置约束配置
提示:pcs constraint 是查看集群所有约束;后面跟location表示只查看位置约束;
创建位置约束
提示:我们创建了一条位置约束,让webservice对node01的倾向性为正无穷,但是对应node03的资源并没有迁往node01,这其中的原因是webservice目前对node03的倾向性也是正无穷;
验证:修改webservice对node03的倾向性为100,看看webservice是否会迁往node01呢?
提示:可以看到把webservice对node03的倾向性改为100以后,运行在node03上的webservice就迁往node01上去了;
显示资源对集群各节点的倾向性分数
提示:crm_simulate -sL这个命令可以打印出当前集群各资源对各节点的倾向性的分数;好了,有关pcs的其他命令用法,自己可以查看帮助去慢慢实践;我个人觉得使用corosync+pacemaker高可用集群,手动管理集群用crmsh更好;pcs更适合用脚本的方式去管理部署集群;初学建议从crmsh入手比较好,它可以让我们很好的去理解corosync+pacemaker高可用集群架构;