首页 > 其他分享 >01-Pacemaker

01-Pacemaker

时间:2022-12-11 15:55:05浏览次数:45  
标签:01 resource -- pcs cluster 集群 Pacemaker 节点

注意:SQL Server Linux需要依赖PaceMaker,其它服务不需要安装
安装PaceMaker

安装

yum install -y pacemaker pcs fence-agents-all resource-agents
pacemaker 是服务程序,pcsd 是 pacemaker 的客户端命令执行程序,任何的功能都需要 pcsd 来启动和设置,pcs是命令行执行程序
corosync是心跳监听程序
配置
创建PaceMaker集群

配置hacluster的密码

passwd hacluster

hacluster用户在安装pacemaker时已自动创建,可以通过以下命令确认hacluster用户已创建

cat /etc/passwd | grep hacluster

创建集群并启动启用集群,任一节点运行

pcs cluster auth -u hacluster -p wmsdb1 wmsdb2 wmsdb3

会生成/etc/corosync/corosync.conf文件

pcs cluster setup --name mycluster wmsdb1 wmsdb2 wmsdb3

启动集群,任一节点运行

pcs cluster start --all

设置corosync,pacemaker和pcsd服务开机自动启动,任一节点运行

pcs cluster enable --all

pcs property set stonith-enabled=false

默认值是true,当为true的时候,如果Cluster第一次启动资源失败,

如果为false,则主服务失效以后pacemaker不会选新的Master

在自动Failover操作后,需要用户使用以下命令手动清空资源启动失败的数量记录,重置资源配置

pcs resource cleanup

pcs property set start-failure-is-fatal=true

设置资源粘性为无限,也就是原主节点宕机然后恢复后,master不会重新回到该节点上

防止主节点宕机恢复时重新选主,再次导致服务不可用

pcs property set default-resource-stickiness="INFINITY"

“心跳”(Heart Beat)的概念,在这里是指集群节点之间互相通信,检查健康状态和集群属性变更的机制。通过设置集群属性 cluster-recheck-interval 来确定“心跳” 的时间间隔。

一旦集群中的某一个节点下线(不能互相通信),集群管理器可以尝试着在一段时间(failure-timeout)后去重启这台节点。如果在这段时间内节点又有反应(能与集群互相通信)了,那么在接收到这个回线的信号之后,就取消重启先前标记为下线的节点

不建议把 cluster-recheck-interval 设置的过短,比如 60s; 一般 failure-timeout 可以设置的短一些,60s, 而 cluster-recheck-interval 要设置的比 failure-timeout 长一些。

pcs property set cluster-recheck-interval=2min
添加防火墙例外
firewall-cmd --permanent --add-service=high-availability
firewall-cmd --reload
通过web界面访问pacemaker
访问任意节点:https://192.168.62.131:2224
账号/密码(即构建集群时生成的密码):hacluster/
在Manage Clusters 页面点击Add Existing
然后添加任意一集群节点IP并输入密码即可看到已设置的集群
测试

manual failover

pcs resource move ag_cluster-master node2 --master --lifetime=30S

execute on node1

pcs cluster stop
常用命令

查看corosync配置

cat /etc/corosync/corosync.conf

pcs config
pcs resource
pcs resource show
pcs resource debug-start orcl
pcs resource update =
pcs cluster
pcs cluster status

删除已配置集群

pcs cluster destroy

查看状态

pcs status corosync

查看节点配置

cibadmin --query --scope nodes

corosync-cfgtool -s

查看成员信息

corosync-cmapctl | grep members

验证配置

crm_verify -L -V

查看资源采用的类型

pcs resource standards

查看可用的ocf资源提供者

pcs resource providers

查看特定标准下所支持的脚本,例:ofc:heartbeat 下的脚本

pcs resource agents ocf:heartbeat

手动切换某节点到 standby 状态及取消standby 状态

pcs cluster standby ceph1
pcs cluster unstandby ceph1

防止资源在节点恢复后立即迁移

pacemaker默认所有节点的stickiness都为0

pcs resource defaults-resource-stickiness=100

查看

pcs resource defaults

重启资源

pcs resource restart resource_name

清理集群错误日志

pcs resource cleanup

默认当有半数以上节点在线时,集群认为自己拥有法定人数,是“合法”的,满足公式:total_nodes < 2 * active_nodes;

以3个节点的集群计算,当故障2个节点时,集群状态不满足上述公式,此时集群即非法;当集群只有2个节点时,故障1个节点集群即非法,所谓的”双节点集群”就没有意义;

在实际生产环境中,做2节点集群,无法仲裁时,可选择忽略仲裁保证业务提供(集群所有节点均正常时配置);做3节点集群,可根据对集群节点的高可用阀值灵活设置

pcs property set no-quorum-policy=ignore

设置合适的输入处理历史记录及策略引擎生成的错误与警告,在trouble shooting故障排查时有用

pcs property set pe-warn-series-max=1000
pe-input-series-max=1000
pe-error-series-max=1000

pacemaker基于时间驱动的方式进行状态处理,cluster-recheck-interval默认定义某些pacemaker操作发生的事件间隔为15min,建议设置为5min或3min

pcs property set cluster-recheck-interval=5

corosync默认启用stonith,但stonith机制(通过ipmi或ssh关闭节点)并没有配置相应的stonith设备(通过crm_verify -L -V验证配置是否正确,没有输出即正确),此时pacemaker将拒绝启动任何资源;在生产环境可根据情况灵活调整,测试环境下可关闭

pcs property set stonith-enabled=false

v2的heartbeat为了支持多节点集群,提供了一种积分策略来控制各个资源在集群中各节点之间的切换策略;通过计算出各节点的的总分数,得分最高者将成为active状态来管理某个(或某组)资源;

默认每一个资源的初始分数(取全局参数default-resource-stickiness,通过"pcs property list --all"查看)是0,同时每一个资源在每次失败之后减掉的分数(取全局参数default-resource-failure-stickiness)也是0,此时一个资源不论失败多少次,heartbeat都只是执行restart操作,不会进行节点切换;

如果针对某一个资源设置初始分数”resource-stickiness“或"resource-failure-stickiness",则取单独设置的资源分数;

一般来说,resource-stickiness的值都是正数,resource-failure-stickiness的值都是负数;有一个特殊值是正无穷大(INFINITY)和负无穷大(-INFINITY),即"永远不切换"与"只要失败必须切换",是用来满足极端规则的简单配置项;

如果节点的分数为负,该节点在任何情况下都不会接管资源(冷备节点);如果某节点的分数大于当前运行该资源的节点的分数,heartbeat会做出切换动作,现在运行该资源的节点将释 放资源,分数高出的节点将接管该资源

pcs property set default-resource-stickiness="INFINITY"

pcs property list 只可查看修改后的属性值,参数”--all”可查看含默认值的全部属性值

pcs property list
pcs cluster cib
cibadmin --query --scope crm_config
cibadmin --query --scope resources
常见问题(FAQ)
Q1: 脑裂(相同集群存在多个节点有不同的主)以后如何恢复?
A1: 执行以下命令

首先重启服务器,将服务重置为初始状态

reboot

重置粘性,防止因为粘性导致不会重新选主

pcs property unset default-resource-stickiness

重启pacemaker相关服务

systemctl restart pcsd pacemaker corosync

确认pcs集群恢复正常

pcs status

恢复粘性设置

pcs property set default-resource-stickiness="INFINITY"
参考

标签:01,resource,--,pcs,cluster,集群,Pacemaker,节点
From: https://www.cnblogs.com/KSPT/p/16973771.html

相关文章

  • #6035. 「雅礼集训 2017 Day4」洗衣服
    题目前言这个贪心有点妙,考试的时候没有想出来,一看题解恍然大悟。分析首先对于洗衣服,显而易见我们可以用堆来处理,可以得出每件衣服洗完的时间\(t_i\),其中\(t_i\)表示......
  • ogg启动抓取进程时报错OGG-01044
    问题描述:ogg启动抓取进程时报错OGG-01044,如下所示:源端:oracle10.2.0.464位异常重现:GGSCI(leo-10g-ogg)4>startextaSendingSTARTrequesttoMANAGER...EXTRACTEXTA......
  • 2022-2023-1 20221301 《计算机基础与程序设计》第十五周学习总结
    2022-2023-120221301《计算机基础与程序设计》第十五周学习总结作业信息这个作业属于哪个课程<班级的链接>https://edu.cnblogs.com/campus/besti/2022-2023-1-CFA......
  • P2522 [HAOI2011]Problem b
    简要题意\(n\)组数据,每组数据给定\(a,b,c,d,k\),计算:\[\sum_{i=a}^{b}\sum_{j=c}^{d}{[\gcd(i,j)=k]}\]\(a\leqb,c\leqd,1\leqn,a,b,c,d,k\leq5\times10^4\)。时间......
  • 总结2017 展望2018
    LZ-Says:时间过得真快,又是一年过去了,不知道大家这一年收获了什么,失去了什么,对未来又有什么样的计划?这里,且听LZ短暂述说~过去的20172016年12月31号~2017年1月1号,好兄弟聚集一......
  • [BUUCTF][Web][极客大挑战 2019]Secret File 1
    打开靶机对应的url右键查看网页源代码,查看到一个访问路径/Archive_room.php构造url访问一下http://3bfaebad-fdfa-4226-ae0a-551f0228becb.node4.buuoj.cn:81/Archive_......
  • [dp 记录]agc016F Game on DAG
    博弈论好题,做完感觉加深了对SG函数的理解!题意:给定一张DAG,问该DAG的\(2^m\)张导出子图中有多少张满足\(SG[1]=SG[2]\)注:此为转换后题意\(n\leq15\)考虑推......
  • buuoj-pwn-ACTF_2019_message
    buuoj-pwn-ACTF_2019_message总结低版本存在uaf时优先考虑doublefree给信号注册函数的函数signal()逆向分析glibc版本ubuntu18.04也就是glibc2.27对于这道题,我们......
  • pwn | ciscn_2019_s_3
    pwn|ciscn_2019_s_3x64ret2syscall主要参考:https://blog.csdn.net/github_36788573/article/details/103541178感觉ret2syscall比较灵活,哎。frompwnimport*con......
  • 编程路-基础提升-第六周-01
    函数入门函数时编程中重要的内容,是基础中的重点,也是高阶的基础,所以要掌握明白了解。函数基础变量.操作():方法例如:a.sum()变量.操作():属性例如:a.name操作():函数例如:s......