介绍了负载均衡的基本概念(包括负载均衡的定义,有无负载均衡器的拓扑对比,负载均衡的工作原理,负载均衡的三要素),网络负载均衡的特性,集群部署要求,网络拓扑以及说明。
1. 负载均衡的基本概念
1.1 负载均衡的定义
Load balancing,将网络请求或其他形式的负载“均摊”到不同的计算机上,达到最优化资源使用、最大化吞吐率、最小化响应时间和避免过载的目的。配置服务器负载均衡可以避免集群中部分服务器压力过大,而另一些服务器比较空闲的情况。负载均衡可分为软件负载均衡和硬件负载均衡。
示例:
(1)一个没有负载均衡的Web服务架构
问题:如果大量用户同时访问该Web服务器,或遭受DOS/DDOS攻击,该服务器可能出现宕机情况,这时候普通用户将无法正常访问,服务中断,可能造成大量损失。
(2)加入负载均衡器的Web服务架构
在服务器集群中加入负载均衡器后,负载均衡器可根据负载均衡算法将用户请求转发到服务器集群中空闲的服务器中。(具体请查阅1.2小节)负载均衡器可以是软件也可以是硬件。
1.2、负载均衡的工作原理
负载均衡器通过更改请求的目的地址对请求进行转发,在服务器返回数据包的时候,更改返回数据包的源地址,保证客户端请求的目的和返回包是同一个地址。
具体示例
某游戏运营商申请到一个公网IP1.1.1.1,玩家的用户登录验证需要连接这个地址,玩家请求数据包会先通过防火墙,达到负载均衡器。负载均衡器根据其内置算法决定玩家将连接哪一台服务器进行登录验证,这里假设负载均衡器将该玩家分配给Web服务器1。接着负载均衡器将用户请求数据包中的目的地址换成对应的Web服务器1的IP地址,Web服务器的IP地址可能是内网IP地址(例如192.168.82.223),玩家的请求数据包会到达Web服务器1上进行验证。
内置算法即决定服务器集群中哪台服务器可以处理用户请求。例如,有A、B、C三台服务器,服务器A使用率已经达到60%,服务器B和服务器C使用率均为0%,且正常运行时,负载均衡器中的内置算法将用户请求转发到服务器B或服务器C中,具体需要查看B和C哪台服务器的优先级更高。
当验证成功后,Web服务器1会发送一个响应数据包返回给负载均衡器,负载均衡器会将收到数据包中的源地址由192.168.82.223改为1.1.1.1,再把响应数据包发送给玩家。
这样就保证了用户的请求目的地址和响应数据包的源地址是同一个地址。
1.3、负载均衡三要素
包括分发策略、会话保持和服务器健康检查。
(1)分发策略
指负载均衡设备,根据什么样的策略(即算法)把请求分发到不同的后台服务器上,最简单的算法是轮巡,把用户请求依次分配到服务器上。
(2)会话保持
在大部分的应用中都会涉及到服务器 Session控制。而且这些Session通常不会在服务器之间进行复制的。即用户A在登录时负载均衡器将其分配到服务器1处理,那么以后所有关于用户A的所有请求都将会转发到服务器1中,而不会转发到其他服务器上。如果分配到其他服务器上,其他服务器上没有关于A的记录,会导致请求失败。
最简单的会话保持策略是源地址会话保持。
(3)服务器健康检查
指负载均衡设备必须检测后台服务器是否在正常工作,如果有某台服务器出现故障,无法正常工作,那么负载均衡器会把这台服务器从负载均衡组中剔除。当故障服务器恢复时,再把该服务器重新加载到负载均衡组中。
2. Windows Server Network Load Balancing(网络负载均衡)
NLB增强了Internet服务器应用程序的可用性和可伸缩性,例如在Web,FTP,防火墙,代理,虚拟专用网(VPN)和其他关键任务服务器上使用网络负载平衡服务。
网络负载平衡(NLB)特性是通过使用TCP/IP协议在多个服务器之间分配流量。通过将运行应用程序的两台或多台服务器合并到一个虚拟集群中,NLB为web服务器和其他关键任务服务器提供了可靠性和性能。
NLB集群中的服务器称为主机,每个主机都运行着相同服务的单独副本。NLB会将客户端的请求转发到集群中的各个主机上。系统管理员可以配置由每个主机处理客户端请求。还可以动态地向集群添加主机来处理增加的负载。NLB还可以将所有流量定向到指定的主机中,该主机称为默认主机。
NLB允许群集中的所有服务器使用相同的IP地址集进行寻址,并且为每个主机维护一组唯一的专用IP地址。对于负载平衡的应用程序,当主机发生故障或脱机时,负载会自动在正常工作的服务器之间重新分配。准备就绪后,脱机的服务器可以透明地重新加入群集并重新获得其工作负荷的份额,这使群集中的其他计算机可以处理较少的流量。
2.1 特性
Windows Server 的网络负载均衡有三个重要特性,包括高可用性、可扩展性和可管理性。
(1)高可用性
高可用性系统可靠地提供了可接受的服务水平,并且停机时间最少。为了提供高可用性,NLB包括内置功能,这些功能可以自动:
检测发生故障或脱机的群集主机,然后进行恢复。添加或删除主机时,平衡网络负载。在10秒之内恢复并重新分配工作负载。 (2)可扩展性
可伸缩性是衡量计算机,服务或应用程序在满足不断增长的性能要求的能力的度量。对于NLB群集,可伸缩性是当群集的整体负载超过其能力时,可以向现有群集中增量添加一个或多个系统的能力。为了支持可伸缩性,系统管理员可以对NLB执行以下操作:
平衡NLB群集中各个TCP / IP服务的负载请求。单个群集中最多支持32台服务器。在群集中的多个主机之间平衡多个服务负载请求(来自同一客户端或来自多个客户端)。随着负载增加,将主机添加到NLB群集中,而不会导致群集发生故障。当负载降低时,可以从群集中删除主机。通过完整的流水线实施实现高性能和低开销。流水线化允许将请求发送到NLB群集,而无需等待对先前请求的响应。 (3)可管理性
为了支持可管理性,系统管理员可以对NLB执行以下操作:
通过使用Windows PowerShell中的网络负载平衡(NLB)Cmdlet 或NLB管理器,可以在一台服务器管理和配置多个NLB群集和群集主机。使用端口管理规则为单个IP端口或一组端口指定负载平衡行为。为每个网站定义不同的端口规则。如果将同一组负载平衡服务器用于多个应用程序或网站,则端口规则基于目标虚拟IP地址(使用虚拟群集)。使用可选的单主机规则将所有客户端请求定向到单台主机时。NLB将客户端请求路由到运行特定应用程序的特定主机。阻止对某些IP端口的网络访问。在多播模式下运行时,请在群集主机上启用Internet组管理协议(IGMP)支持,以控制交换机端口泛洪(将传入网络数据包发送到交换机上的所有端口)。使用Windows PowerShell命令或脚本远程启动,停止和控制NLB操作。查看Windows事件日志以检查NLB事件。NLB将所有操作和群集更改记录在事件日志中。
2.2 部署NLB服务群集的要求
(1)硬件要求 群集中的所有主机必须位于同一子网中。每个主机上的网络适配器数量没有限制,并且不同的主机可以具有不同数量的适配器。在每个群集中,所有网络适配器必须是多播或单播的。NLB在单个群集中不支持多播和单播的混合环境。如果使用单播模式,则用于处理客户端到群集流量的网络适配器必须支持更改其媒体访问控制(MAC)地址。
(2)软件要求 在每个主机上启用了NLB的适配器上只能使用TCP/IP。请勿将任何其他协议(例如IPX)添加到此适配器。群集中服务器的IP地址必须是静态的。
NLB不支持动态主机配置协议(DHCP)。NLB会在其配置的每个接口上禁用DHCP。
3. 网络拓扑及说明
右侧三台服务器构成服务器集群,统一为外界提供Web服务,其Web服务聚合IP地址为10.0.0.1.同时每台服务器上均安装网络负载均衡(Network Load Balancing,NLB)形成集群负载均衡。三台服务器的内网IP地址分别为:
NLB1:192.168.82.208NLB2:192.168.82.209NLB3:192.168.82.210
左侧为客户端电脑PC2,IP地址为10.0.0.2。PC2通过10.0.0.2访问服务器集群NLB1-3提供的Web服务。
参考资料
Microsoft Docs: