Windows Server 中的 NLB(Network Load Balancing,网络负载均衡)功能是一个用于将客户端请求分配到多个服务器的技术,目的是提供高可用性和扩展性。NLB 通过在多个服务器之间分配网络流量,确保应用程序或服务的高可用性,避免单点故障,并提高系统的处理能力。
NLB 通常用于需要高可用性和负载均衡的应用程序,如 Web 服务器、数据库前端、邮件服务器等,特别适用于可以水平扩展的应用。
NLB 的工作原理
NLB 基于一个简单的工作原理:客户端的请求会通过虚拟 IP(VIP)发送到负载均衡集群中的多个服务器节点。然后,NLB 会根据预定的负载均衡算法将请求分配给集群中的各个服务器。这些服务器共享虚拟 IP 地址,但每台服务器都有一个唯一的物理 IP 地址。
NLB 具有以下特点和功能:
1. 虚拟 IP 地址(VIP)
- VIP 是所有集群节点共享的 IP 地址。客户端只知道 VIP 地址,并将请求发送到此 IP,NLB 会将请求转发到集群中的某个成员服务器上。
2. 节点(Server)
- 每个节点是集群中的一台物理或虚拟服务器,具备自己的 私有 IP 地址。这些节点根据负载均衡算法接收来自客户端的流量。
3. 负载均衡算法
- NLB 支持不同的负载均衡算法,主要包括:
- 轮询(Round Robin):每个请求轮流分配给每个节点。适用于流量较为均衡的情况。
- 最少连接(Least Connections):将请求分配给当前处理连接数最少的服务器,适用于负载不均的情况。
- 源 IP 哈希(Source IP Hash):根据客户端的 IP 地址生成一个哈希值,将客户端的请求定向到特定服务器。适用于需要会话保持的情况。
4. 集群管理与健康检查
- NLB 会定期对集群中的节点进行健康检查,以确保它们处于正常状态。如果某个节点失效,NLB 会将流量自动转发给其他健康的节点。节点的健康状态通常通过对 HTTP 服务或指定端口进行检查来实现。
5. 会话保持
- NLB 支持 会话保持(Session Persistence),也叫“会话粘性”,确保同一个客户端的请求始终被路由到同一台服务器。这对于需要状态保持的应用程序(例如购物车应用)是非常重要的。
6. 跨域与跨站点负载均衡
- 在某些配置中,NLB 也可以跨多个网络域(跨区域或跨站点)进行负载均衡,适用于广域网(WAN)环境中的高可用部署。
配置 NLB 的基本步骤
-
安装和启用 NLB 功能
-
首先需要在 Windows Server 中安装 Network Load Balancing 功能。可以通过 服务器管理器 或 PowerShell 来完成。
powershellCopy CodeInstall-WindowsFeature NLB
-
-
创建 NLB 集群
- 使用 NLB 管理控制台(
nlbmgr.exe
)或 PowerShell 来创建负载均衡集群。 - 在集群配置过程中,你需要指定虚拟 IP(VIP),并选择负载均衡算法。
- 还需要为集群中的每个节点配置其私有 IP。
- 使用 NLB 管理控制台(
-
添加集群节点
- 将多个 Windows Server 实例添加到集群中,每个实例将作为集群中的一个节点。
- 对每个节点进行配置,包括 IP 地址和网络接口。
-
配置端口规则
- 配置端口规则来指定哪些端口会参与负载均衡。例如,Web 服务器通常会使用端口 80 和 443,数据库可能使用其他端口。端口规则允许你指定哪些流量将被路由到集群中。
-
启用健康检查
- 为确保集群中的服务器在不可用时不接收流量,可以配置健康检查。通过设置 HTTP 或 TCP 检查来确保节点在处理请求之前是健康的。
-
配置会话保持(可选)
- 如果应用程序要求会话保持,可以启用会话粘性(如基于源 IP 哈希)。
-
测试集群和流量分配
- 配置完成后,测试集群的运行情况,确保流量能够在各个节点之间合理分配,并且在某个节点宕机时,流量能够自动转