什么是VIP?什么是IP漂移?

  • A+
所属分类:linux技术
摘要

在 TCP/IP 的架构下,所有想上网的电脑,不论是用何种方式连上网路,都必须要有一个唯一的 IP-address。事实上IP地址是主机硬件地址的一种抽象,简单的说,MAC地址是物理地址,IP地址是逻辑地址。


IP地址和MAC地址

在 TCP/IP 的架构下,所有想上网的电脑,不论是用何种方式连上网路,都必须要有一个唯一的 IP-address。事实上IP地址是主机硬件地址的一种抽象,简单的说,MAC地址是物理地址,IP地址是逻辑地址。

什么是虚拟IP

虚拟IP就是一个未分配给真实主机第IP,也就是说对外提供服务器的主机除了有一个真实IP外还有一个虚IP,使用这两个IP中的任意一个都可以连接到这台主机。

虚拟IP可以用来做什么?可以解决什么问题?

一般可以用来做HA(High Availability),比如数据库服务器的URL可以使用一个虚拟IP,当主服务器发生故障无法对外提供服务时,动态将这个虚IP切换到备用服务器。即实现服务器热备,故障自动切换。

虚拟IP原理

其实现原理主要是靠 TCP/IP 的 ARP 协议。

因为IP地址只是一个逻辑地址,在以太网中 MAC 地址才是真正用来进行数据传输的物理地址。

每台主机中都有一个 ARP 高速缓存,存储同一个网络内的 IP 地址与 MAC 地址的对应关系,

以太网中的主机发送数据时会先从这个缓存中查询目标 IP 对应的 MAC 地址,会向这个 MAC 地址发送数据。

操作系统会自动维护这个缓存。

在Linux下可以使用arp命令操作ARP高速缓存。

比如下面这个 ARP 缓存示例:

(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一段时间没有发送HeartBeat数据包给备份服务器218,备份服务器218规定时间内没有收到217的HeartBeat数据包。(啰嗦一下)

这时备份服务器218 认为217 宕机。备份服务器218后会向网络发送一个 ARP 数据包,让路由器修改路由表,告诉所有主机 192.168.1.219 这个IP对应的MAC地址是 00:21:5A:DB:7F:C2,这样所有发送到 219 的数据包都会发送到 MAC 地址为 00:21:5A:DB:7F:C2 的机器,也就是 218 的机器。

配置和删除虚拟IP

假如主机有一个网卡 eth1,其对应一个IP为 192.168.1.217,现对其设置一个虚拟IP 192.168.1.219:

ifconfig eth1:1 192.168.1.219 netmask 255.255.255.0 

删除该虚拟IP:

ip addr del 192.168.1.219 dev eth1 

不过在网络运维中,更常见的是使用 keepalived 配置虚拟ip(vip)实现双机热备以及自动切换主备

参考