抱歉,您的瀏覽器無法訪問本站
本頁面需要瀏覽器支持(啟用)JavaScript
了解詳情 >

当我们在网络开发中提到VIP,指的可不是平常所听到的VIP(very important person)会员的意思,而指的是VIP网络(Virtual IP ),那么他具体是什么东西呢?有什么作用?解决了什么问题?下面就来汇总一下我所了解到的相关知识。

PS:下面指的VIP都是 虚拟IP/Virtual IP 的意思

啥玩意?

在了解这是个什么东西之前,我们可以回想一下,通常为了提高系统的可用性,都会对程序进行主从部署等操作,例如MySQL、Redis,又或者是使用类似K8s等容器编排系统来部署多个副本。

VIP网络就是用来提高程序系统的可用性,它单纯看起来就只是一个IP地址,可以是外网IP也可以是内网IP,是一种不与特定计算机或者特定计算机网卡相对应的IP地址。乍一听的可能有点玄乎,首先我们都知道IP地址(逻辑地址)是用来在互联网中定位机器所在的位置,最后都是通过MAC地址(物理地址)来进行端到端的通信,因此VIP可以说就是一个对应的MAC地址会发生改变的特殊IP。(好像运营商分配给我们的上网IP其实也是会发生变动的)

ARP协议全称为地址解析协议(Address Resolution Protocol),是一种用于在IPv4网络中将IP地址映射到物理硬件地址(如MAC地址)的网络协议。ARP协议在OSI网络模型的数据链路层(第2层)和网络层(第3层)之间工作,它是局域网中设备之间进行通信所必需的。

在局域网中,设备之间的通信是基于MAC地址进行的。当一个设备需要向另一个设备发送数据时,发送方需要知道接收方的MAC地址。然而,通常情况下,设备只知道目标设备的IP地址。此时,ARP协议被用来查询目标设备的MAC地址。

FROM GPT

啥原理?

因此每个主机中都会维护一个ARP缓存列表,存储同一个在网络内的IP地址与MAC地址的映射关系,以太网中的主机发送数据时会先从这个ARP缓存中查询目标IP对应的MAC地址,然后向这个MAC地址发送数据。

所以每当检测到目前VIP对应的MAC设备出现问题时,从服务器就会向网络内发出ARP缓存修改通知,将VIP所对应的MAC地址改为从服务器的MAC地址。这种检测方法通常是通过类似心跳连接等方法来实现的,即主服务器定时向从服务器发送通知,当从服务器超过一定时间没有收到数据了,就会认为主服务器宕机了,便发起如上提到的修改ARP缓存的信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
IP Address MAC Address Interface Hostname

-----------------------------------------------------------

192.168.1.1 00:11:22:33:44:55 eth0 Server1

192.168.1.2 00:11:22:33:44:66 eth0 Server2

192.168.1.100 00:11:22:33:44:77 eth0 Client1

192.168.1.101 00:11:22:33:44:88 eth0 Client2

192.168.1.150 00:11:22:33:44:55 eth0 VIP

例如客户端(如Client1和Client2)尝试与VIP(192.168.1.150)通信。它们将向网络发送ARP请求以获取192.168.1.150的MAC地址。Server1将响应这个ARP请求,表明VIP的MAC地址为00:11:22:33:44:55。

当Server1出现故障时,Server2将接管并响应客户端的ARP请求。在这种情况下,客户端的ARP缓存将更新,将VIP的MAC地址更改为Server2的MAC地址(00:11:22:33:44:66)。这样一来,客户端就可以继续与VIP通信,不会受到Server1故障的影响。

PS:这种切换VIP对应MAC地址的情况,一般叫做IP漂移

因此总结一下:VIP即虚拟IP/Virtual IP,是一个可以在多个网络设备间共享IP地址来实现高可用的技术方案。

啥作用?

正如上面了解的VIP就是一个HA高可用方案,可能我们会想那直接使用负载均衡器来实现高可用和故障转移不也可以吗,为什么要使用到VIP网络,其实在平常的使用中,就是通过使用VIP来对负载均衡器提高可用性,灵活性的

在使用VIP网络的场景中,域名的DNS解析会指向负载均衡器的虚拟IP地址。

通常我们使用域名访问网络服务时,设备首先会查询DNS服务器以获取与域名对应的IP地址。在VIP网络配置中,这个IP地址就是虚拟IP地址。接下来,用户的请求会发送到VIP地址,VIP所对应部署的负载均衡器,随后负载均衡器会将请求转发到所配置的后端服务器。

我们将域名解析到虚拟IP地址的设置使得客户端无需了解后端服务器的实际IP地址,同时当主负载均衡器出现问题后,也可以快速切换到从负载均衡器,而不是发现负载均衡器出现问题后,还要修改DNS解析的参数,影响流量的访问。

参考资料