浅谈VIP地址漂移

2022-10-27 13:41:53 浏览数 (1)

举个通俗的例子:老王开了一个会所,地址是虹X路1.1.1.1,经营范围不太正规,经常被封,顾客以为店已经关门,其实里面热火朝天,所以老王急啊,于是开了一个后门,地址是2.2.2.1,于是顾客纷纷从后门进入,老王笑开了花…过几天大门解封了,但后门由于弄堂改造,临时关闭了,熟门熟路的顾客从后门进不来了,有同学会问,大门都开着,顾客为何不从前门进店?因为这些顾客头脑比较简单,老王苦啊,痛定思痛,老王想出了一个好主意。老王给顾客自己的电话号码4.4.4.1,叮嘱他们,以后来店消费之前,只要电话能打通(4.4.4.1路由可达),说明店还营业,前门进不来(1.1.1.1接口down)就走后门(2.2.2.1接口UP);同理,如果后门进不来,可以走前门。如果电话打不通(4.4.4.1路由消失),说明老王被关进去了,顾客就别来了,因为前门被封(1.1.1.1接口down),后门也被封(2.2.2.1接口down),来了也是白来。

# 何为漂移

  • 通常情况下,两台服务器都具有一块以上的网卡,每块网卡都应该有一个IP地址,同时,还应该有一个漂移IP地址,该地址为工作IP地址。因此,最简单的主从方式下,双机系统要占用3个网络地址。
  • 其实电脑上的127.0.0.1也是一个VIP,只是用于本机进程间的通信标识符。如果没有127.0.0.1,那么一旦物理接口down,TCP/IP协议栈绑定在此接口上的IP就无法提供进程间的通信,所以非常不方便。而有了127.0.0.1,不管物理接口状态如何,都可以进程间通信。问题里的VIP,也是不依赖于任何物理接口,只要有一个物理接口处于工作状态(UP,可以和外部联系),就可以提供服务器的访问,当然需要通过路由发布将4.4.4.1发布出去,别的三层设备、主机需要知道如何到达4.4.4.1。
  • 在分配IP地址时,要分清工作IP地址和主机自由地址。如在主从方式、单网卡的情况下,主机一地址为200.10.10.1,主机二的地址为200.10.10.2,工作地址为200.10.10.3,正常情况下,工作主机的自由地址是被工作地址取代的(若主机一在工作,主机一得地址由200.10.10.1变为200.10.10.3)。在发生主机切换的情况下,主机一的地址恢复为200.10.10.1,而主机二的地址会由200.10.10.2变为200.10.10.3,这就是地址漂移。
  • 实现HA的方式,一般采用两台机器同时完成一项功能,比如数据库服务器,平常只有一台机器对外提供服务,另一台机器作为热备,当这台机器出现故障时,自动动态切换到另一台热备的机器。

# 原理

实现原理主要是靠TCP/IP的ARP协议。因为ip地址只是一个逻辑地址,在以太网中MAC地址才是真正用来进行数据传输的物理地址,每台主机中都有一个ARP高速缓存,存储同一个网络内的IP地址与MAC地址的对应关系,以太网中的主机发送数据时会先从这个缓存中查询目标IP对应的MAC地址,会向这个MAC地址发送数据。操作系统会自动维护这个缓存。这就是整个实现的关键。

下边就是电脑上的arp缓存的内容。

代码语言:javascript复制
(192.168.1.219) at 00:21:5A:DB:68:E8 [ether] on bond0
(192.168.1.217) at 00:21:5A:DB:68:E8 [ether] on bond0
(192.168.1.218) at 00:21:5A:DB:7F:C2 [ether] on bond0

192.168.1.217、192.168.1.218是两台真实的电脑,

192.168.1.217为对外提供数据库服务的主机。

192.168.1.218为热备的机器。

192.168.1.219为虚IP。

注意:219、217的MAC地址是相同的

再看看那217宕机后的arp缓存

代码语言:javascript复制
(192.168.1.219) at 00:21:5A:DB:7F:C2 [ether] on bond0
(192.168.1.217) at 00:21:5A:DB:68:E8 [ether] on bond0
(192.168.1.218) at 00:21:5A:DB:7F:C2 [ether] on bond0 

这就是奥妙所在。当218 发现217宕机后会向网络发送一个ARP数据包,告诉所有主机192.168.1.219这个IP对应的MAC地址是00:21:5A:DB:7F:C2,这样所有发送到219的数据包都会发送到mac地址为00:21:5A:DB:7F:C2的机器,也就是218的机器。

这里采用定时发送一个数据包,如果机器多长时间没响应,就认为是发生故障,自动切换到热备的机器上去。

0 人点赞