学习一下虚拟IP和IP漂移的概念。 git
在 TCP/IP 的架构下,全部想上网的电脑,不管是用何种方式连上网路,都必需要有一个惟一的 IP-address。事实上IP地址是主机硬件地址的一种抽象,简单的说,MAC地址是物理地址,IP地址是逻辑地址。 github
虚拟IP,就是一个未分配给真实主机的IP,也就是说对外提供服务器的主机除了有一个真实IP外还有一个虚IP,使用这两个IP中的任意一个均可以链接到这台主机。 数据库
虚拟IP通常用做达到HA(High Availability)的目的,好比让全部项目中数据库连接一项配置的都是这个虚IP,当主服务器发生故障没法对外提供服务时,动态将这个虚IP切换到备用服务器。 缓存
ARP是地址解析协议,它的做用很简单,将一个IP地址转换为MAC地址,而后给传输层使用。 服务器
每台主机中都有一个ARP高速缓存,存储同一个网络内的IP地址与MAC地址的对应关 系,以太网中的主机发送数据时会先从这个缓存中查询目标IP对应的MAC地址,会向这个MAC地址发送数据。操做系统会自动维护这个缓存。 网络
在Linux下可使用arp命令操做ARP高速缓存。 架构
好比存在物理机A(IP是192.168.192.54 )和物理机器B(IP是192.168.192.40),A做为对外服务的主服务器(好比数据库主库),B做为备份机器,两台服务器之间的通讯是经过 Heartbeat,即主服务器会定时的给备份服务器发送数据包,告知主服务器服务正常,当备份服务器在规定时间内没有收到主服务器的 Heartbeat,就会认为主服务器宕机,则备份服务器就会升级为主服务器。假设物理机A的ARP缓存以下: 负载均衡
另外物理机器B(IP是192.168.192.40)的ARP缓存以下:
学习
当机器B经过BeatHeart得知机器A对外服务质量低于预期的时候(好比发生故障,服务无响应),会将本身的ARP缓存发送出去,让路由器修改 路由表,告知虚拟地址应该指向我(物理机器B,192.168.192.40),这时候,外界再次访问虚拟IP的时候,机器B会变成主服务器,而A降级为 备份服务器。这就完成了主从机器的自动切换,这一切对外界是透明的。 spa
上面的VIP自动切换的过程就称之为IP漂移。
咱们能够经过Keepalived来实现这个过程。 Keepalived是一个基于VRRP协议(Virtual Router Redundancy Protocol,即虚拟路由冗余协议)来实现的LVS(负载均衡器)服务高可用方案,能够利用其来避免单点故障。一个LVS服务会有2台服务器运行 Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),可是对外表现为一个虚拟IP,主服务器会发送特定的消息给备 份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候, 备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。