版本比较
标识
- 该行被添加。
- 该行被删除。
- 格式已经改变。
简介
NPS 服务是无状态的,也是就说两个 NPS 配置相同,使用谁都行。 微软有自己的负载均衡器和故障转移 NLB。配置同步可以使用NPS配置导出导入功能,通过Powershell脚本自动同步。
NLB 是什么?
NLB 是 Network Load Balancing(网络负载均衡)。NLB 是一种在多台服务器之间分担外部网络请求/流量的技术,常用于提升网站、应用服务器的可用性和性能,以及实现高可用和容错。
作用
- 分流用户访问到多台服务器,提高系统吞吐量
- 实现冗余,一台服务器宕机不会影响整体服务
- 进行无缝升级与维护
工作方式
- NLB 会根据一定的负载分配算法(如轮询、最少连接等),自动将来自客户端的网络请求分发到多个后端服务器节点。
Windows NLB(Network Load Balancing)特点
在微软环境下,NLB 也是 Windows Server 操作系统自带的一个负载均衡组件,常用于:
- 负载均衡 IIS Web 服务
- 负载均衡远程桌面服务
- 负载均衡应用服务器等
- 负载网络策略服务器等
示例:在多台 Windows Server 部署同一应用时,通过配置 NLB,客户端可以用同一个虚拟 IP 访问,NLB 自动决定实际的处理服务器。
NLB工作模式
关于 NLB(网络负载均衡,Network Load Balancing)的“模式”,常见的部署和工作模式,主要可以归纳为以下几种:
1. 单播模式(Unicast Mode)
原理:所有 NLB 节点适配器都被配置为同一个(虚拟的)MAC 地址,真实服务器的物理 MAC 地址会被取消注册。
特点:
- 节点之间无法直接通信(因为目标 MAC 一样,交换机无法区分)。
- 需要多网卡(或额外配置)实现管理流量。
- 常用于小型网络环境。
优点:
- 部署简单,对交换机无特殊要求。
缺点:
- 同一主机群组内的节点难以互访,广播/环回可能增加。
2. 多播模式(Multicast Mode)
原理:所有 NLB 节点都分配一个组播 MAC 地址(即虚拟 IP 对应的 MAC 是组播 MAC),自己的物理 MAC 也保留。
特点:
- 节点间可以直接通信。
- 需要交换机支持组播MAC。
- 适用于大型、需要群组节点互访的场景。
优点:
- 同组服务器间可以直接通信。
缺点:
- 部分三层交换设备/路由设备支持不好,需专门配置。
3. IGMP 多播模式(IGMP Multicast Mode)
在标准多播的基础上,结合 IGMP 协议优化组播广播,减少网络广播风暴。通
- 常需要支持 IGMP 侦听(Snooping)的交换机。
- 适合大型企业网络环境。
前提条件
- 所有服务器都已加入域控
- 所有操作都使用域控管理员执行。
- 所有用于 NLB 集群的网卡,都在同一网段,同一广播域。
- 服务器 IP 规划 - 注意服务器所有接口都为静态 IP
主机DNS名称 | 角色 | IP地址 | 用于NLB网卡接口名称 | 备注 |
---|---|---|---|---|
NPS-P1.waringid.local | 主Radius服务器 | 192.168.0.6 | 以太网 | |
NPS-P2.waringid.local | 备Radius服务器 | 192.168.0.9 | 以太网 | |
NPS-P3.waringid.local | 备Radius服务器 | 192.168.0.7 | 以太网 | |
NPS-C1.waringid.local | NLB 集群IP | 192.168.0.10 | 虚拟IP |
安装和配置 NLB
NPS-P1 和 P2、P3 都需要执行安装 NLB
代码块 | ||
---|---|---|
| ||
## Powershell 管理员
Install-windowsfeature -name NLB -IncludeManagementTools |
NPS-P1 上新建集群
1、先获取操作网络接口名称
代码块 | ||
---|---|---|
| ||
Get-NetIPConfiguration InterfaceAlias : 以太网 InterfaceIndex : 5 InterfaceDescription : Red Hat VirtIO Ethernet Adapter NetProfile.Name : waringid.local IPv4Address : 192.168.0.6 IPv6DefaultGateway : IPv4DefaultGateway : 192.168.0.1 DNSServer : ::1 127.0.0.1 |
2、创建NLB集群
代码块 | ||
---|---|---|
| ||
New-NlbCluster -InterfaceName "以太网" -ClusterPrimaryIP 192.168.0.10 -SubnetMask 255.255.255.0 -OperationMode Multicast -ClusterName "NPS-C1" # 创建NLB集群,指定网卡、集群IP、集群IP的掩码、集群模式为组播、集群名称。 Get-NlbCluster Name IPAddress SubnetMask Mode ---- --------- ---------- ---- NPS-C1 192.168.0.10 255.255.255.0 MULTICAST # 查看NLB集群 Remove-NlbCluster # 删除NLB集群 |
NPS-P2 和 P3 加入已有 NLB 集群 - 在 NPS-P1 上操作
代码块 | ||
---|---|---|
| ||
Get-NlbCluster -HostName 192.168.0.10 | Add-NlbClusterNode -NewNodeName "NPS-P2.waringid.local" -NewNodeInterface "以太网" Get-NlbCluster -HostName 192.168.0.10 | Add-NlbClusterNode -NewNodeName "NPS-P3.waringid.local" -NewNodeInterface "以太网" # 在现有集群加入新节点,指定集群IP,新节点主机名、新节点网卡名称。 ## 注意接口名称都需要用Get-NetIPConfiguration 获取 Get-NlbClusterNode # 查看NLB集群节点 |
配置端口规则 - 可选,默认是所有 TCP/UDP
代码块 | ||
---|---|---|
| ||
Get-NlbClusterPortRule | Remove-NlbClusterPortRule -Force Get-NlbCluster | Add-NlbClusterPortRule -StartPort 80 -EndPort 80 -Protocol TCP -Affinity None | Out-Null Get-NlbCluster | Add-NlbClusterPortRule -StartPort 1812 -EndPort 1813 -Protocol UDP -Affinity None | Out-Null |
NPS 自动同步配置
所有 NPS 都创建 C:\NPS-Backup 路径的文件夹,下面脚本保存为 .ps1 文件在主NPS服务器进行周期化执行,会将主 NPS 的配置同步覆盖到从 NPS 服务器。
代码块 | ||
---|---|---|
| ||
## Powershell 管理员 mkdir C:\NPS-Backup # 创建配置文件备份文件夹 $date = get-date -Format yyyy_MM_dd # 定义日期格式 $limit = (Get-Date).AddDays(-10) $backup_dir = "C:\NPS-Backup" # 删除10天前的文件 $Computers = @('NPS-P2.waringid.com','NPS-P3.waringid.com') # 在此定义所有的NPS从服务器 Export-NpsConfiguration -Path $backup_dir\archive\NPS_config_$date.xml Export-NpsConfiguration -Path $backup_dir\NPS_config.xml # 导出本机的NPS配置 $Computers | Foreach-Object { Copy-Item -Path $backup_dir\NPS_config.xml -Destination \\$_\C$\NPS-Backup\NPS_config.xml } # 复制配置文件到目标服务器 $Computers | Foreach-Object { Invoke-Command -ComputerName $_ -ScriptBlock {Import-NPSConfiguration -Path C:\NPS-Backup\NPS_config.xml} } # 在目标服务器导入新的配置 Get-ChildItem -Path $backup_dir\archive -Recurse -Force | Where-Object { !$_.PSIsContainer -and $_.CreationTime -lt $limit } | Remove-Item -Force # 删除早于$limit的文件 Start-Sleep -Seconds 4 # 暂停4秒 |
目录 |
---|