很多做运维的小伙伴都遇到过这个尴尬
在 Linux 世界里,做负载均衡和高可用,第一反应就是 Keepalived + Nginx,这套组合拳打得行云流水——Nginx 负责流量分发,Keepalived 通过 VRRP 实现 VIP 漂移,完美!
但是,当你在 Windows 环境下做同样的事情时,突然发现:
-
Keepalived?Windows 根本跑不了
-
难道 Windows 就做不了负载均衡了?
别急!Windows 其实自带了一款“神器”——NLB(网络负载均衡器),只是很多人不知道,或者忽略了它。

Windows NLB(Network Load Balancing) 是 Windows Server 系统内置的负载均衡功能,从 Windows 2000 开始就有了,一直延续至今。
它不需要安装任何第三方软件,不需要购买昂贵的 F5 硬件,开箱即用!
简单来说,NLB 可以把多台 Windows 服务器组成一个集群,对外提供一个统一的虚拟 IP 地址。客户端访问这个虚拟 IP 时,NLB 会自动把请求分发到集群中的各个节点。
一个 NLB 集群最多支持 32 台服务器,对于大多数业务场景来说,完全够用。
1. 高可用,自动故障切换
这是 NLB 最核心的能力。当集群中某台服务器宕机或服务不可用时,NLB 会在几秒内自动检测到,并把流量切换到其他健康的节点。整个过程对客户端完全透明,用户无感知。
2. 横向扩展,提升处理能力
业务量增长时,只需要往集群里添加新的服务器,NLB 会自动把流量分发到新节点上。添加或删除节点都不需要重启集群,不影响线上业务。
3. 支持多种协议
NLB 工作在网络的第四层(传输层),支持 TCP、UDP 等协议。无论是 Web 网站(HTTP/HTTPS)、FTP 服务,还是 VPN、远程桌面,都可以用 NLB 做负载均衡。
4. 灵活的负载分配
可以为不同的服务器设置负载权重,性能强的机器承担更多流量。同时支持客户端相关性(Affinity),可以把同一个客户端的请求始终分配到同一台服务器,满足会话保持的需求。
安装非常简单
通过服务器管理器添加“网络负载均衡”功能,或者一行 PowerShell 命令搞定:
powershell
Install-WindowsFeature NLB -IncludeManagementTools
配置也很直观
打开 NLB 管理器,创建一个新集群,添加服务器节点,设置虚拟 IP 和端口规则,几分钟就能配置完成。所有操作都有图形化界面,不需要写复杂的配置文件。

管理很方便
支持远程管理,可以在一台电脑上管理多个 NLB 集群。也可以用 PowerShell 脚本实现自动化运维。
对于绝大多数 Windows 环境下的业务需求,NLB 都能满足。
当然,NLB 也不是万能的,它有一些限制需要了解:
-
只能做四层负载均衡:不能根据 URL、Cookie、HTTP Header 等七层信息做智能路由
-
健康检查比较基础:主要检测服务器是否存活,无法深入检测具体应用状态
-
所有节点必须在同一子网:不能跨网段部署
-
微软建议不超过 8 个节点:虽然理论上支持 32 个,但实际使用中节点越多性能可能会下降
但这些限制对于大多数中小规模业务来说,根本不是问题。
回到开头的问题:Windows 没有 Keepalived 怎么办?
答案是:不需要!Windows 自己就有 NLB。
与其在 Windows 上硬折腾 Keepalived,不如直接用微软亲儿子 NLB。它稳定、可靠、简单,而且是系统自带的,不花一分钱。
需要详细使用教程的可以看看我的这个文章








