在windows 2000 advanced server中实现网络载量平衡

[ 2005-04-24 13:05:22 | 作者: admin ]
字号: | |
==============[技术文章]在windows 2000 advanced server中实现网络载量平衡

概 述
windows 2000 网络载量平衡服务增强了 web 服务器、ftp 服务器和其他关键任务服务器之类的 internet 服务器程序的可用性和可伸缩性。运行 windows 2000 的单个计算机可提供有限的服务器可靠性和可伸缩性能。但是,通过将两个或多个运行 windows 2000 advanced server 的计算机的资源组合为单个群集,网络载量平衡可以提供 web 服务器和其他关键任务服务器所需的性能和可靠性。启用网络载量平衡服务的方法如图1所示,在要启用网络载量平衡的网卡的属性页中选取"网络载量平衡"。
attachments/month_0504/wtlz_23_173704_xum201_11_14_2a.jpg

图1
windows 2000 advanced server网络载量平衡群集最多可以支持32个群集主机。
每个主机运行所需服务器程序(如 web、ftp、telnet 和电子邮件服务器)的独立副本。对于某些服务,如使用 web 服务器的服务,群集中的所有主机上都运行程序的一个副本,并且在这些服务之间进行网络载量平衡。对于其他服务,例如电子邮件,只有服务的一个副本处理群集中的工作负载。除了为这些服务提供载量平衡外,网络载量平衡允许网络通信流向一台主机,只有当发生故障时才把通信转移到另一主机。
网络载量平衡将一些运行服务器程序的计算机会合在一起,而这些服务器程序必须使用 tcp/ip 网络协议。网络载量平衡允许群集中的所有计算机通过一组相同的群集地址来寻址(同时保持其现有的使用唯一的专用 ip 地址寻址的特性)。网络载量平衡以在主机之间平衡 tcp/ip 通信量的形式来分发接收的客户请求。
网络载量平衡工作原理
组件:
网络载量平衡服务的组件包括:网络载量平衡网络设备驱动wlbs.sys和网络载量平衡控制程序wlbs.exe。网络载量平衡作为 windows 2000 联网驱动程序运行。它的操作对 tcp/ip 联网协议栈是透明的。下图表明了在网络载量平衡主机的典型配置中网络载量平衡软件和其他软件组件之间的关系。
attachments/month_0504/jg9m_23_173730_96yc01_11_14_2b.jpg

图2
虚拟mac地址与群集主ip地址:
配置完网络载量平衡后,网络载量平衡服务(wlbs)虚拟出一个mac地址,该mac地址与各群集主机的mac地址无关,且为群集中的各主机所共用。同时,网络载量平衡服务将指定的群集的主ip地址指派给该mac地址。所有的客户端请求被发往群集主 ip 地址,传入该ip地址的客户请求被群集中的所有主机接收,网络载量平衡在传入指定 tcp 和 udp 端口的数据报到达 tcp/ip 协议软件之前对其进行筛选,根据在"端口规则"中配置的值将客户请求在群集中进行分配,只有被分配为处理该客户请求的群集主机才处理它,其余的群集主机则丢弃该请求。
多播(multicast)支持:
网络载量平衡可以运行于两种模式下:单播和多播。默认情况下启用的是单播支持。
如果禁用多播支持(导致主机还原为单播模式),网络载量平衡将自动命令属于群集适配器的驱动程序代替该适配器的唯一内置网络地址,并将其 mac 地址改为群集的 mac 地址。这是用于所有群集主机的地址。不需要手工配置网卡即可识别该地址。(注意有些网卡不支持修改它们的 mac 地址。如果遇到此问题,则必须安装有效的网卡。)
如果启用该选项,网络载量平衡将把属于群集适配器的群集 mac 地址转换为多播地址。该选项还同时确保将该群集的主 ip 地址解析为 arp 协议部分的多播地址。同时,该适配器现在可以使用在单播模式中被禁止的最初的内置 mac 地址。
如果没有启用多播支持,应该考虑安装专用网卡以得到优化的性能和全部网络功能。尽管成功的群集可以只安装一个网卡并且无需激活多播支持,但是对这种方法仍有两个限制:
1.群集主机间的普通网络通信是不可能的。
2.群集内单独计算机的网络通信将对该群集内的所有计算机产生附加的网络开销。
heartbeat包和网络载量平衡群集的会聚过程:
网路负载平衡群集主机间通过交换heartbeat消息来维护群集的成员关系信息。当群集状态改变时(例如主机失败,离开或加入群集),网络载量平衡调用一个叫做会聚的过程,在此过程中主机交换消息来确定群集新的一致状态,并选出拥有最高主机优先级的主机作为默认主机,同时将发往原失败主机的客户端请求在当前群集成员中重新进行分配。。当所有群集主机对群集的新状态达成一致后,它们将在 windows 2000 事件日志中记录会合的完成情况。会聚过程通常小于10秒钟,所以该过程对客户端操作所造成的影响是很小的。
统计映射算法:
发送到网络载量平衡群集的客户端请求需要在群集内进行分配,这是通过执行统计映射算法来实现的。该算法在群集中的所有主机上执行,客户端请求在群集主机间的分配主要受到以下参数的影响:
1.主机优先级
2.端口规则
主机优先级用来在群集中的主机脱机的情况下,决定在需要处理通信时由该群集中的哪一台主机接管这项工作。主机优先级的允许值范围是从 1 到主机的最大数目。较小的值表示具有较高的优先级(这里 1 是最高优先级)。群集中的每台主机必须指定唯一的主机优先级。
端口规则中参数的设置用于控制群集的运行方式。其中用于处理端口网络通信的方法叫做"筛选模式"。有三种筛选模式:多主机、单主机和禁用模式。多主机模式是缺省设置,只有在这种模式下才可以将客户端的请求在群集中进行分配,也就是实现网络载量平衡。单主机模式只有在缺省主机出错的情况下才将客户端请求转到别的主机上,其实质是实现了多主机容错体系。"负荷量分配"参数用于确定在多主机模式下网络载量平衡群集各主机所要承担的负荷量,以百分比的形式设置。另外,可以为客户关系选择下面的三个选项之一:无、单一和 c 类。"单一"和"c 类"用来确保来自特定客户机或特定网段的所有网络通信信息可以送到同一个群集主机上处理。而"无"选项则设置不需要将来自同一客户机的请求送到同一群集主机上处理。该选项对于需要维持会话状态的应用作用很大,如asp会话等。
配置网络载量平衡
了解了网络载量平衡的工作原理,我们再来看看网络载量平衡的配置方法。首先启用网络载量平衡是在网卡的属性页中设置,参见图1。而网络载量平衡的配置又分为群集配置和tcp/ip配置两部分,其中群集配置又分为群集参数配置、主机参数配置和端口规则配置三项,如下图所示:


attachments/month_0504/rogu_23_173801_he7k01_11_14_2c.jpg

attachments/month_0504/spft_23_173811_xum101_11_14_2d.jpg

attachments/month_0504/nkcq_23_173821_he7k01_11_14_2e.jpg

图5
下面我们结合实例来介绍网络载量平衡的配置。
场景:
两台主机a和b,想做成网络载量平衡群集,其从专有的ip分别为172.16.1.21和172.16.1.22,群集主ip为172.16.1.1。
网络载量平衡群集的配置在单网卡和多网卡主机上均可实现,但其配置方法有一定的区别。
单网卡群集主机的配置方法:
其网络连接如下图所示:
attachments/month_0504/yvo3_23_173846_gd6k01_11_14_2f.jpg

图6
其具体配置如下:
主机a:
打开网络和拨号连接,右键单击 "本地连接",然后单击"属性"。
"网络载量平衡"属性配置
群集参数:
主ip地址:172.16.1.1
子网掩码:255.255.0.0
完整的internet名:http://www.yourcorp.com/
多播支持:启用
主机参数:
优先级(唯一主机id):1
初始群集状态:活动
专用ip地址:172.16.1.21
子网掩码:255.255.0.0
端口规则:取其缺省值
"internet协议(tcp/ip)"属性配置
使用下面的ip地址:172.16.1.21
子网掩码:255.255.0.0
缺省网关:空
dns:指定为内网的dns服务器的地址
高级-高级tcp/ip设置-ip地址:添加ip地址172.16.1.1 掩码255.255.0.0
主机b:
打开网络和拨号连接,右键单击 "本地连接",然后单击"属性"。
"网络载量平衡"属性配置
群集参数:
主ip地址:172.16.1.1
子网掩码:255.255.0.0
完整的internet名:http://www.yourcorp.com/
多播支持:启用
主机参数:
优先级(唯一主机id):2
初始群集状态:活动
专用ip地址:172.16.1.22
子网掩码:255.255.0.0
端口规则:取其缺省值
"internet协议(tcp/ip)"属性配置
使用下面的ip地址:172.16.1.22
子网掩码:255.255.0.0
缺省网关:空
dns:指定为内网的dns服务器的地址
高级-高级tcp/ip设置-ip地址:添加ip地址172.16.1.1 掩码255.255.0.0
多网卡群集主机的配置方法:
多网卡群集主机只能在一块网卡上启用网络载量平衡。因此在这类主机上安装的网卡可分为配置有负载均衡的网卡和未配置有负载均衡的网卡两大类。
其网络连接如下图所示:
attachments/month_0504/96xc_23_173913_pmes01_11_14_2g.jpg

图7
其具体配置如下:
主机a:
1.配置有负载均衡的网卡的设置
打开网络和拨号连接,右键单击安装了网络载量平衡的"本地连接",然后单击"属性"。
"网络载量平衡"属性配置
群集参数:
主ip地址:172.16.1.1
子网掩码:255.255.0.0
完整的internet名:http://www.yourcorp.com/
多播支持:不启用
主机参数:
优先级(唯一主机id):1
初始群集状态:活动
专用ip地址:172.16.1.21
子网掩码:255.255.0.0
端口规则:取其缺省值
"internet协议(tcp/ip)"属性配置
使用下面的ip地址:172.16.1.1
子网掩码:255.255.0.0
缺省网关:空
dns:空


2.未配置网络负载均衡的网卡的设置
"internet协议(tcp/ip)"属性配置
使用下面的ip地址:172.16.1.21
子网掩码:255.255.0.0
缺省网关:空
dns:指定为内网的dns服务器地址
主机b:
1.配置有负载均衡的网卡的设置
打开网络和拨号连接,右键单击安装了网络载量平衡的"本地连接",然后单击"属性"。
"网络载量平衡"属性配置
群集参数:
主ip地址:172.16.1.1
子网掩码:255.255.0.0
完整的internet名:www.yourcorp.com
多播支持:不启用
主机参数:
优先级(唯一主机id):2
初始群集状态:活动
专用ip地址:172.16.1.22
子网掩码:255.255.0.0
端口规则:取其缺省值
"internet协议(tcp/ip)"属性配置
使用下面的ip地址:172.16.1.1
子网掩码:255.255.0.0
缺省网关:空
dns:空
2.未配置网络负载均衡的网卡的设置
"internet协议(tcp/ip)"属性配置
使用下面的ip地址:172.16.1.22
子网掩码:255.255.0.0
缺省网关:空
dns:指定为内网的dns服务器地址
测试网络载量平衡的配置
配置完网络载量平衡后,我们可以通过几种方式来测试网络载量平衡的配置是否正确,是否能够满足我们的要求。
当我们配置完成后,可以利用命令wlbs.exe来判断配置是否成功。wlbs.exe有几个参数,我们经常用到的有:start, stop, display。
start参数用于启用本机的wlbs服务,也就是负载均衡服务。
stop参数用于停止本机的wlbs服务。
display参数用于显示配置参数、当前状态和最后几个事件日志消息。
在各群集主机上打开一命令行窗口,运行wlbs start启用负载均衡服务,运行wlbs display查看最后几个事件的日志消息。如果配置正常,则群集主机之间的会聚过程会很快完成,将显示如下结果:
wlbs 群集控制实用程序 v2.3. (c) 1997-99 microsoft corporation


    CODE: [Copy to clipboard]
=== configuration: ===
current time = fri nov 09 16:48:08 2001
parametersversion = 4
virtualnicname = \device\{7f319322-80aa-4eb9-90bf-19209d008f22}
clusternicname = pci\ven_10ec&dev_8139&subsys_813910ec&rev_10\6&39336204&0&20207808
alivemsgperiod = 1000
alivemsgtolerance = 5
numactions = 50
numpackets = 100
numalivemsgs = 66
clusternetworkaddress = 03-bf-ac-10-de-63
clustername = www.yourcorp.com
clusteripaddress = 172.16.1.1
clusternetworkmask = 255.255.0.0
dedicatedipaddress = 172.16.1.21
dedicatednetworkmask = 255.255.0.0
hostpriority = 1
clustermodeonstart = enabled
licensekey =
descriptorsperalloc = 512
maxdescriptorallocs = 512
scalesingleclient = 0
nbtsupportenable = 1
multicastsupportenable = 1
multicastarpenable = 1
masksourcemac = 1
netmonalivemsgs = 0
ipchangedelay = 60000
iptomacenable = 1
connectioncleanupdelay = 300000
remotecontrolenabled = 0
remotecontroludpport = 2504
remotecontrolcode = 0x0
remotemaintenanceenabled = 0x0
currentversion = v2.3
installdate = 0x3b1b3097
verifydate = 0x5be18412
numberofrules = 1
portrules
start end prot mode pri load affinity
0 65535 both multiple 70 n
00000000 0000ffff 2ffff000 00000002 00000003 00000001 00000000 00000046
=== event messages: ===
#48 id: 0x4007001c type: 4 category: 0 time: fri nov 09 16:47:20 2001
wlbs : 主机 2 已跟作为群集一部分的主机 1,2 会集。
00140000 00620004 00000000 4007001c 00000000 00000000 00000000 00000000
00000000 00000000 00060c12 00000000 00000000 00000000 00000000
#46 id: 0x40070005 type: 4 category: 0 time: fri nov 09 16:47:14 2001
wlbs : 群集模式用主机 id 2 启动。
00140000 00620004 00000000 40070005 00000000 00000000 00000000 00000000
00000000 00000000 00050f89 00000000 00000000 00000000 00000000
=== ip configuration: ===
windows 2000 ip configuration
host name . . . . . . . . . . . . : bjum-fea
primary dns suffix . . . . . . . : ums.local
node type . . . . . . . . . . . . : hybrid
ip routing enabled. . . . . . . . : no
wins proxy enabled. . . . . . . . : no
dns suffix search list. . . . . . : ums.local
ethernet adapter 本地连接:
connection-specific dns suffix . :
description . . . . . . . . . . . : realtek rtl8139(a) pci fast ethernet adapter
physical address. . . . . . . . . : 00-50-fc-47-55-f5
dhcp enabled. . . . . . . . . . . : no
ip address. . . . . . . . . . . . : 172.16.1.1
subnet mask . . . . . . . . . . . : 255.255.0.0
ip address. . . . . . . . . . . . : 172.16.1.21
subnet mask . . . . . . . . . . . : 255.255.0.0
default gateway . . . . . . . . . :
dns servers . . . . . . . . . . . : 172.16.1.16
172.16.1.17
=== current state: ===
 


作为群集的一部分,主机 2 已与下列主机会合:
1, 2
另外,为了测试群集中主机在承担web服务器时的压力适应情况,即在很高的点击率下是否仍能工作正常,我们可以用微软公司的免费测试工具webstress tool(http://webtool.rte.microsoft.com/download/x86/setup.exe)及windows本身自带的性能监视器工具来进行测试。
在客户机上使用webstress工具模拟很大的点击率,发送请求到群集的主ip地址(具体使用方法与本文无关,可参阅微软有关文档)。在各群集主机上利用性能监视器监视本机相关参数的变化情况,如cpu利用情况、每秒钟put和post请求数情况等。通过对这些参数变化情况的分析,可以了解群集主机的负荷量分配情况以及硬件的使用情况,从而更好的分配群集的负载。
需要注意的是,在使用webstress工具进行压力测试时,应该在群集各主机的端口规则设置中将仿射性设置为"无",否则从该主机ip地址发送到群集的所有请求将只会被一台群集主机处理,而不会分配到所有的群集主机上,这是由于群集的缺省配置"单一"所造成的。详情可参见前文"网络载量平衡工作原理"中的有关"端口规则"的说明。
应用网络载量平衡的注意事项

在配置及使用网络载量平衡的过程中,有许多应该注意的问题,如果配置不当,将会影响网络载量平衡的使用甚至导致配置失败。现将这些问题给出如下:
1.如果可能,在每个群集主机上使用两个或更多的网卡。第二个网卡可提高整个网络的性能并加速对后台数据库的访问。
2.同样,如果群集在单播模式(默认模式)下运行,群集主机之间的普通网络通信只有每个群集主机至少具有两个网卡时才能进行。
3.如果使用了第二个网卡,必须保证只在一个适配器(称为群集适配器)上安装了网络载量平衡。
4.tcp/ip 是群集适配器上的唯一网络协议。不能将任何其他协议(例如,ipx)添加到该适配器中。
5.确保群集参数和端口规则在所有群集主机上设置相同。
6.确保主机参数对每个群集主机都是唯一的。
7.确保进行载量平衡的应用程序使用的所有端口(例如,ftp 使用了端口 20、端口 21、端口 1024-65535)设置了端口规则。
8.在设置完端口规则后单击"添加"按钮。否则,端口规则将不会在规则列表中显示,而且规则也不会生效。
9.确保给定的进行载量平衡的任何应用程序在所有已安装了这些程序的群集主机上均已启动。网络载量平衡不启动程序。
10.安装时在"网络平衡属性"对话框中输入的专用 ip 地址和群集的 ip 地址必须也在"internet 协议(tcp/ip)属性"对话框中输入。确保在这两个地方的地址相同。
11.确保专用的 ip 地址在"internet 协议(tcp/ip)属性"对话框总是列在最前(在群集 ip 地址前)。
12.专用 ip 地址和群集 ip 地址必须是静态 ip 地址。而不能是 dhcp 地址。
13.确保群集中的所有主机属于同一个子网并且群集的客户机能够访问该子网。
14.确保所有的群集主机要么运行于单播模式,要么运行于多播模式,而不是在两种模式下运行。
 
评论Feed 评论Feed: http://blog.xg98.com/feed.asp?q=comment&id=57

这篇日志没有评论。

此日志不可发表评论。