发布日期:Jun 27, 2023 更新日期: 2023-6-27文章字数 0阅读时长:0分钟

type
Post
status
Published
date
slug
vip&keeplived
tags
category
summary
VIP Keeplived
icon
password

虚拟 IP (VIP)

什么是虚拟 IP

虚拟IP(Virtual IP Address,简称VIP)是一个未分配给真实弹性云服务器网卡的IP地址。弹性云服务器除了拥有私有IP地址外,还可以拥有虚拟IP地址,用户可以通过其中任意一个IP(私有IP/虚拟IP)访问此弹性云服务器。同时,虚拟IP地址拥有私有IP地址同样的网络接入能力,包括VPC内二三层通信、VPC之间对等连接访问,以及弹性公网IP、VPN、云专线等网络接入。
虚拟IP主要用在弹性云服务器的主备切换,搭配Keepalived,达到高可用性HA(High Availability)的目的。当主服务器发生故障无法对外提供服务时,动态将虚拟IP切换到备服务器,继续对外提供服务

虚拟 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可以用来做什么?可以解决什么问题?
一般可以用来做 HA(High Availability),比如数据库服务器的URL可以使用一个虚拟IP,当主服务器发生故障无法对外提供服务时,动态将这个虚IP切换到备用服务器。即实现服务器热备,故障自动切换


Keepalived

Keepalived是Linux下一个轻量级别的高可用解决方案,通过虚拟路由冗余协议来实现服务或者网络的高可用。
起初是为LVS(Linux Virtual Server)设计的,专门用来监控集群系统中各个服务节点的状态,如果某个服务器节点出现故障,Keepalived将检测到后自动将节点从集群系统中剔除,而在故障节点恢复正常后,Keepalived又可以自动将此节点重新加入集群中。这些工作自动完成,不需要人工干预,需要人工完成的只是修复出现故障的节点。
参考链接:
 

应用架构的演进趋势 | docker 应用架构的演进趋势 | docker