网络负载平衡是 Microsoft 在所有 Windows 2000 Server 和 Windows Server 2003 操作系统上提供的一种负载平衡技术。NLB 使用一种分布算法将负载均衡分布到多台主机上,从而提高基于 IP 的关键型服务(例如 Web、虚拟专用网络、流媒体、终端服务、代理等等)的可伸缩性和可用性,同时可检测主机故障并自动将流量重新分配给其他操作主机,从而提供高可用性。
该文章取自一个部署案例,是针对一 Web站点,利用NLB技术来实现其高可用、可伸缩、并承担更高访问量的要求。在实施NLB中,我将详细的对NLB中的技术参数做一整体的讲解,帮助各位对NLB技术的系统认识和掌握。
在介绍NLB之前,先讲讲做这次NLB配置的相关参数设置:
在开始配置NLB之前,若在工作组模式下,请将准备创建NLB服务的帐户进行密码修改,NLB服务器的用户名和密码修改为一样,避免在后面添加多个主机时出现“Error code:0x800706d5”错误;在域环境中,所有帐户均在“AD用户和计算机”中进行管理,所以不用担心出现这种情况的发生。
进入一台实体服务器(10.134.130.104),在“Start(开始)”菜单中点击“Administrative Tools(管理工具)”,单击“Network Load Balancing Manager(网络负载平衡管理器)”,启动NLB管理控制界面。
进入后,我们就可以创建NLB了。右击“Network Load Balancing Clusters(网络负载平衡群集)”,因还没有创建好的群集,所以选择“New Cluster(新建群集)”,如图 一:
单播:在每个群集成员上,NLB 覆盖网络适配器上制造商提供的 MAC 地址。NLB 对所有成员都使用相同的单播 MAC 地址。这种模式的优点是它可以无缝地与大多数路由器和交换机协同工作。缺点是到达群集的流量会扩散到交换机虚拟 LAN (VLAN) 上的所有端口,并且主机之间的通信不能通过 NLB 绑定到的适配器,也即实体主机间不可以互相通信。若我们在NLB创建时选择单播的模式,在“群集IP配置”中的“网络地址”是以“02 - BF”开头,后面紧跟IP地址的十六进制表示,该网络地址与实际主机的MAC地址相同,后续加入的主机也将修改为此MAC地址。
多播:保留原厂 MAC 地址不变,但是向网络适配器中增加了一个第 2 层多播 MAC 地址。所有入站流量都会到达这个多播 MAC 地址。优点是这种方法可以通过在交换机的“内容可寻址存储器”(CAM) 表中创建静态项,从而使得入站流量仅到达群集中的主机。缺点是因为 CAM 项必须静态关联一组交换机端口,如果没有这些 CAM 项,入站流量仍然会扩散到交换机 VLAN 上的所有端口。还有一个缺点就是很多路由器不会自动将单播 IP 地址(群集的虚拟 IP 地址)与多播 MAC 地址关联起来。如果进行静态配置的话,一些路由器可以存在这种关联。若我们在NLB创建时选择多播的模式,在“群集IP配置”中的“网络地址”是以“03 -BF”开头,后面紧跟IP地址的十六进制表示。在选择多播模式时,后面还有个复选项“IGMP Multicast(IGMP多播)”,若复选此项,就像多播操作模式一样,NLB 保留原厂 MAC 地址不变,但是向网络适配器中增加了一个 IGMP 多播地址。此外,NLB 主机会发出这个组的 IGMP 加入消息。如果交换机探测到这些消息,它可以使用所需的多播地址来填充自己的 CAM 表,这样入站流量就不会扩散到 VLAN 上的所有端口。这是这种群集模式的主要优点。缺点是有一些交换机不支持 IGMP 探测。除此之外,路由器仍然支持单播 IP 地址到多播 MAC 地址的转换。在IGMP多播模式下,将采用“01 – 00 - 5E”开头的MAC地址。在多播的模式下,实体主机之间可以互相通信。
在了解了单播和多播的概念后,我们就可以进行下一步的NLB配置了。一般来说,在NLB的创建时,单网卡多播,双网卡单播。双网卡单播时,因为主机之间不能互相通信,将设置内网通讯的网卡,也就是群集设置中的心跳。在微软官方推荐在NLB设置时,首先考虑单播模式,除非单播不能满足其要求,若要解决流量扩展的方法,推荐使用VLAN。
当我们清楚地了解了单播和多播的区别后,结合我们的自身特点,选择相应的模式进行NLB创建,在此我选择“单播”模式(如图 三)。
配置完成后,点击“Next”进入下一设置页面“Cluster IP Addresses(群集IP地址)”。因只提供一个VIP进行对外访问,所以在此不用进行其他群集IP地址添加(如图 四)。
配置完成后,点击“Next”进入下一设置页面“Cluster IP Addresses(群集IP地址)”。因只提供一个VIP进行对外访问,所以在此不用进行其他群集IP地址添加(如图 四)。
鼠标点击“Edit(编辑)”,进入“Add/Edit Port Rule(添加/编辑端口规则)”界面,对默认规则进行修改设置。
“Cluster IP address(群集IP地址)”:此设置项是用来指定达到哪个群集IP的接受处理方式将按照以下设置进行。因我们没有在“Cluster IP Addresses(群集IP地址)”添加其他的群集IP,在此我们将不进行单独设置,选择“All”即可。
“Port range(端口范围)”:默认情况下,TCP或UDP的0 ~ 65536端口都是可以NLB使用的,但为了NLB的安全,我们只针对所提供的服务进行特定设置。在此我们提供Web站点服务,站点使用80端口进行对外访问,所以我们将此端口范围修改为“From 80 To 80”。
“Protocols(协议)”:选择使用哪种协议来提供服务,在此选择TCP协议。
“Filtering mode(筛选模式)”:在此选项设置中,将选择“Multiple host(多主机)”以何种方式提供服务。多主机之间进行负载平衡时,“Affinity(相似性)”可以选择“None”、“Single”、 “Class C”三种。相似性在此是设置在多主机负载平衡时,对客户端的IP做出的相应反应。选择“Single(单一)”,即表示第一次用户端访问VIP分配到实际的物理主机时,以后所有的请求都由这台主机提供处理;若选择“Class C”模式,则表示一个C类地址的客户端请求将全部由第一次处理请求的主机负责。
“Single Host(单一主机)”:若选择此选项,该端口范围内的所有请求都将由一台主机来进行处理,此选项将配合后面的主机优先级来进行主机判定。
“Disable this port range(禁用此端口范围)”:一般这个选项会在端口例外中进行设置,也就是说,当我们指定了一个比较大的范围端口时,其中有一个或几个端口我们不需要客户端用户访问到,这时我们将利用这个规则来进行设定,防止用户访问此端口请求。
针对本次NLB搭建,我的端口规则设定如图 六。
完成端口规则设定后,点击“Next”进入“Connect”设置进行主机设置。在“Host(主机)”处输入主机IP或者电脑名,点击 “Connect”,此时将会把连接到的主机信息显示在“Interfaces available for configuring a new Cluster(配置一个新的群集可用的接口)”中,因本次搭建的NLB有两块网卡,所以选择对外提供服务的网卡来进行NLB设置。
注:实体服务器不得使用DHCP获取的IP地址,必须手动设置,否则将出现如下提示(如图 七)。
对外10.134.130.100将作为网站接口提供客户端用户连接,但实际在内部将由10.134.130.104和10.134.130.105进行请求处理。
微软的网络负载平衡可以提供最多32台主机的负载平衡,当我们的Web站点需要分担更多用户访问请求的时候,负载均衡无疑是值得考虑的一个解决方案。当然NLB也有相应的限制,像广域网环境中,我们就不能使用NLB进行设置,因为其网络不允许使用同一个MAC地址,也就违反了NLB的基本要求。
在安全方面,除了我们进行的端口规则设定,Windows 2003 Server本身基于TCP/IP 堆栈的集成是动态的,不用进行任何人工干预,这种设置有效的防止了DOS攻击等恶意攻击。除此之外,企业结合自身的网络安全,确保NLB站点的高效运作。
参考资料
服务器群集和网络负载均衡
[url]http://www.microsoft.com/china/t[/url] ... ering/newclust.mspx
网络负载平衡常见问题
[url]http://www.microsoft.com/china/t[/url] ... stering/nlbfaq.mspx