什么是VIP?
VIP即Virtual IP Address,是实现HA(高可用)系统的一种方案,高可用的目的是通过技术手段避免因为系统出现故障而导致停止对外服务,一般实现方式是部署备用服务器,在主服务器出现故障时接管业务。 VIP用于向客户端提供一个固定的“虚拟”访问地址,以避免后端服务器发生切换时对客户端的影响。
例如在下图的系统中,采用了三个服务器的集群来实现服务的高可用,后端服务器集群通过VIP 193.168.0.6对外提供服务,客户端只知道VIP,并不关注后端服务器的真实地址。
VIP被加载在Master的网卡上,所有指向VIP的请求会被发向Master,Slave服务器出于Standby状态。如果Master出现故障,集群会通过选举算法从可用的Slave节点中选出一个新的Master节点,并将VIP也迁移到新Master节点的网卡上。这样可以保证服务始终可用,并且对客户端来说访问的IP也不会变化。
注意VIP始终指向一个Master,因此VIP的方案并不能实现LB,只能实现HA。
______________________
| |
| VIP: 193.168.0.6 |
|-----| Host IP: 193.168.0.2 |
| | Role: Master |
| |______________________|
|
| ______________________
| | |
| | VIP: Unassigned |
Public ----(example.com = 193.168.0.6)--|-----| Host IP: 193.168.0.3 |
| | Role: Slave |
| |______________________|
|
| ______________________
| | |
| | VIP: Unassigned |
|-----| Host IP: 193.168.0.4 |
| Role: Slave |
|______________________|
VIP的实现原理
- Master选举: 集群创建或者Master出现故障时,集群通过选举协议得到一个Master作为对外服务的节点
- 配置VIP: HA软件将VIP配置到Master节点的网卡上
- ARP广播: 主动对外广播ARP消息,声明VIP对应的MAC地址为Master的网卡MAC地址