Windows NLB 负载均衡配置:从零搭建双节点 Web 集群
Windows NLB(Network Load Balancing,网络负载均衡)是 Windows Server 自带的一种流量分发组件,适合把访问请求分摊到多台同配置的服务器上。
本文用两台 Windows Server 做示例,带你把 NLB 配起来,并验证流量是否真正分发。
先确认你的环境是否适合用 NLB
NLB 不是万能的,它本质是工作在 TCP/IP 层的分发,不解析 HTTP 内容。
以下场景比较适合:
- 多台服务器提供相同服务,比如 IIS 站点、远程桌面网关
- 对会话保持没有强依赖,或者应用本身支持共享会话
- 网络环境相对简单,服务器在同一网段
如果业务依赖 Cookie 会话、需要按 URL 路径分发,NLB 本身做不到,通常要配合应用层负载均衡或共享会话存储。
准备清单:
- 至少两台 Windows Server,建议版本一致,本文以 Windows Server 2019/2022 界面为准
- 每台服务器至少两块网卡(或一块网卡加一个独立管理 IP),避免把管理流量和集群流量混在一起
- 一个未被占用的静态 IP 作为集群 IP,例如
192.168.1.100 - 每台服务器已配置固定 IP、能互相 ping 通,且提前装好 IIS 并放一个测试页面
安装 NLB 功能并创建集群
这一步在两台服务器上都要执行,先装功能,再创建集群。
安装功能可以用 PowerShell(以管理员身份运行):
Install-WindowsFeature -Name NLB -IncludeManagementTools
执行完看到 Success: True 就表示安装成功。
也可以用服务器管理器:打开“添加角色和功能”,在“功能”里勾选“网络负载均衡”,一路下一步完成。
功能装好后,在其中一台服务器上创建集群:
- 打开“网络负载均衡管理器”(可在开始菜单搜索)
- 右键“网络负载均衡集群”,选择“新建集群”
- 在“新集群: 连接”里输入本机 IP,点击“连接”,选中要绑定的网卡
- 在“主机参数”里设置优先级,主节点填 1,另一台填 2
- 在“群集 IP 地址”里添加集群 IP,例如
192.168.1.100,子网掩码按实际填写 - 在“群集参数”里选择操作模式,一般先用“单播”
创建完成后,右键集群选择“添加主机”,把第二台服务器加进来,优先级填 2。
配置端口规则并让流量真正分发
集群建好不代表流量会自动分发,还需要配置端口规则。
在 NLB 管理器里右键集群,选择“群集属性”,切到“端口规则”选项卡:
- 点击“添加”,端口范围填
80到80(IIS 默认端口) - 协议选
TCP - 筛选模式选“多个主机”,这样请求会分摊到各节点
- 相似性选“无”,表示不强制同一客户端固定到同一台服务器
如果站点用 HTTPS,再补一条 443 的规则。
配置完成后,客户端访问集群 IP http://192.168.1.100,刷新几次应该能看到不同服务器的测试页面。
容易踩坑的几个点
NLB 配置本身不复杂,但下面这些问题经常导致“配了却没效果”。
- 单播和多播选错:单播模式下,集群里所有节点会共用一个 MAC 地址,交换机的 ARP 表可能指向错误端口,导致只有一台机器收到流量。如果遇到这种情况,可以尝试切换到多播模式,或在交换机上做静态 ARP 绑定。
- 网卡绑定顺序:NLB 绑定的网卡不能同时承载其他需要独立通信的服务,否则可能出现远程连接断开。建议单独用一块网卡做集群通信。
- 防火墙没放行:集群 IP 所在网卡的入站规则要允许对应端口,尤其是
80、443。 - 会话丢失:如果应用依赖 Session,客户端刷新后跳到另一台服务器会掉登录状态,需要改用共享 Session 或配置相似性为“单一”。
- 优先级冲突:两台服务器优先级不能相同,否则集群无法正常选举默认主机。
验证配置是否生效
配完后不要只看管理器里的绿色状态,要实际验证。
在客户端用浏览器反复访问集群 IP,观察页面是否来自不同服务器。
也可以在两台服务器上分别放一个显示主机名的测试页,肉眼确认切换。
命令行侧可以用:
Get-NlbCluster
Get-NlbClusterNode
正常输出会列出集群 IP、节点状态和优先级。
如果节点显示为 Converged,说明已正常加入集群;
如果一直是 Pending,检查网络连通性和防火墙。
最后用 ping 192.168.1.100 确认集群 IP 可达。
NLB 对 ICMP 的响应方式取决于配置,ping 不通不一定代表业务不可用,以实际端口访问为准。
常见疑问
NLB 和 Nginx 反向代理有什么区别?
NLB 工作在传输层,不解析 HTTP 内容,配置简单但功能有限;Nginx 工作在应用层,能按域名、路径分发,但需要额外部署和证书管理。两者可以叠加使用。
必须用两块网卡吗?
不是必须,但强烈建议。单网卡同时跑集群和管理流量,容易出现远程连接中断或 ARP 冲突,排查起来很麻烦。
集群 IP 能和节点 IP 在同一网段吗?
可以,这是常见做法。只要确保集群 IP 没有被其他设备占用即可。
如果按上面步骤做完还是只有一台服务器响应,优先检查端口规则的筛选模式是否为“多个主机”,以及交换机侧是否存在 ARP 绑定问题。