`

heartbeat和Pacemaker配置

 
阅读更多

安装完成之后,要开始配置了,heartbeatPacemaker都需要配置。heartbeat主要是配置/etc/ha.d/ha.cf /etc/ha.d/authkeys这两个文件;Pacemaker的配置文件是xml格式的,主要通过crm这个命令行工具来配置。
ha.cf
authkeys的配置

/etc/ha.d/ha.cf — 全局的集群配置文件。

/etc/ha.d/authkeys — 这个文件里包含了key,用于属于一个集群的不同节点之间的相互认证。

ha.cf文件

下面是一个简单的配置文件。

autojoin none 关闭节点自动加入集群功能,集群中只包括下面 node指令指明的节点。如果设为any则支持节点自动加入集群。
bcast eth0
不同节点之间的信息通信方式,这里是通过eth0端口广播;还支持单播,组播的方式。
warntime 5
如果某节点5秒没有响应,则发出警告:这个节点可能挂掉了。
deadtime 15
如果某节点15秒没有响应,则认定这个节点挂掉了。
initdead 60
集群刚完成初始化,如果60秒没有响应,认定某个节点挂掉。
keepalive 2 “
心跳信号2秒一次,用来判断各个节点的健康情况
node vm1
声明集群中一个节点,vm-1-2hostname,记得在/etc/hosts加入
node vm2
node vm3

crm respawn
启动Pacemaker,并且Pacemaker启动失败会自动重启。
logfile /var/log/ha-log heartbeat
log

关于ha.cf的详细manul请查看http://people.linbit.com/~florian/heartbeat-users-guide/re-hacf.html

authkeys文件

这个文件应该只对root可读,建议权限设为600.这个文件格式很简单如下

auth num
num algorithm secret

num 只是校验方法的索引,一般只用一种校验方法即可。

algorithm 是规定使用哪中签名算法,目前支持CRCsha1,md5(不建议用crc).

secret 是实际的认证key.

一个example:

auth 1
1 md5 qwer

官方推荐的生成authkeys文件的方法:

( echo -ne “auth 1\n1 sha1 “; \
dd if=/dev/urandom bs=512 count=1 | openssl md5 ) \
> /etc/ha.d/authkeys
chmod 0600 /etc/ha.d/authkeys

验证配置

配置好ha.cfauthkeys之后,将这两个文件拷贝到vm-1-2,vm-2-2,vm-3-2/etc/ha.c

/etc/init.d/heartbeat start,然后运行crm_mon查看集群的情况。

============
Last updated: Fri Dec 25 22:59:15 2009
Stack: Heartbeat
Current DC: vm3 (952cbf63-ec62-4371-942a-626022c113ba) – partition with quorum
Version: 1.0.6-cebe2b6ff49b36b29a3bd7ada1c4701c7470febe
3 Nodes configured, unknown expected votes
0 Resources configured.
============

Online: [ vm1 vm2 vm3 ]

现在集群已经工作了,当前DCvm3节点。DC是集群的中心决策节点,是自动选出的。如果当前的DC挂掉,新的DC会自动从剩余的节点中选出。

heartbeat已经正常工作之后,就该配置集群资源管理器Pacemaker了。Pacemaker的配置文件是xml格式的:/var/lib/heartbeat/cib.xml

一般修改配置时不要直接对xml文件做修改,Pacemaker给我们提供多个命令行工具来修改xml的配置。

我一般都使用crm,这个工具支持tab自动补全。下面用^T代表tab补全。

lisen# crm
crm(live)#^T
bye configure help quit status
cd end node ra status-mgmt
cib exit options resource up
crm(live)# status
============
Last updated: Wed Jan 6 12:03:20 2010
Stack: Heartbeat
Current DC: vm2 (2681ec9b-aaec-401d-9789-97bb1710250b) – partition with quorum
Version: 1.0.6-cebe2b6ff49b36b29a3bd7ada1c4701c7470febe
3 Nodes configured, unknown expected votes
0 Resources configured.
============
Online: [ vm1 vm2 vm3 ]

增加一个资源

集群的资源可以是一个虚拟IP,可以是apache mysql server,还可以是我们自己的程序。

下面 演示使用crm为集群增加一个虚拟ip

实验环境为:

vm1: 172.16.2.11
vm2: 172.16.2.12
vm3: 172.16.2.13
虚拟ip: 172.16.2.100

过程:

vm1#crm #可以在集群的任何一个节点上进行操作。
crm(live)#configure #
进入配置模式
crm(live)configure# property stonith-enabled=false #
修改集群的选项,禁用stonith,否则会报错。 先不使用stonith设备。
crm(live)configure# primitive ip-alias ocf:heartbeat:IPaddr2 params ip=172.16.2.100 nic=eth0 op monitor interval=5s
crm(live)configure# commit
crm(live)configure# exit

primitive ip-alias ocf:heartbeat:IPaddr2 params ip=172.16.2.100 op monitor interval=5s

这是加入虚拟IP资源的命令。其中 ip-alias是资源名,是我们自己定义的。

ocf:heartbeat:IPaddr2这里指定了一个Resource Agent.这实际上对应到 /usr/lib/ocf/resource.d/heartbeat/IPaddr2 这个脚本。集群的每台机器上都有这个脚本,它实现了启动,关闭,监视等功能。实际的命令执行实际上都是由这些Resource Agent发出的。 ocf:heartbeat 对应/usr/lib/ocf/resource.d/heartbeat/,ocf:pacemaker 对应/usr/lib/ocf/resource.d/pacemaker 这些目录下有许多控制各种服务的脚本。

params name=value 这是传入脚本的环境变量。

op monitor interval=5s 对资源加入监视操作,5s一次。

实际测试:

ip-alias资源已经在vm1上启动

#crm_mon
============
Last updated: Thu Jan 7 10:51:30 2010
Stack: Heartbeat
Current DC: vm3 (952cbf63-ec62-4371-942a-626022c113ba) – partition with quorum
Version: 1.0.6-cebe2b6ff49b36b29a3bd7ada1c4701c7470febe
3 Nodes configured, unknown expected votes
1 Resources configured.
============

Online: [ vm1 vm2 vm3 ]

ip-failover (ocf::heartbeat:IPaddr2): Started vm1

—-

vm1上查看ip:

vm1#ip add show
eth0: mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 08:00:27:dd:8b:ca brd ff:ff:ff:ff:ff:ff
inet 172.16.2.11/24 brd 172.16.2.255 scope global eth0
inet 172.16.2.100/24 brd 172.16.2.255 scope global secondary eth0

ifdownvm1的网卡,在vm3上面观察:

#crm_mon
============
Last updated: Thu Jan 7 10:51:30 2010
Stack: Heartbeat
Current DC: vm3 (952cbf63-ec62-4371-942a-626022c113ba) – partition with quorum
Version: 1.0.6-cebe2b6ff49b36b29a3bd7ada1c4701c7470febe
3 Nodes configured, unknown expected votes
1 Resources configured.
============

Online: [vm2 vm3 ]
OFFLINE
[vm1]

ip-failover (ocf::heartbeat:IPaddr2): Started vm2

虚拟ip已经被自动转移到了vm2节点上。

资源constrains

首先要介绍的是全局option:symmetric-cluster=ture/false. true时,集群allowing resources to run anywhere by default; false,集群preventing resources from running anywhere by default,我们需要手动enable nodes.

接着要引入score,官方的解释: Scores are calculated on a per-resource basis and any node with a negative score for a resource can’t run that resource. After calculating the scores for a resource, the cluster then chooses the node with the highest one.
location constrain

ip-alias资源为例,现在只允许ip-aliasvm1 vm2上运行,并且优先在vm1上,只是当vm1出错时,才转到vm2上运行。
#crm
crm(live)# configure
crm(live)configure# property symmetric-cluster=false #preventing resources from running anywhere
crm(live)configure# location constrain1 ip-alias 200: vm1 #set score to enable node vm1
crm(live)configure# location constrain2 ip-alias 100: vm2 #set score to enable node vm2

我们将vm1score设为200,vm2score设为100。因为vm1score高,所以ip-alias将优先在vm1上运行,当vm1挂掉后才会自动转到vm2.

order constrain

如果有多个资源,可以使用order constrain,实现对多个资源启动顺序的控制。

现在有两个资源 虚拟ip:ip-failoverapache server:web.现在加入order constrain,让ip-failover先于apache运行。
#crm
crm(live)# configure
crm(live)configure# order order1 40: ip-failover web
crm(live)configure# verify
crm(live)configure# commit

order order1 40: ip-failover web
oder1
是自定义的
id
40:
是这个order constrainscore。当score>0 称为强制约束,score=0 称为建议约束。

强制约束中,当first资源状态发生变化时,会影响then资源;而建议约束则不会。
具体请看http://www.clusterlabs.org/doc/en-US/Pacemaker/1.0/html/Pacemaker_Explained/s-resource-ordering.html

ip-failover web就是资源名。ip-failover将先于web启动。

colocation constrain

当一个资源的位置依赖于另一个资源时,我们称之为colocation.

依旧拿ip-failoverweb为例。现在让web依赖于ip-failover
# crm
crm(live)# configure
crm(live)configure# colocation co1 score: web ip-failover
crm(live)configure#commit

colocation co1 score: web ip-failover

co1 是我们自定义的id
score
score”INFINITY””-INFINITY”时,称为Mandatory Placement,意思是必须满足;-INFINITY<score<INFINITY时,称为Advisory Placemen

意思是尽量满足。score为正时,资源会运行在同一节点。score为负,资源会运行在不同的节点。
web ip-failover: web
资源将依赖于ip-failover资源。

score=INFINITY ip-failoverweb将运行于同一节点。web依赖于ip-failover,当ip-failover由于上面的constrain不能运行时,web可以运行时。
由于是Mandatory Placement,web也不能运行。
score=100
ip-failover由于上面的constrain不能运行时,web可以运行时。web依然会运行。
score=-INFINITY
同上
score=-100
同上

资源组

集群中很常见的一种情况是一系列的资源需要运行在同一各节点上,启动和停止都是有一定顺序的。 这时候使用资源组就非常方便。

配置一个资源组也非常的简单。
#crm
crm(live)# configure
crm(live)configure# group group1 ip-failover web
crm(live)configure# commit

group1 是我们自定义的组名id
ip-failover web
则是要放到group1组中的资源,这里是有序的,ip-failover将先于web执行。

并且同一个资源组的各种资源只能运行在同一个节点上。

rule

rule可以使你的配置更加动态。可以制定出灵活的规则。

rule中加入了表达式判断,当表达式为false,集群会忽视这条rule.若为true,集群中节点的score会被更新成rule中的score.

首先从一个最简单的rule开始,只为了演示rule的语法: 若集群中的#uname(也就是主机名)为vm1,则禁止ip-aliasvm1上运行。

crm(live)# configure
crm(live)configure# location rule1 ip-alias rule -inf: #uname eq "vm1"
crm(live)configure# commit

rule -inf: #uname eq "vm1"
前面的部分和location限制语法一样。从rule 开始-inf: 是当表达式为真时要应用的
score.
#uname eq "vm1" #uname
是每个节点自带的一个attribute,即是节点名;eq是操作符
.
vm1
节点符合表达式,所以,vm1ip-aliasscore将被置为-inf,vm1将永远不能运行ip-alias.

另一个与时间表达式有关的例子:周28点将进行维护,关闭集群里的资源ip-alias
crm(live)# configure
crm(live)configure# location rule2 ip-alias rule -inf: date date_spec weekdays="2" hours="8"
crm(live)configure# commit

这样会实现一个类似crontab的效果,在每周28点自动关闭集群中的ip-alias服务(通过将所有节点的score设为-inf)

资源的迁移

现在集群中有一个节点vm1因为某种原因要停机,要把vm1所有的资源先迁移出去。首先可以使用上面的location constrain,将每个资源在vm1上的score设为-inf.另外还有一种简单的办法,将vm1设为”standby”状态(standby意味着不要让任何服务到这个节点运行)。

standby vm1:
crm(live)# node standby vm1

重新启用vm1:
crm(live)# node online vm1

资源Clone

如果想让一个资源在集群的每个节点都有运行,可以使用clone.首先介绍anonymous clone.这是最简单的clone,所有的节点上的clone都是一样。

ocf:pacemaker:ping这个agent为例。
crm(live)# configure
crm(live)configure# primitive ping-test ocf:pacemaker:ping params host_list=172.16.2.1 multiplier=100 dampen=5s name=pingd op monitor interval=15s
crm(live)configure# clone cl-pingd ping

这里给每个节点配置了pingclone,这个agent会每隔一段时间自动去ping host_list中列出的节点。然后将可通的节点数乘以multiplier作为pingd的值,这个值就可以被rule使用。

crm(live)configure# location ping-l ip-alias rule -inf: pingd eq 0

这里使用了pingd的值,如果某节点等于0(即为无法ping172.16.2.1),则将此节点score设为-inf:.

分享到:
评论

相关推荐

    CentOS7通过HeartBeat配置实现高可用HA.rar

    本主题将详细探讨如何在CentOS 7操作系统中利用HeartBeat软件来配置高可用性集群,以及VIP(Virtual IP)的角色和作用。HeartBeat是一款用于监控和管理集群服务的工具,它能在主服务器出现故障时自动将服务切换到...

    linux 下高可靠性 HA 3.0 说明

    同时,还需要配置主机的 Heartbeat 和 Pacemaker 参数。 Heartbeat 配置: Heartbeat 配置包括心跳检测间隔、超时时间和节点状态监控等参数。Heartbeat 还提供了丰富的 API,允许开发者自定义心跳检测逻辑。 ...

    LVS环境搭建及图形化管理(Pacemaker管理+heartbeat心跳+ldirector健康检查及转发)

    本文将详细介绍如何搭建LVS环境,并利用Pacemaker进行图形化管理,同时结合heartbeat心跳机制和ldirector进行健康检查及流量转发。 首先,LVS的核心是IP负载均衡技术,它通过调度器将请求分发到后端的真实服务器,...

    安装与配置Heartbeat集群系统.ppt

    Pacemaker是Heartbeat的集群管理工具,同样需要解压、配置和编译安装。 安装完成后,需要配置Heartbeat的配置文件,如/etc/ha.d/ha.cf,定义节点间的通信参数,心跳间隔等。同时,还要配置资源管理文件,如/etc/ha...

    Corosync + pacemaker 高可用部署设计方案

    3. **Pacemaker配置**:定义资源代理,如IP地址、虚拟机、数据库等,并设定故障恢复规则。 4. **测试与验证**:进行故障模拟测试,验证资源的自动迁移和恢复能力。 5. **监控与维护**:部署监控工具,定期检查集群...

    Heartbeat应用攻略.pdf

    heartbeat安装、部署以及基于pacemaker的配置

    PCS命令配置corosync & pacemaker群集操作步骤

    记录整理了在vmware esxi5.5 + centos6.6 环境中使用PCS命令配置corosync & pacemaker群集的一些操作示例与PCS命令注释. 注:本文未涉及详细的相关软件安装配置过程,包括如下资源示例配置: ocf:heartbeat:IPaddr2...

    heartbeat软件包

    Heartbeat软件包是Linux系统中用于...正确配置和使用Heartbeat,能有效提升系统的稳定性和可靠性,避免单一故障点导致的业务中断。在维护过程中,定期检查和更新配置,以及监控心跳服务的状态,都是非常重要的任务。

    Linux Heartbeat安装手册.doc

    在Linux环境下,Heartbeat是实现HA解决方案的重要组件之一,它可以与其他HA工具如Pacemaker和Corosync配合使用。 **前言** Heartbeat的主要功能是监测两台服务器之间的通信,通过心跳线(可以是专用网络连接或普通...

    Pacemaker从头开始搭建集群

    1. **调整资源配置**:修改Pacemaker配置文件,使资源在两个节点之间均衡分配。 2. **测试负载均衡**:通过工具如HAProxy或Nginx配置负载均衡,确保流量均匀分配到每个节点。 3. **监控性能**:使用性能监控工具监控...

    unbuntu 10.04 LTS上配置简单双机热备方案

    #### 四、Heartbeat 2 和 Pacemaker 配置 Heartbeat 2 和 Pacemaker 是用于实现高可用性的工具,它们共同负责监控服务状态,并在检测到故障时自动执行故障转移操作。 - **Heartbeat 2 配置:** - 编辑 `/etc/ha.d/...

    CENTOS集群配置

    3. **集群软件安装**:安装并配置Heartbeat或Pacemaker等集群软件。 4. **节点配置**:在每台节点上配置集群软件,并指定节点角色和服务。 5. **共享存储设置**:配置iSCSI服务器,使集群节点能通过iSCSI协议挂载和...

    drdb学习资料,有heartbeat介绍

    理解元数据至关重要,因为它关系到如何正确配置和恢复DRBD资源。 4. **数据保护**:DRBD通过使用write-ordering规则保证数据完整性,防止数据丢失或损坏。 5. **资源管理**:DRBD资源是DRBD实例的逻辑单元,包含...

    运维-PCS常用命令解析

    PCS提供了多种命令来配置和维护集群,包括: * pcs property set:用于设置集群属性。 * pcs cluster cib:用于查看和更新集群配置信息。 * pcs crm_verify:用于验证集群配置信息。 四、PCS资源配置命令 PCS提供...

    Tool哥第十六部力作_linux下的集群系统LVS和Heartbeat2nbbk1283

    在"bbk1283"这个文件中,可能包含了关于如何配置和使用LVS及Heartbeat的详细教程、示例配置文件、故障排查技巧等内容。学习和掌握这些技术,对于提升Linux服务器运维的技能和效率至关重要。无论是对于运维人员还是...

    安装hearbeat所需包

    在IT领域,心跳(Heartbeat)通常指的是一个用于监控系统状态和网络连接的服务,它可以在分布式系统、集群或服务器之间保持通信。在这个场景下,“安装heartbeat应用所需要要用到的包”意味着我们需要为部署...

    Suse_Linux_11_双机集群配置文档.docx

    同时,通过监控工具如Pacemaker和Corosync可以进一步管理和监控集群状态,确保服务的高可用性。 总的来说,Suse Linux 11 SP1的双机集群配置涉及到硬件的冗余、网络配置、Heartbeat服务、同步服务以及安全设置等多...

    linux下的服务器双机热备份.rar

    Linux下实现双机热备份,通常会采用Heartbeat、DRBD(Distributed Replicated Block Device)和Pacemaker等工具。Heartbeat负责监控系统状态,并在主服务器出现问题时触发切换;DRBD提供块级数据复制,确保数据的...

    resource-agents-3.9.6.tar.gz el7亲测有效

    Resource Agents是集群控制系统(如pacemaker或Heartbeat)的一部分,它们负责监控和管理集群中的各种资源,包括网络服务、磁盘卷、虚拟IP地址等。在3.9.6版本中,这个工具集提供了丰富的资源代理,能够处理各种复杂...

Global site tag (gtag.js) - Google Analytics