Virtual IP(虚拟IP)
虚拟IP地址(VIP) 是一个不与特定计算机或一个计算机中的网络接口卡(NIC)相连的IP地址。
介绍
虚拟IP地址(VIP) 是一个不与特定计算机或一个计算机中的网络接口卡(NIC)相连的IP地址。
数据包被发送到这个VIP地址,但是所有的数据还是经过真实的网络接口。
作用
大部分虚拟ip基本上都用于高可用的架构上边。主机启用虚拟ip,所有访问的请求都会到主机。
当主机宕机的时候,高可用软件会将主机的虚拟ip down掉,然后在备机上启用虚拟ip。这样就完成了主备切换。从而保证业务的可用性。
技术原理
怎么实现故障检测?
心跳检测技术。采用定时发送一个数据包,如果机器一定时间没响应,就认为是发生故障,自动切换到热备的机器上去。
怎么实现主备自动切换?
虚拟IP技术。虚拟IP,就是一个未分配给真实主机的IP,也就是说对外提供数据库服务器的主机除了有一个真实IP外还有一个虚IP,使用这两个IP中的任意一个都可以连接到这台主机,
所有项目中数据库链接一项配置的都是这个虚IP,当服务器发生故障无法对外提供服务时,动态将这个虚IP切换到备用主机。
其实现原理主要是靠 TCP/IP 的 ARP 协议。因为IP地址只是一个逻辑地址,在以太网中 MAC 地址才是真正用来进行数据传输的物理地址,每台主机中都有一个 ARP 高速缓存,
存储同一个网络内的 IP 地址与 MAC 地址的对应关系,以太网中的主机发送数据时会先从这个缓存中查询目标 IP 对应的 MAC 地址,会向这个 MAC 地址发送数据。
操作系统会自动维护这个缓存。这就是整个实现的关键,比如下面这个 ARP 缓存示例:
其中,192.168.1.217
、192.168.1.218
是两台真实的电脑,192.168.1.217
为对外提供数据库服务的主机,192.168.1.218
为热备的机器,192.168.1.219
为虚IP,
注意219
、217
的 MAC 地址是相同的。当 218
发现 217
宕机后会向网络发送一个 ARP 数据包,告诉所有主机 192.168.1.219
这个IP对应的MAC地址是 00:21:5A:DB:7F:C2
,
这样所有发送到 219
的数据包都会发送到 MAC 地址为 00:21:5A:DB:7F:C2
的机器,也就是 218
的机器。
Linux下的虚拟IP配置
在Linux中有两种方式实现虚拟IP:
- 别名IP
- 辅助IP
别名IP
别名ip是通过 ifconfig
命令去创建和操作的虚拟ip。
创建虚拟IP
假设当前网卡为ethx
,且没有配置过虚拟IP。
创建一个IP为192.168.0.2
子网掩码为255.255.255.0
的虚拟IP。
可通过ipconfg
命令查看。
删除别名IP
删除之前设置的虚拟IP
清除别名IP
保留网卡的IP别名信息
- 将增加IP别名的命令写进linux开机自动执行的执行脚本中。
- 在网卡的配置目录中去建立一个新的网卡的配置文件。
辅助IP
辅助ip是由linux的 ip命令去创建和操作的。
创建辅助IP
条件同别名IP。
可通过ip a
命令查看。
删除辅助IP
保留网卡的IP辅助信息
- 将增加辅助IP的命令写进linux开机自动执行的执行脚本中。