概念
两台设备一个叫做Master(设备1),另外一个可以叫做Backup(设备2),平时Master设备负责干活,Backup设备待命,一旦Master设备挂掉,Backup设备立刻接管。在外界看来,没有影响业务,设备一直在工作。
实现原理
一个网卡可以设置多个地址,比如在Linux上eth0表示网卡1,它可以绑定一个IP,与此同时,还可以设置一个ip alias或者secondary ip。
eth0 --> 192.168.1.10
eth0:1 --> 192.168.1.100
两台机器看做一个整体,共用一个IP,这里称为系统IP。
可以让192.168.1.100为系统IP,如果是Master设备,就把这个IP给绑定上,如果是Backup设备,就不绑定。换句话说,通过动态地绑定/解绑 就可以让这个系统IP在两个设备之间来回“漂移”了。无论是哪个设备成为Master,每次响应ARP请求的时候,都返回一个虚拟的MAC地址,这样MAC地址就唯一了。
Backup设备怎么知道Master设备挂掉了呢?
从道理上说,只需要让Master设备不断地给Backup设备发“心跳”消息即可(可以采用广播的方式发消息), 这个Backup(设备2)得有个定时器,如果在一个特定的时间(时间可以设置)内收不到心跳,就认为Master(设备1)完蛋了,需要自己挺身而出,变成Master(设备2)绑定系统IP。
之前的Master(设备1)如果又活了呢?如果设备1是个性能更加强悍的机器,肯定希望由他来统领全局。这里定义一个策略,每个设备都得有个优先级(一个整数),在允许抢占的情况下,谁的优先级高,谁就是Master!