两台服务器虚拟IP地址的核心做法是:让两台服务器运行VRRP协议,共享一个虚拟IP,主服务器持有并响应,备服务器监听,主故障时备自动接管。 常用工具是Linux下的Keepalived,Windows下的NLB或故障转移群集,云上则用HAVIP,前提是两台机器在同一二层网络,且交换机允许组播或单播ARP。
两台服务器虚拟IP地址怎么弄?先理解VRRP与主备切换
虚拟IP不是物理网卡上的地址
虚拟IP(VIP)是一个逻辑地址,不固定绑定到某台服务器的物理网卡,它像浮动IP一样,谁持有谁就对外服务。
- 客户端只访问VIP,不关心后端是哪台服务器。
- 主服务器正常时,VIP在主服务器上。
- 主服务器故障时,VIP漂移到备服务器。
VRRP如何让两台服务器共享一个IP
VRRP是虚拟路由冗余协议,通过组播通告维持主备状态。
- 主服务器周期性发送VRRP通告,目的地址224.0.0.18。
- 备服务器在超时未收到通告时,接管VIP。
- 优先级决定谁是主,数值越大越优先。
- 抢占模式可以让原主恢复后重新夺回VIP。
业内专家指出,二层网络是VRRP正常工作的基础,如果两台服务器跨网段,VRRP无法直接运行,需要借助代理ARP或云厂商的HAVIP。
哪些场景必须用虚拟IP
- 数据库主从切换,如MySQL、PostgreSQL。
- Web负载均衡,如Nginx、HAProxy双机热备。
- Redis Sentinel或集群的故障转移。
- Kubernetes API Server高可用。
- 文件共享服务,如NFS、SMB。
两台服务器如何配置虚拟IP地址:Linux Keepalived实操
环境准备
两台Linux服务器,以CentOS 7和Ubuntu 22.04为例。
- 两台服务器在同一VLAN,比如192.168.1.10和192.168.1.11。
- 计划使用的VIP为192.168.1.100。
- 关闭NetworkManager对VIP的干扰,或配置为不管理。
- 时间同步,安装chrony或ntp。
- 放行VRRP协议,IP协议号112。
安装Keepalived
在CentOS上:
yum install keepalived -y systemctl enable keepalived
在Ubuntu上:
apt update apt install keepalived -y systemctl enable keepalived
主服务器配置
编辑/etc/keepalived/keepalived.conf:
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
}
}
备服务器配置只需改两处:
state BACKUPpriority 90
其他参数保持一致,尤其是virtual_router_id和认证密码。
启动与验证
启动服务:
systemctl start keepalived
查看VIP是否在主服务器:
ip addr show eth0
应该能看到inet 192.168.1.100/24。
测试切换:
- 在主服务器上停止Keepalived:
systemctl stop keepalived - 在备服务器上查看VIP:
ip addr show eth0 - 用另一台机器持续ping VIP,观察丢包情况。
常见坑与解决
- 防火墙拦截:firewalld执行
firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanent,然后firewall-cmd --reload。 - iptables拦截:
iptables -A INPUT -p vrrp -j ACCEPT。 - SELinux:临时
setenforce 0测试,或添加策略。 - 交换机IGMP snooping:可能阻断VRRP组播,需关闭或配置静态组播。
- virtual_router_id冲突:同一网段内不同VRRP组必须使用不同ID。
双机热备虚拟IP怎么设置:Windows NLB与故障转移群集
Windows NLB适合无状态服务
NLB是Windows自带的网络负载平衡功能,适合IIS、终端服务等。
- 在服务器管理器添加角色“网络负载平衡”。
- 打开NLB管理器,新建群集,添加两台主机。
- 设置群集IP,即虚拟IP。
- 操作模式选单播或多播。
- 单播会修改MAC地址,可能影响交换机MAC表。
- 多播需要交换机支持,并配置静态ARP。
故障转移群集适合数据库和文件共享
故障转移群集提供真正的应用级高可用。
- 安装“故障转移群集”功能。
- 验证配置,确保两台服务器通过。
- 创建群集,设置群集名称和IP。
- 添加角色,如SQL Server、文件服务器。
- 客户端通过客户端访问点(虚拟IP)连接。
- 需要共享存储或存储复制。
云服务器上的虚拟IP
简米云、酷番云等提供高可用虚拟IP(HAVIP)。
- 在VPC内创建HAVIP,绑定到弹性网卡。
- 配置路由表,指向主备服务器。
- 通过API或控制台切换主备。
- 云上通常禁止自定义VRRP组播,所以不能直接用Keepalived跨可用区。
- HAVIP本身多数不额外收费,但绑定公网EIP会产生费用。
对比:Keepalived、Windows NLB与云厂商HAVIP哪个更省心
| 方案 | 适用系统 | 网络要求 | 切换速度 | 成本 |
|---|---|---|---|---|
| Keepalived | Linux | 同二层,允许VRRP | 秒级 | 免费 |
| Windows NLB | Windows | 同网段,交换机支持 | 秒级 | 免费 |
| 云HAVIP | 跨系统 | 云内VPC | 秒级 | 部分收费 |
行业共识认为,任何高可用方案都需要定期演练切换,不测试的VIP配置,等于没有配置。
内网两台服务器虚拟IP地址怎么弄:交换机与防火墙注意事项
交换机配置
- 确认核心交换机允许组播流量。
- 如果开启IGMP snooping,可能阻断VRRP通告。
- 解决方法:关闭IGMP snooping,或配置静态组播组224.0.0.18。
- 堆叠交换机可以减少环路和广播风暴风险。
防火墙策略
- Linux放行VRRP协议112。
- Windows防火墙允许NLB或群集通信。
- 云安全组放行VRRP或HAVIP相关端口。
- 不要只放行TCP,VRRP是IP协议,不是TCP/UDP。
脑裂预防
脑裂指两台服务器都认为自己是主,同时持有VIP。
- 使用两条独立心跳线。
- 配置Keepalived的
check_script,检测业务进程。 - 备服务器延迟接管,避免网络抖动误判。
- 交换机端口隔离或堆叠可减少脑裂。
内网DNS与ARP
VIP切换后,客户端ARP缓存可能未更新。
- 现代操作系统会发送免费ARP,通知交换机更新MAC表。
- 老旧的网络设备可能需要手动清理ARP。
- 内网DNS可以将域名指向VIP,减少客户端配置。
北京地区两台服务器虚拟IP地址怎么配置:机房与价格考量
地域差异
北京、上海、广州等一线城市机房资源紧张。
- 虚拟IP配置本身不额外收费。
- 需要两台服务器在同一VLAN或同一云VPC。
- 如果跨机房,需要专线或云联网,成本更高。
- 北京地区BGP多线带宽价格通常高于其他地区。
价格构成
- 服务器租用或托管费用。
- 带宽费用,按Mbps或流量计费。
- 公网IP费用,部分云厂商按数量收费。
- HAVIP多数免费,但绑定EIP后产生公网费用。
- 据统计,北京地区机柜和带宽价格在北方城市中处于较高水平。
建议
- 先确认两台服务器是否在同一二层网络。
- 如果不在,考虑云厂商HAVIP或DNS轮询。
- 如果在内网,Keepalived是最省钱的方案。
- 如果要求跨可用区,用云HAVIP加健康检查。
收尾
两台服务器虚拟IP地址的配置,核心是选对协议和工具,Linux用Keepalived,Windows用NLB或群集,云上用HAVIP,配好后一定要做故障切换测试,确保VIP能正常漂移。
Q&A:两台服务器虚拟IP地址怎么弄相关问题
两台服务器虚拟IP地址怎么弄?一定要用Keepalived吗?
不一定,Linux下Keepalived最常见,但也可以手写脚本调用ip addr add和ip addr del,Windows可以用NLB或故障转移群集,云上可以用HAVIP,选择取决于系统、网络环境和管理习惯。
两台服务器虚拟IP地址配置后无法漂移怎么办?
检查VRRP组播是否被交换机阻断,检查防火墙是否放行协议112,检查virtual_router_id是否冲突,检查priority是否主高备低,检查认证密码是否一致,用tcpdump vrrp抓包看VRRP通告是否到达备服务器。
两台服务器虚拟IP地址配置需要多少钱?
自建环境软件本身免费,成本主要是服务器和网络,云上HAVIP多数不额外收费,但公网IP和带宽会产生费用,北京地区机房带宽价格相对较高,具体以服务商报价为准。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/735413.html




