2023年11月27日发(作者:)
什么是VIP?什么是IP漂移?
IP地址和MAC地址
在 TCP/IP 的架构下,所有想上⽹的电脑,不论是⽤何种⽅式连上⽹路,都必须要有⼀个唯⼀的 IP-address。事实上IP地址是主机硬件地址的⼀种抽象,简单的
说,MAC地址是物理地址,IP地址是逻辑地址。
--
IP地址逻辑地址
MAC地址物理地址
什么是虚拟IP
虚拟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)是⼀个通过解析地址来找寻地址的,它在中极其重要。
ARP是通过来定位。
在协议中规定,同⼀局域⽹中的⼀台主机要和另⼀台主机进⾏直接通信,必须要知道⽬标主机的MAC地址。⽽在协议中,⽹络层和传输层只关⼼⽬标主机的IP
地址。这就导致在以太⽹中使⽤IP协议时,数据链路层的以太⽹协议接到上层IP协议提供的数据中,只包含⽬的主机的IP地址。于是需要⼀种⽅法,根据⽬的主
机的IP地址,获得其。这就是ARP协议要做的事情。所谓地址解析(address resolution)就是主机在发送帧前将⽬标IP地址转换成⽬标MAC地址的过程。
另外,当发送主机和⽬的主机不在同⼀个中时,即便知道对⽅的MAC地址,两者也不能直接通信,必须经过转发才可以。所以此时,发送主机通过ARP协议获
得的将不是⽬的主机的真实MAC地址,⽽是⼀台可以通往局域⽹外的路由器的MAC地址。于是此后发送主机发往⽬的主机的所有帧,都将发往该路由器,通过
它向外发送。这种情况称为委托ARP或ARP代理(ARP Proxy)。
在中不使⽤ARP,实际上在点对点⽹络中也不使⽤MAC地址,因为在此类⽹络中分别已经获取了对端的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地址是“”,这表⽰向同⼀
⽹段内的所有主机发出这样的询问:“192.168.38.11的是什么?”
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
Linux
arp -nv
Windows
arp -a
总结
虚拟IP是未分配给真实主机的IP,是IP的⼀种。
结合ARP协议、⼼跳检测机制、⼴播ARP数据包,修改ARP缓存中IP和MAC地址的对应关系,实现IP漂移,服务器⾃动切换
参考
发布评论