服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-10-30 简米科技 5,393 字 13 分钟阅读

服务器虚地址是什么?如何配置与使用?虚拟IP配置方法详解

导读服务器虚地址不是物理网卡上固定的IP,而是一个可以随主备节点切换整体漂移的逻辑IP,行业里通常叫VIP(Virtual IP)或虚IP,核心作用就是让用户始终访问同一个地址,而后端服务器随便换,很多刚接触服务器运维的朋友,听到“虚地址”这个词会下意识觉得它很玄乎,其实它概念不复杂,但在高可用架构里地位极高,下面……

服务器虚地址不是物理网卡上固定的IP,而是一个可以随主备节点切换整体漂移的逻辑IP,行业里通常叫VIP(Virtual IP)或虚IP,核心作用就是让用户始终访问同一个地址,而后端服务器随便换。

很多刚接触服务器运维的朋友,听到“虚地址”这个词会下意识觉得它很玄乎,其实它概念不复杂,但在高可用架构里地位极高,下面用一套完整链路讲清楚它是什么、怎么配、用在哪。

服务器虚地址是什么?和实地址有什么区别

虚地址的底层逻辑:IP漂移与故障转移

实地址,就是物理网卡上配置的IP,比如服务器IP是192.168.1.10,这个IP跟着网卡走,网卡在哪个机器上,IP就在哪,而虚地址不同,它绑定在一台服务器的网卡上,但不归那张网卡“私有”,你可以把虚地址理解成一个“流动的工位牌”谁干活谁就挂这个牌。

完整的专业定义是:虚地址(VIP)是一个不与任何物理网络接口直接绑定的IP地址,通常由一组服务器共同维护,当主服务器正常时,虚地址落在主服务器上;当主服务器宕机、网络中断或服务异常时,这个地址会在极短时间内切换到备用服务器上,整个过程对客户端透明,用户手里的连接不中断,IP地址也没变,这叫IP漂移。

虚地址和实地址的区别核心在“归属权”

为了直观,用一张表来对比:

对比项 实地址(物理IP) 虚地址(VIP)
绑定对象 固定绑定物理网卡 逻辑绑定,不固定归属
故障影响 网卡或服务器宕机即失效 可漂移到其他节点
配置位置 网卡配置文件或系统网络设置 由集群软件(如Keepalived)管理
对外表现 内网互访、管理常用 对外提供服务的统一入口
切换速度 依赖人工干预 秒级自动切换

从使用角度看,虚地址的实现在于ARP广播协商,主节点会定时发送ARP广播,宣称“这个VIP的MAC地址是我”,备节点收到后进入监听状态,主节点失联时,备节点立刻广播自己接管VIP,路由器随之更新ARP缓存,流量切换完成。

常见的虚地址实现方案有什么

行业里主流的虚拟IP技术主要有三种:

  • VRRP(虚拟路由器冗余协议):标准协议,Cisco、华为、H3C等网络设备普遍支持,服务器端通过Keepalived实现。
  • Keepalived + VRRP:Linux服务器上最常用的组合,轻量、稳定、配置简单。
  • 云厂商的浮动IP:简米云、酷番云等提供了类似“弹性公网IP绑定到云服务器”的机制,本质也是VIP的云化实现,只是切换粒度在控制台级别。

服务器虚地址怎么配置?三种常见场景下的完整步骤

Linux下用Keepalived配置VIP

这是目前中小企业用得最多的方式,以CentOS 7/8、Ubuntu 20.04+为例,前提是两台服务器在同一内网网段,并各自有实地址(假设主节点为192.168.1.10,备节点为192.168.1.11,VIP为192.168.1.100)。

第一步:安装Keepalived

# CentOS/RHEL系
yum install -y keepalived
# Ubuntu/Debian系
apt update && apt install -y keepalived

第二步:主节点配置文件(/etc/keepalived/keepalived.conf)

global_defs {
   router_id LVS_MASTER
}
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        192.168.1.100/24 dev eth0
    }
}

第三步:备节点配置文件

把state MASTER改为state BACKUP,把priority 100改为priority 90,其余配置保持一致,尤其是virtual_router_id必须相同,否则协商失败。

第四步:重启服务并验证

systemctl restart keepalived
systemctl enable keepalived
ip addr show eth0

在主节点上执行ip addr show eth0,能看到inet 192.168.1.100/24 scope global eth0这一行,说明VIP已经生效,然后强制停掉主节点的Keepalived服务(systemctl stop keepalived),再到备节点看ip addr,几秒内备节点就会接管这个地址。

Windows Server故障转移集群中的VIP

Windows环境多见于SQL Server AlwaysOn或文件服务器集群,配置路径是:服务器管理器 → 工具 → 故障转移集群管理器,创建集群后,右键集群名选择“配置角色”,添加“客户端访问点”,输入一个虚拟IP(如192.168.1.200),系统会自动创建集群名称和对应IP,这台IP就是整个集群的虚地址。

Windows的难点不在配置本身,而在集群仲裁配置,如果只有两个节点,一定要设置文件共享见证或云见证,否则脑裂时集群会停止服务。

云服务器(简米云/酷番云)如何配置VIP

云服务器环境与传统IDC不同,多数云厂商不直接支持VRRP广播协议,因此云上配置虚地址,通常采用两种方式:

  • 方式A:预留同网段内网IP,手动绑定到主备机的辅助网卡。 需要云厂商控制台支持“辅助内网IP”功能,切换时通过API或控制台将辅助IP从主实例解绑,再绑定到备实例,缺点是切换时延较高(10秒以上),且依赖操作,国内部分云厂商的VPC支持这个功能,但不同地域可用性差异较大。
  • 方式B:使用SLB(负载均衡)服务。 这是云上更推荐的方案,SLB本身提供的公网IP或内网IP就是一个VIP,后端挂多台云服务器,由SLB做健康检查和流量转发,这种方式用户不需要自己管理漂移逻辑,故障转移由云平台完成。

行业共识认为,云服务器价格本身包含了一定程度的高可用能力,但涉及自建集群时,多数团队还是会先尝试用公网IP和云监控脚本做手动切换,成本低且可控。

虚地址实际部署场景有哪些

高可用反向代理/接入层

最常见的场景是Nginx或HAProxy组成的双机热备,前端用户访问http://192.168.1.100这个VIP,VIP背后的Nginx主节点宕机后,备Nginx自动接管,用户请求不会因入口变化而失败,这里VIP解决的是“入口地址的可用性”,而非业务本身的负载。

数据库双机热备

MySQL主从复制、PostgreSQL热备、Redis哨兵模式中,VIP为数据库客户端提供了一个固定入口,例如MySQL采用MHA或Orchestrator管理时,VIP从原主库漂移到新主库,业务侧的数据源配置无需修改,应用层感知不到主库变化。

负载均衡集群的LVS-DR模式

LVS-DR模式下,Director(调度器)和RS(真实服务器)共用同一个VIP,Director用VIP接收请求,RS也在lo接口上绑定VIP用来回包,这种模式大量用于大流量门户网站和视频服务,配置时需要在RS上执行:

ifconfig lo:0 192.168.1.100 netmask 255.255.255.255 up
echo "1" > /proc/sys/net/ipv4/ip_forward
# 抑制ARP响应,避免RS自己应答VIP的ARP请求
sysctl -w net.ipv4.conf.lo.arp_ignore=1
sysctl -w net.ipv4.conf.lo.arp_announce=2

这个场景里的VIP,承担的是“流量入口+回包通道”的双重职责,思路和普通的Keepalived漂移有区别,更容易让初学者犯迷糊。

配置虚地址时容易踩的坑

坑一:网关对ARP学习时间过长

部分交换机或路由器设置了较长的ARP表老化时间(比如300秒),当VIP漂移后,旧MAC地址还在缓存里,新请求依然被转发到已宕机的旧节点上,解决方法是让Keepalived配置项中加上nopreempt和preempt_delay,同时调小交换机动态ARP老化时间。

坑二:备用节点能ping通VIP但业务不通

这类问题多半出在业务服务没监听VIP地址上,以Nginx为例,如果listen 80只绑定了实地址的IP,VIP漂移过来后流量到达了备节点,但Nginx不响应,解决办法是让服务监听0.0.0:80或VIP:80。

坑三:双节点同时持有VIP,也就是脑裂

脑裂是虚地址配置里非常危险的状态,两个节点同时持有同一VIP,会导致内网ARP冲突、交换机MAC表震荡、业务随机中断,防范措施有四条:开启防火墙限制VRRP组播报文、使用独立的VRRP认证密码、配置低优先级节点的抢占延迟、引入仲裁机制(如ping网关或第三方仲裁机),Keepalived的advert_int默认1秒,两台机器之间网络抖动频繁时,容易误判对方故障,建议适当调大到2秒。

坑四:云环境里自己搭Keepalived不生效

很多团队在云主机上照搬IDC的Keepalived配置,结果VIP始终无法对外提供服务,原因在于VPC交换机普遍开启了端口隔离或组播隔离,VRRP的组播报文(224.0.0.18)被丢弃,替代方案是修改Keepalived为单播模式,即指定对端IP发送VRRP报文,配置方法是在vrrp_instance块下加一行:

unicast_src_ip 192.168.1.10
unicast_peer {
    192.168.1.11
}

坑五:从实地址切换到VIP时安全组或防火墙策略没跟上

服务端网卡上多了个VIP,但iptables/Firewalld规则只放行了实地址的流量,结果VIP拉起来后外网访问超时,建议在集群初始化时,直接让防火墙规则面向业务端口而非具体IP,

firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload

这样无论VIP漂移到哪个节点,现有的放行策略都能覆盖。

虚地址性能开销大不大

从数据面看,VIP本身不参与实际数据转发,它只是一个标识,数据包转发仍然由内核网络栈完成,Keepalived的VRRP报文每1秒才发一个(默认advert_int),消耗的带宽和CPU可以忽略不计,大部分情况下虚地址带来的额外延迟在微秒级甚至为零,与中间增加一台LB(负载均衡设备)的代价完全不同,这一点需要和NAT模式区分清楚:VIP本身没有转发动作,只有故障检测和IP归属协商,性能瓶颈通常不出在VIP机制上。

虚地址是服务器高可用体系里杠杆效应极大的技术,逻辑简单但细节不少,只要理解了“IP漂移”这条主线,再掌握Keepalived和ARP抑制两个关键环节,大部分配置问题都能迎刃而解,先在小规模环境里做一次故障切换演练,比反复阅读文档都更有效,毕竟反复验证过的配置,才是真能扛住事故的配置。

服务器虚地址是什么与配置常见问题解答

服务器虚地址和浮动IP是同一个东西吗?

虚地址和浮动IP在多数语境下指同一类东西,浮动IP更强调“从一台机器解绑再绑到另一台机器”的动作;虚地址则强调它在逻辑上不归属于某一物理节点,云厂商售卖的“弹性公网IP”本质也是一种浮动IP,只不过它的生效范围在全球地域而非服务器本地网段。

只设置两个节点不配置仲裁,能用Keepalived做高可用吗?

可以,但存在脑裂风险,两节点Keepalived仅依赖VRRP心跳协商,如果两台机器之间出现网络分区且业务网段互相不可达,两个节点都会认为对方挂了,从而同时触发VIP接管,对于非关键业务可以接受,但生产环境建议引入仲裁机制,例如让Keepalived的pinger持续探测网关,或者增加一个独立的第三节点做见证。

虚地址配置后ping不通,首先排查什么?

优先排查ARP表和防火墙两层,先在两台节点上执行ip addr show确认VIP在当前节点上处于state UP状态,再到对端节点用arping -I eth0 192.168.1.100 -c 3探测ARP响应是否来自本节点,最后检查iptables是否放行了VRRP协议(协议号112)和VIP对应端口的入站流量,三处都正常,问题基本就剩下网关侧ARP缓存没刷新了。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱