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.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.217192.168.1.218 是两台真实的电脑,192.168.1.217 为对外提供数据库服务的主机,192.168.1.218 为热备的机器,192.168.1.219 为虚IP,
注意219217的 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。

ipconfig ethx:1 192.168.0.2 netmask 255.255.255.0 up

可通过ipconfg命令查看。

删除别名IP

删除之前设置的虚拟IP

ipconfig ethx:1 192.168.0.2 netmask 255.255.255.0 down

清除别名IP

ipconfig ethx:1 down

保留网卡的IP别名信息

  • 将增加IP别名的命令写进linux开机自动执行的执行脚本中。
  • 在网卡的配置目录中去建立一个新的网卡的配置文件。

辅助IP

辅助ip是由linux的 ip命令去创建和操作的。

创建辅助IP

条件同别名IP。

ip addr add 192.168.0.2/24 dev ethx

可通过ip a命令查看。

删除辅助IP

ip addr del 192.168.0.2/24 dev ethx

保留网卡的IP辅助信息

  • 将增加辅助IP的命令写进linux开机自动执行的执行脚本中。

Virtual IP(虚拟IP)
https://blog.cikaros.top/doc/6c86f4ab.html
作者
Cikaros
发布于
2022年3月9日
许可协议