在现实实际生产应用中,部分集群内部通常采用一条心跳链路来实现底层各节点间的消息通信,但在某些特殊情况下,因网络抖动或网络不通等要素的影响,会导致该条心跳链路不通,进而使得该节点脱离集群,无法继续承担正常业务,这显然是我们不想看到的,也是我们需要极力避免的情况。因而,寻找双心跳冗余方案就显得很有必要,本文以Corosync集群中corosync.conf配置为例,介绍两种双心跳冗余配置方案。
第一种实现方案:
totem {
version: 2
cluster_name: my_cluster
secauth: off
rrp_mode:active
interface {
member {
memberaddr: node0
}
member {
memberaddr: node1
}
ringnumber: 0
bindnetaddr: 192.168.110.0
mcastport: 5405
}
interface {
member {
memberaddr: node0_bak
}
member {
memberaddr: node1_bak
}
ringnumber: 1
bindnetaddr: 192.168.0.0
mcastport: 5415
}
transport: udpu
}
quorum {
provider: corosync_votequorum
two_node: 1
expected_votes:1
}
logging {
to_logfile: yes
logfile: /var/log/cluster/corosync.log
to_syslog: yes
}
第二种实现方案:
totem {
version: 2
cluster_name: my_cluster
secauth: off
transport: udpu #udpu代表单播,udpb代表广播,udp代表多播(默认),根据实际环境选择
rrp_mode: passive
}
nodelist {
node {
ring0_addr: node0
ring1_addr: node0_bak
nodeid: 1
}
node {
ring0_addr: node1
ring1_addr: node1_bak
nodeid: 2
}
}
quorum {
provider: corosync_votequorum
two_node: 1
}
logging {
to_logfile: yes
logfile: /var/log/cluster/corosync.log
to_syslog: yes
}