随着各行业信息化建设的发展,使人们对网络服务器的处理能力、高可用性提出了更高的要求。尤其是高度信息化的企业中,关键性网络服务已经成为企业生成过程中的重要环节,服务的中断意味着生产的中断,机会的丧失。
负载平衡不但可以有效地解决单服务器的性能限制,而且可以实现故障的快速转移,保证服务的高可用性以及灵活的扩展性。于是,负载平衡几乎是每个网络管理员的必修课。本文章主要讲述windows2003在网络负载平衡(Network Load Balancing )方面的应用。
Windows的负载平衡主要是依*组建网络负载平衡群集来实现的,支持WEB、FTP、Proxy、VPN、Windows Media、Telnet等服务器的负载平衡。
负载平衡的原理
NLB其实就是提供相同服务的一系列服务器同时监听服务请求,并允许在同一时间运行多个应用程序实例。NLB的核心是位于网络适配器驱动和网络层之间的WLBS.SYS的筛选器驱动。NLB把每个IP数据包分发到所有群集节点,并根据数据包的源地址、目标地址、传输层协议、端口、群集的配置参数以及算法做出由某个节点处理而其他节点丢弃此数据包的统一决定。
负载平衡的概念
配置负载平衡之前,需要理解几个重点概念。
群集IP 地址和子网掩码:群集的虚拟IP地址,是表现在客户面前的“外部”地址。
专用IP 配置和子网掩码:群集各节点的本地IP地址,唯一标识群集的各节点。
完整Internet名:能够访问此群集的DNS名称,比如cluster.it.com.cn。
群集操作模式:在方案的选择中详细讲述。
端口规则:windows2003中新加的功能,细化了控制微粒,可以阻止某节点特定应用程序的流量,而在windows2000中这是不能实现的。
优先级(单一主机标识符):范围在1-32之间(32是一个群集的最大节点数)。此值决定如何处理没有包含在任何为群集定义的端口规则中的传入网络通讯。具有最高优先级的主机(优先值最小)将处理所有这种通讯。
负载平衡的要求
操作系统的要求 在windows2003的所有版本系统中,NLB都是可用的。群集可以兼容以前的windows服务器操作系统(比如2000,NT4.0)。
网络结构的要求
NLB可以在连接到FDDI(光纤分布式数据接口),以太网,吉比特以太网的服务器上运行,但不能在Token Ring(令牌环)网络上运行。
网卡的要求
所有的网络适配器必须在Windows2003的硬件兼容列表中。一般情况下,服务器的网卡都会符合要求。
交换机和路由器的要求
当计划使用VLAN来防止交换数据洪水时,必须确保交换机支持VLAN设置;当使用多播时,部分路由器不支持把单播IP地址映射为一个多播MAC地址,需要手工设置。
通讯协议的要求
绑定到群集的网络适配器只能安装TCP/IP协议,可以必须静态分配,不支持DHCP。
应用程序的要求
首先必须是TCP或UDP通讯,而且确定当前应用程序或服务必须支持NLB。
负载平衡的设计
由于网络负载平衡不能根据CPU和内存利用率来分配流量,而且性能并不是随着节点数量的增加而线性变化的(因为随着规模的增大,由此产生的网络开销,CPU开销也随着增大),,所以正确的设计和规划负载平衡是至关重要的。
群集的实现需要群集内部的通讯(比如心跳信息和聚合通讯)以及管理和内容复制的数据传输。这部分通讯占用了网络的可用带宽。为了克服单网卡的局限性,可以使用双网卡,一个用于负载客户端的通讯,另一个用于传输内部通讯,管理和内容的数据。
群集操作模式的选择是设计的重要一步。单播模式是指各节点的网络适配器被重新指定了一个虚拟MAC(由02-bf和群集IP地址组成确保此MAC的唯一性)。由于所有绑定群集的网络适配器的MAC都相同,所以在单网卡的情况下,各节点之间是不能通讯的,这也是推荐双网卡配置的原因之一。为了避免交换机的数据洪水,应该结合VLAN使用。
多播模式下,网络适配器在保留原有的MAC地址不变的同时,还分配了一个各节点共享的多播MAC地址。所以,即使单网卡的节点之间也可以正常通讯。但单网卡的带宽占用、竞争网络适配器等缺点仍然存在。
此外,部分路由器(特别是Cisco产品)还不支持单播IP地址和多播MAC的ARP映射的自动创建,需要手工配置。IGMP多播(只有在选中多播时,才可以选择此项),在继承多播的优点之外,NLB每隔60秒发送一次IGMP信息,使多播数据包只能发送到这个正确的交换机端口,避免了交换机数据洪水的产生。
端口规则是windows2003的新特性。NLB提供3种筛选模式,可以针对端口规则采取禁止、多主机负载平衡和单主机的特殊处理。其中,多主机筛选模式提供了真正意义上的负载平衡,并且可以根据节点的实际处理能力进行负载量的分配。
单个群集的最大节点数为32,如果还不能满足需要,可以使用Round-Robin Domain Name Service把请求映射到多个群集上(但也因此引入了单点故障DNS,除非DNS冗余)。
负载平衡的安装与配置
Windows2003引入了网络负载平衡管理器(控制面板->管理工具),使负载平衡的安装和配置更加简单。管理器可以容易的实现群集的建立、删除,节点的添加、 删除、修改以及故障的检测。
运行网络负载平衡管理器,选择 群集 -> 新建 ,弹出“群集参数”对话框,按需要配置。如下:
下一步,系统会提示添加附加群集IP,如果不需要可直接按“下一步”进行端口配置。以web群集配置为例,其典型端口配置如下图所示:如果会话状态不保存在该群集上,则相似性选择无,否则选择单一或者类C。
之后,指定一台主机连接,并选择一个可用的网络接口,进行主机参数的设置:
点击“完成”,管理器会自动连接到主机上进行相关配置来创建一个新的群集。可以双击日志项目,了解NLB管理器都进行了什么配置。
虽然,使用NLB管理器是一个微软推荐的方法,但使用NLB.EXE命令行仍然有它独特的优点:反应快,便于批处理。因此,掌握NLB命令也是快速部署的需要。
负载平衡的安全考虑
群集的远程管理特性允许管理员在远程计算机上使用NLB.EXE管理群集。但启用此功能后,会带来安全风险,比如密码泄露和DOS (拒绝服务攻击)。如果启用,请确保密码足够复杂,并且根据需要在防火墙上进行访问策略的配置(比如封锁UDP端口1717和2504)。
总结
负载平衡负载平衡是一项综合的技术,在实施过程中往往伴随着其他技术的应用。比如网络负载平衡群集和服务器群集的结合,甚至与存储区域网络或网络附加存储相关联都是一个不错的主意。
附:
Windows 2000 下的DNS 轮询(round robin)的开启:
REGEDT32.exe
增加下列值
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters
LocalNetPriority
数值类型 DWORD
值 0
关闭REGEDT32.exe
重起DNS Server 的服务
备注:客户端如果需要按照DNS轮询的机制访问服务器,那么需要关闭本地的 DNS Client 服务,因为该服务提供了DNS查询的本地Cache功能,这样就不会动态了。
通过这种机制,不必借助第三方的软件已经可以达到50%的访问概率了。
附:
[.NET]
网络负载均衡的实现
网络负载均衡的实现
在现行的许多网络应用中,有时一台服务器往往不能满足客户端的要求,此时只能通过增加服务器来解决问题。
那么,有没有一个办法或者技术来解决此类问题呢?使用Windows 2000或Windows Server 2003中的网络负载平衡群集就可以(本文将介绍
Windows Server 2003
中的网络负载平衡技术的实现方法)。
一、网络负载平衡的优点
1.网络负载平衡允许你将传入的请求传播到最多达32台的服务器上,即可以使用最多32台服务器共同分担对外的网络请求服务。网络负载平衡技术保证即使是在负载很重的情况下它们也能作出快速响应。
2.网络负载平衡对外只须提供一个IP地址(或域名)。
3.如果网络负载平衡中的一台或几台服务器不可用时,服务不会中断。网络负载平衡自动检测到服务器不可用时,能够迅速在剩余的服务器中重新指派客户机通讯。此保护措施能够帮助你为关键的业务程序提供不中断的服务。可以根据网络访问量的增多来增加网络负载平衡服务器的数量。
4.网络负载平衡可在普通的计算机上实现。
在Windows Server 2003中,网络负载平衡的应用程序包括Internet信息服务(IIS)、ISA Server 2000防火墙与代理服务器、VPN虚拟专用网、终端服务器、Windows Media Services(Windows视频点播、视频广播)等服务。同时,网络负载平衡有助于改善你的服务器性能和可伸缩性,以满足不断增长的基于Internet客户端的需求。
网络负载平衡可以让客户端用一个逻辑Internet名称和虚拟IP地址(又称群集IP地址)访问群集,同时保留每台计算机各自的名称。
下面,我们将在两台安装Windows Server 2003的普通计算机上,介绍网络负载平衡的实现及应用。
这两台计算机中,一台计算机名称为w2003-1,IP地址为202.206.197.190,另一台名为w2003-2,IP地址为202.206.197.191。
规划网络负载平衡群集使用的IP地址为202.206.197.195,规划网络负载平衡群集完整的计算机名称为cluster.heinfo.edu.cn。你需要在heinfo.edu.cn域中注册此主机名称并将地址设置为202.206.197.195。如果你没有DNS,可以在需要访问网络负载平衡的客户机(包括网络负载平衡主机)上编辑%systemroot%system32driversetc目录下的hosts文件,添加一条信息"202.206.197.195 cluster.heinfo.edu.cn",即可解决DNS域名解析的问题。
当正式应用时,客户机只需要使用cluster.heinfo.edu.cn或IP地址202.206.197.195来访问服务器,网络服务平衡会根据每台服务器的负载情况自动选择202.206.197.190或者202.206.197.191对外提供服务。
二、网络负载平衡的实现过程如下:
在实现网络负载平衡的每一台计算机上,只能安装TCP/IP协议,不要安装任何其他的协议(如IPX协议或者NetBEUI协议),在网络属性中,"网络负载平衡"也不能被选择,这可以从"网络连接属性"中查看。
①先进入第一台计算机,以管理员身份登录,从"管理工具"中运行"网络负载平衡管理器",用鼠标右键单击"网络负载平衡群集",从出现的菜单中选择"新建群集",进入"群集参数"界面(
图1
)。
在"IP地址"后面输入规划的群集参数地址202.206.197.195,在子网掩码处使用默认值,在"完整Internet名称"后面输入cluster.heinfo.edu.cn(也可以是其他的名称,但输入的DNS名称必须与输入的IP地址相符)。
如果允许远程控制,请选中"允许远程控制",并在"远程密码"和"确认密码"处输入可以进行远程控制的密码
②点击"下一步"按钮,进入群集IP地址页面后再进入"端口规则"界面,点击"下一步"按钮,进入"连接"界面(
图2
)。
③在"连接"界面的"主机"栏中输入当前计算机的名称w2003-1,然后点击"连接"按钮,将在"对配置一个新的群集可用的接口"框中显示出连接的计算机的网卡及IP地址。选择与群集IP地址同一网段的地址(用于对外提供网络应用的网卡),然后点击"下一步"按钮,进入设置"主机参数"界面,点击"完成"按钮,系统将自动开始网络负载平衡群集的配置。几分钟后,网络负载平衡群集配置完成。
④打开第二台计算机,并以管理员的身份登录进入。
注意:在网络负载平衡中的每个节点上,管理员账号的用户名和密码最好一致。
⑤然后,在第一台计算机上,用鼠标右键单击新创建的群集,从出现的菜单中选择"添加主机到群集"。将出现"连接"界面,在"主机"中输入第二台计算机的计算机名称,点击"连接"按钮,将会在"对配置群集可用的接口"下面显示出连接的计算机上的网络配置。选择202.206.197.191的网卡,进入主机参数界面,点击"完成"按钮,即可返回网络负载平衡管理器(
图3
)。
⑥关闭网络负载平衡管理器后再进入网络负载平衡管理器。用鼠标右键单击"网络负载平衡群集",从出现的菜单中选择"连接到现存的",将会弹出"连接"界面。
输入第一台计算机的名称,点击"连接"按钮,在"群集"下面将列出群集的IP地址,选择此IP地址,并点击"完成"按钮,连接群集即可完成。
以后,如果这两台服务器不能满足需求,可以按以上步骤添加第3台、第4台计算机到网络负载平衡中以满足要求。
三、用IIS服务验证网络负载平衡
网络负载平衡配置好后,为了实现某项具体的服务,需要在网络负载平衡的计算机上安装相应的服务。例如:为了实现IIS网站的负载平衡,需要在相应的网络负载平衡的计算机上安装IIS服务。
安装网络负载平衡的应用程序时,不需要特别的方法,只需要在配置好网络负载平衡的计算机上安装相应的服务即可。但是为了让每个用户在通过网络负载平衡访问到不同的计算机时,能够访问到一致的数据,需要在网络负载平衡的每台计算机上保持数据的一致性。举例来说:实现了两个节点的IIS的网络负载平衡,为了保证两个网站内容的一致性,除了这两个IIS服务器的配置相同外,相应的网站数据必须一致。
为了检验网络负载平衡,我们可以通过IIS来进行验证,其他的一些应用如终端服务、Windows Media服务与IIS的应用相类似。
在网络负载平衡的每一台计算机上安装IIS服务,方法如下:
在"添加/删除程序"中,点击"添加Windows组件",进入Windows组件向导,双击"应用程序服务器",进入"应用程序服务器"(
图4
)。
选中ASP.NET、Internet信息服务及应用网络COM+访问后,即可开始安装IIS服务。
安装之后,进入第一台计算机的inetpubwwwroot目录,新建一个文本文件,输入以下内容:
This win2003-1
然后将它保存为default.htm文件。这个网页在IE中将显示如下内容:
This w2003-1
在第二台计算机的inetpubwwwroot目录,新建一个文本文件,并输入下面的内容:
This win2003-2
这个网页在IE浏览器中将显示"This w2003-2",随后将这个文件以default.htm名称保存。
然后,在其他计算机上的IE浏览器中键入http//cluster.heinfo.edu.cn,将会显示为"This win2003-1"或"This win2003-2",根据网络的负载,网络负载平衡会自动转发到第一台计算机或第二台计算机。为了验证效果,你可以在浏览的时候,拔掉第一台计算机的网线或拔掉第二台机器的网线,将会发现浏览到的将是不同内容。当然,我们只是测试的时候,为了验证网络负载平衡的效果,两个网站的内容不一致,而在正式应用的时候,网络负载平衡群集的每个节点计算机的内容将是一致的,这样,不管使用那一个节点响应,都保证访问的内容是一致的。
使用DNS服务器实现负载均衡
访问企业网
服务器
的用户急剧增加,一台服务器难以满足用户的访问需要,那么如何才能保证用户的正常访问呢?解决方法有很多,如使用Windows 2000或Windows Server 2003提供网络负载均衡服务,但该服务的设置非常复杂。而通过
DNS服务器
实现网络负载均衡则是一种比较简单的方法。
笔者以企业网中的
Web服务器
为例来介绍一下如何使用DNS服务器实现网络负载均衡。为了提高域名为“www.rtj.net”的网站的访问量,在企业网中部署三台内容相同的Web服务器,它们提供相同的服务,但每台服务器的IP地址都不一样。下面对企业网中的DNS服务器进行设置来实现三台Web服务器共同承担客户对网站的访问。
一、启用循环
以Windows Server 2003系统为例,在DNS服务器中,依次点击“开始→程序→管理工具→DNS”选项,进入DNS管理器窗口,鼠标右键点击DNS服务器图标,在弹出的快捷菜单中选择“属性”选项,接着在属性对话框中切换到“高级”选项卡(图1),确保“服务器选项”列表框中的“启用循环”选项处于选中状态。
图1
二、添加主机记录
在“rtj.net”区域中创建主机记录。在DNS管理器窗口中,右键点击“rtj.net”项,在弹出的菜单中选择“新建主机”,进入新建主机对话框,在“名称”栏中输入“WWW”,IP地址栏中输入其中一台Web服务器的IP地址,如192.168.0.5,最后点击“添加主机”按钮。
因为企业网中有三台Web服务器,并且它们的IP地址都不同,因此另外还要新建两条主机名为“WWW”的主机记录,方法和上面一样,仅仅是它们的IP地址内容不同。这样就能将网站域名分别解析到不同的Web服务器上。
DNS服务器rtj.net区域三条主机记录内容如下表所示:
完成了以上三条主机记录的创建后(图2),就实现了Web
服务器
的网络负载均衡。这样当客户机访问
www.rtj.net
网站时,就会向
DNS服务器
发出域名解析请求。DNS服务器收到第一个请求时,会把第一个IP 地址192.168.0.5返回给客户机,当第二个客户机要求域名解析时,DNS服务器就把第二个IP地址192.168.1.5返回给客户机。通过这样的循环分配,就可以把客户机的访问分担到不同的
Web服务器
上,从而实现网络负载均衡功能。
三、负载均衡功能的优化
企业网通常由很多子网构成,为了降低网络中的数据流量,客户机最好能访问处于同一子网内的Web服务器。虽然实现了网络负载均衡功能,但并不能保证客户访问的是本子网的Web服务器。其实这个问题也很好解决,只要启用DNS服务器的“启用网络掩码排序”功能即可。
在DNS管理器窗口中,右键点击DNS服务器,在弹出的菜单中选择“属性”,然后在属性对话框中切换到“高级”选项卡,勾选“服务器选项”列表框中的“启用网络掩码排序”选项即可。这样客户机每次都能访问到本子网内的Web服务器了。
完成以上设置后,就使DNS服务器实现了网络负载均衡功能,把客户的访问分担到每个Web服务器上,并且还减少了跨子网的网络通信流量,大大降低了企业网的通信负担。
独家推荐:
首先,NLB通常只用于只读服务器的情况下,因为数据同步是无法*NLB自身实现的。比如终端服务,WEB服务器(可以把数据提交到SQL数据库或第三方存储,不能在组成NLB的主机中存储数据),构成NLB的主机上面的数据不应该是频繁变化的,而且同步工具只能由管理员手工完成,如果不满足以上条件,请使用共用磁盘阵列的群集。
在Windows 2000/2003中,只需要在网卡上添加并启动“网络负载平衡”2000只能有一块网卡启动,2003则没有这种限制了。
首先要配置的是群集参数。这一页中所有的参数在构成NLB系统的计算机中应该是一样的。
IP地址,子网掩码和Internet名字是客户机访问NLB系统时用的。名字会被注册到DNS中(也可以由管理员手工注册),地址和掩码要与NLB连接客户机的网卡所在的网段中的地址规则保持一致。
最下面的网络地址由系统自动生成,决定于下面的单播/组播选项和群集的IP地址。
单播前面为02-BF,组播为03-BF,后面是IP地址的十六进制表示。如果采用IGMP组播那就是标准的组播了,采用01-00-5E开头的MAC地址。
单播的方式下,两台主机都会把自己网卡的MAC地址更改为 ,组播方式不更改网卡的原MAC地址,所以两个主机可以通过这块网卡相互通讯(需要指定不同的从属IP地址)通常我们采用较多的是单网卡多播或多网卡单播。
远程控制根据需要设置。通常也不需要。
第二页是主机参数,这一页中的参数基本上要求NLB中的各主机不相同。
第一项优先级肯定是要不同了,用于后面指定单主机的端口访问由哪台主机处理。
第二项专用IP肯定也是不同的,应该属于一个网段,这个是用于NLB主机相互通讯的。
和前面的群集地址一样,需要手工配置在网卡,单网卡的情况下应该把专有IP配置成为主IP地址,多网卡的情况把专有IP配置在心跳信号专用网卡上就可以了。
第三项初始状态选择“己启动”就可以了。
第三页就是NLB最关键的部分了,决定了NLB系统如何工作,这部分内容在两台主机上也基本是一样的,没有要求完全相同,但必须“兼容”。
这一页是指定端口规则,上面的方框中列出了所有己经定义的端口规则,缺省的情况下只有一条端口规则,内容是所有的TCP/UDP端口都负载平衡。
下面我们来看一下如何定义。
第一项集群IP用于指定到达哪个群集IP的请受按下面的情况处理,这个就选所有吧,因为一般也只有一个IP了。
第二项是TCP或UDP的端口范围。
第三项是协议。
第四项是筛选模式:
首先是多主机,单主机和禁用此端口。
多主机是多主机之间负载平衡,相似性是指对是否对客户端的源IP做出反映,如果是单一则所有来自某一客户机的请求都由固定的主机处理,类C则所有属于一个C类地址的客户机的请求都由某一主机处理。负载量是指各主机在负载平衡时分担多少任务,这里只是一个比值,不是百分比,比如两台主机可以分别设置为70和80,那它们的任务比就是7:8,这也是唯一一个两台主机可以不同的参数,其它的参数必须相同。
单一主机则指该端口范围内的请求只由一台主机处理,优先级决定哪台主机受理。
禁用此端口指群集不对到达该端口范围的请求做出响应,客户机得不到任何回应。
最后要说的是没有指出如何处理的端口采用单一主机处理,由前面主机参数中的指定的优先级决定哪台主机处理。