什么是VIP?什么是IP遥控车漂移?

IP地址和MAC地址


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

--
MAC地址物理地址
IP地址逻辑地址

什么是虚拟IP

虚拟IP地址(VIP) 是一个不与特定计算机或一个计算机中的网络接口卡(NIC)相连的IP地址。数据包被发送到这个VIP地址,但是所有的数据还是经过真实的网络接口。VIPs大部分用于连接冗余;一个VIP地址也可能在一台计算机或NIC发生故障时可用,交由另一个可选计算机或NIC响应连接。虚拟IP地址的例子如:一个Loopback(无电路IP地址)作为不与在主机或路由器中任何一个特定接口(或电路)相关的IP地址。

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

  • MAC地址 00:21:5A:DB:68:E8
    - 真实IP 192.168.1.217
    - 虚拟IP 192.168.1.219

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


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


1、客户端访问数据库虚拟IP
2、通过ARP缓存,找到对应的MAC地址
3、访问真实服务器


1、真实服务器A宕机
2、真实服务器B没有收到真实服务器A的心跳包
3、真实服务器B将虚拟IP绑定到自己的MAC地址,并发送这个ARP包给路由器
4、路由器接收到后更新ARP缓存
5、接着有请求虚拟IP的请求过来,都会被转发到真实服务器B

什么是ARP协议

地址解析协议(英语:Address Resolution Protocol,缩写:ARP)是一个通过解析网络层地址来找寻数据链路层地址的网络传输协议,它在IPv4中极其重要。

ARP是通过网络地址来定位MAC地址。

在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址。而在TCP/IP协议中,网络层和传输层只关心目标主机的IP地址。这就导致在以太网中使用IP协议时,数据链路层的以太网协议接到上层IP协议提供的数据中,只包含目的主机的IP地址。于是需要一种方法,根据目的主机的IP地址,获得其MAC地址。这就是ARP协议要做的事情。所谓地址解析(address resolution)就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。


另外,当发送主机和目的主机不在同一个局域网中时,即便知道对方的MAC地址,两者也不能直接通信,必须经过路由转发才可以。所以此时,发送主机通过ARP协议获得的将不是目的主机的真实MAC地址,而是一台可以通往局域网外的路由器的MAC地址。于是此后发送主机发往目的主机的所有帧,都将发往该路由器,通过它向外发送。这种情况称为委托ARP或ARP代理(ARP Proxy)。
在点对点链路中不使用ARP,实际上在点对点网络中也不使用MAC地址,因为在此类网络中分别已经获取了对端的IP地址。


在每台安装有TCP/IP协议的电脑或路由器里都有一个ARP缓存表,表里的IP地址与MAC地址是一对应的。

主机名称IP地址MAC地址
A192.168.38.1000-AA-00-62-D2-02
B192.168.38.1100-BB-00-62-C2-02
C192.168.38.1200-CC-00-62-C2-02
D192.168.38.1300-DD-00-62-C2-02
E192.168.38.1400-EE-00-62-C2-02
.........

ARP协议工作原理

以主机A(192.168.38.10)向主机B(192.168.38.11)发送数据为例。


1.当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到就知道目标MAC地址为(00-BB-00-62-C2-02),直接把目标MAC地址写入帧里面发送就可。


2.如果在ARP缓存表中没有找到相对应的IP地址,主机A就会在网络上发送一个广播(ARP request),目标MAC地址是“FF.FF.FF.FF.FF.FF”,这表示向同一网段内的所有主机发出这样的询问:“192.168.38.11的MAC地址是什么?”


3.网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应(ARP response):“192.168.38.11的MAC地址是00-BB-00-62-C2-02”,此回应以单播方式。这样,主机A就知道主机B的MAC地址,它就可以向主机B发送信息。同时它还更新自己的ARP高速缓存(ARP cache),下次再向主机B发送信息时,直接从ARP缓存表里查找就可。


ARP缓存表采用老化机制,在一段时间内如果表中的某一行没有使用,就会被删除,这样可减少缓存表的长度,加快查询速度。

虚拟IP原理


虚拟IP的实现主要是靠 TCP/IP 的 ARP 协议。


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


以太网中的主机发送数据时会先从本地ARP缓存中查询目标 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)实现双机热备以及自动切换主备

如何查看本地操作系统上的ARP缓存

MacOS

arp -nla

什么是VIP?什么是IP遥控车漂移?


Linux

arp -nv


Windows

arp -a

总结

虚拟IP是未分配给真实主机的IP,是IP的一种。

结合ARP协议、心跳检测机制、广播ARP数据包,修改ARP缓存中IP和MAC地址的对应关系,实现IP漂移,服务器自动切换

参考

  • 虚拟IP和IP漂移
  • 虚拟IP原理及使用
  • ARP协议
  • ARP

以上是 什么是VIP?什么是IP遥控车漂移? 的全部内容, 来源链接: utcz.com/a/62645.html

回到顶部