高可用虚拟 IP(HAVIP)是从 VPC 子网 CIDR 分配的一个内网 IP 地址,通常和高可用软件(如 keepalived 或 Windows Server Failover Cluster)配合使用,应用于搭建高可用主备集群场景。
说明:
通常高可用主备集群包含2台服务器,一台主服务器处于某种业务的激活状态(即 Active 状态),另一台备服务器处于该业务的备用状态(即 Standby 状态),它们共享同一个 VIP(Virtual IP,一个内网 IP)。同一时刻,VIP 只在一台主设备上生效,当主服务器出现问题时,备用服务器接管 VIP 继续提供服务。
说明:Keepalived 是基于 VRRP 协议的一款高可用软件,Keepalived 配置通过 keepalived.conf 文件完成。
高可用虚拟 IP 的架构如下图所示。
以上图举例,假设搭建 CVM1 和 CVM2 为一套高可用主备集群,实现原理如下:
公有云厂商的普通内网 IP,出于安全考虑(如 ARP 欺骗等),不支持主机通过 ARP 宣告 IP 。如果用户直接在 keepalived.conf 文件中指定一个普通内网 IP 为 virtual IP,当 keepalived 将 virtual IP 从 MASTER 机器切换到 BACKUP 机器时,将无法更新 IP 和 MAC 地址的映射,而需要调 API 来进行 IP 切换。
以 keepalived 配置为例,IP 相关部分如下:
vrrp_instance VI_1 {
state BACKUP #备
interface eth0 #网卡名
virtual_router_id 51
nopreempt #非抢占模式
#preempt_delay 10
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
unicast_src_ip 172.17.16.7 #本机内网 IP
unicast_peer {
172.17.16.13 #对端设备的 IP 地址,例如:10.0.0.1
}
virtual_ipaddress {
172.17.16.3 #高可用虚拟IP,填写控制台申请到的 HAVIP 地址。
}
garp_master_delay 1
garp_master_refresh 5
track_interface {
eth0
}
track_script {
checkhaproxy
}
}
若没有 HAVIP,以下这段配置文件不生效。
virtual_ipaddress {
172.17.16.3 #高可用虚拟IP,填写控制台申请到的 HAVIP 地址。
}
本页内容是否解决了您的问题?