WindowsServer2008R2 NLB详细解html
群集是指一组服务器,经过彼此的协同做业,提供一个相同的服务或应用程序,用于提高服务或应用程序的可用性(availability)、可靠性(reliability)和可扩展性(scalability)。当群集内的服务器down掉之后,服务请求会转给其它群集内的节点,以实现24小时不中断的服务web
Windows server 支持三种类型的群集,分别是NLB、CLB和MSCS。NLB与MSCS内置于windows server中,CLB须要购买Application Center算法
1) NLB (Network Load Balancing,网络负载平衡):提供以TCP/IP 为基础的服务与应用程序的网络流量负载均衡,用于提高系统的可用性和可扩展性。常见的应用有Terminal Service、Web、×××与FTP等。shell
2) CLB:提供使用COM+组件的中介层应用程序的动态负载均衡,用于提高系统的可用性和延展性。CLB会依据目前的工做负载来决定由谁来处理服务请求。windows
3) MSCS:提供后端服务与应用程序的容错移转(failover),主要是提高系统的可用性。常见的应用有SQL Server与Exchange Server等。MSCS是由client来决定由谁来处理服务请求,全部服务器共享一个share storage来储存session状态。当主动服务器挂了,则继续由被动服务器接手。被动服务器会从share storage取出session状态,继续未完成的工做,以达到容错移转的目的后端
NLB 群集用一个群集 IP 地址指定群集中全部服务器的地址,而且它还为每一个主机保留一组惟一专用的 IP 地址。对于负载平衡的应用程序,当主机出现故障或者脱机时,会自动在仍然运行的计算机之间从新分发负载。当计算机意外出现故障或者脱机时,将断开与出现故障或脱机的服务器之间的活动链接。可是,若是您有意关闭主机,则能够在使计算机脱机以前,使用 drainstop 命令处理全部活动的链接。任何一种状况下,均可以在准备好时将脱机计算机明确地从新加入群集,并从新共享群集负载,以便使群集中的其余计算机处理更少的流量。服务器
NLB 群集中的主机会交换检测消息以保持有关群集成员身份的数据的一致性。默认状况下,当主机在五秒以内未能发送检测消息时,该主机便出现了故障。当主机出现故障时,群集中的剩余主机将聚合在一块儿并执行如下操做:网络
1) 肯定哪些主机仍然是群集中的活动成员。session
2) 选择优先级最高的主机做为新的默认主机。负载均衡
3) 确保全部新的客户端请求都由仍然活动的主机进行处理。
在聚合期间,仍然活动的主机会查找一致的检测信号。若是没法发送检测信号的主机开始提供一致的检测信号,则它会在聚合过程当中从新加入群集。当新的主机尝试加入群集时,它会发送检测消息,该消息也会触发聚合。当全部群集主机对当前的群集成员身份达成一致以后,会向剩余主机从新分发客户端负载,并完成聚合。一般聚合只需几秒钟,所以由群集中断的客户端服务是很是少的。在聚合期间,仍然活动的主机会继续处理客户端请求,而不会影响现有链接。若是全部主机在几个检测期间报告的群集成员身份和分发映射都一致,则聚合结束。
以下图
节点A B C均有一个外部使用的静态IP地址,建立NLB群集时会产生一个虚拟的IP,该IP与节点的IP在同一个网段内,对外公布的 IP为虚拟的群集IP,而客户机所访问群集虚拟IP时实际上在访问节点A或者节点B或者节点C,具体哪台主机相应请求由NLB算法决定。
对于Windows Server 2008, NLB包括如下改进:
1) 支持IPv6。NLB对全部通讯都彻底支持IPv6。全部NLB组件都支持IPv6地 址,而且能够将这些地址配置为主要群集IP地址、专用IP地址和虚拟IP地址。 此外,还能够做为纯IPv6以及在IPv6 over IPv4模式下对IPv6进行负载平衡。
2) 支持NDIS6.0。NLB驱动程序使用NDIS6.0轻型筛选模型。NDIS6.0保持与 早期NDIS版本的向后兼容性。NDIS 6.0的设计包括加强的驱动程序性能和可伸 缩性以及简化的NDIS驱动程序模型。
3) WMI加强。MicrosoftNLB命名空间添加了对IPv6的多个专用IP地址支持,它 们包括:
MicrosoftNLB命名空间中的类支持IPv6地址(除了 IPv4地址以外)。
MicrosoftNLB_NodeSetting类支持多个专用的IP地址,方法是在 Dedicated!PAddresses 和 DedicatedNetMasks 中指定这些地址。
4) 改进了拒绝服务(DoS)***和计时器饥饿保护。使用回调接口,NLB能够在攻 击期间或者节点负载太高时检测并通知应用程序。当群集节点过载或者受到*** 时,ISA服务器使用该功能。
5) 支持每一个节点使用多个专用IP地址。NLB彻底支持为每一个节点定义多个专用IP 地址。之前只支持每一个节点使用一个专用IP地址。当客户端由IPv4和IPv6通 讯组成时,ISA服务器可使用该功能来管理每一个NLB节点。
6) 支持滚动升级。NLB 支持从 Windows Server2003 到 Windows Server2008 的 滚动升级。有关NLB的部署信息(包括有关滚动升级的信息),请参阅 http://go.microsoft.com/fwlink/?Linkld=87253o
7) 经过网络负载平衡管理器综合管理。再也不须要使用网络链接工具配置NLB群集, 只需经过Windows Server2008中的NLB管理器便可执行NLB群集配置。这 样即可以最大程度地减小可能因群集主机之间设置不一致引发的NLB配置问题。
可伸缩性是度量计算机、服务或应用程序如何更好地改进以知足持续增加的性能需求的 标准。对于NLB群集而言,可伸缩性是指当群集的所有负载超过其能力时逐步将一个或多 个系统添加到现有群集中的功能。下表详细介绍了 NLB的可伸缩×××:
1) 平衡NLB群集上对各个TCP/IP服务的负载请求
2) 在一个群集中最多支持32台计算机
3) 平衡群集中多个主机之间的多个服务器负载请求(来自同一个客户端或者来自几个 客户端)
4) 支持在负载增长时,可以在不关闭群集的状况下向NLB群集中添加主机
5) 支持在负载下降时,可以从群集中删除主机
6) 经过所有实现管道化提升性能并下降开销。管道容许向NLB群集发送请求,而无 需等待响应上一个发送的请求
经过最大程度地减小停机时间,高可用系统可以可靠地提供可接受级别的服务。NLB包 括一些内置功能,能够经过自动执行如下操做来提供高可用性:
1) 检测发生故障或脱机的群集主机并对其进行恢复。
2) 在添加或删除主机时平衡网络负载。
3) 在十秒以内恢复并从新分发负载。
NLB提供如下可管理×××:
1) 使用NLB管理器,能够从单个计算机管理和配置多个NLB群集和群集主机。
2) 使用端口管理规则,能够为单个IP端口或一组端口指定负载平衡行为。
3) 能够为每一个网站定义不一样的端口规则。若是您对多个应用程序或网站使用相同的一 组负载平衡服务器,则端口规则基于目标虚拟IP地址(使用虚拟群集)。
4) 使用可选的单主机规则,能够将全部客户端请求引导至单个主机。NLB将客户端 请求路由到运行特定应用程序的特定主机。
5) 能够阻止对某些IP端口进行不须要的网络访问。
6) 能够在群集主机上启用Internet组管理协议(IGMP)支持,以控制交换机广播
7) (在多播模式中操做时)。
8) 使用shell命令或脚本,能够从运行Windows的任何联网计算机上远程启动、 中止和控制NLB操做。
9) 能够查看Windows事件日志以检查NLB事件。NLB在事件日志中记录全部操 做和群集更改。
NLB提供了许多便于使用的功能:
1) 能够做为标准的Windows网络驱动程序组件安装NLB。
2) NLB不须要更改任何硬件便可启用和运行。
3) 使用NLB管理器能够新建NLB群集。
4) 使用NLB管理器,能够从一台远程或本地计算机上配置和管理多个群集以及群集 的全部主机。
5) NLB容许客户端使用单个逻辑Internet名称和虚拟IP地址(称为群集IP地 址,它保留每台计算机的各个名称)访问群集。NLB容许多宿主服务器具备多个 虚拟IP地址。注意,若是是虚拟群集,则不须要服务器是多宿主服务器便可具备 多个虚拟IP地址。
6) 能够将NLB绑定到多个网络适配器,这样您即可以在每一个主机上配置多个独立的 群集。支持多个网络适配器与虚拟群集不一样,由于虚拟群集容许您在单个网络适配 器上配置多个群集。
7) 不须要修改服务器应用程序便可在NLB群集中运行。
8) 若是群集主机出现故障而且后来又恢复联机,则能够将NLB配置为自动将该主机 添加到群集。以后,添加的主机将可以开始处理来自客户端的新的服务器请求。
9) 能够在不打扰其余主机上群集操做的状况下使计算机脱机进行预防性的维护。
若是NLB群集中的服务器成员有变更,如服务器故障、服务器脱离群集或增长新服务 器,则NLB会启动一个称为聚合(convergence)的程序,以便让NLB集群中的全部服务 器保持一致的状态并生新分配工做任务。
例如,NLB群集中的服务器会随时监听其余服务器的心跳状态,以便检测是否有其余 服务器出现故障。如有服务器出现故障,检测到此情况的服务器便会启动聚合程序,在聚合 程序运行时,现有正常的服务器仍然会继续服务,同时正在处理中的请求也不会受到影响, 当完成聚合程序后,全部链接web farm网站的请求,会从新分配给剩下仍正常的web服务 器来负责。
类似性用于定义源主机与NLB群集成员之间的关系。好比,若是群集中有3台web服 务器,当外部主机(源主机)要链接web farm时,此请求应由web farm中的哪一台服务
器来负责处理?是由NLB提供的3种类似来决定的。
1) 无(none):此时NLB是根据源主机的IP地址与端口,将请求分配给其中一台服 务器处理,群集中每一台服务器都有一个主机ID (host ID),而NLB根据源主机 的IP地址与链接端口计算出来的哈希值(hash)与主机ID有关联性,所以NLB 群集会根据哈希值将此请求发给拥有主机ID的服务器负责处理。由于它同时根据 源主机的IP地下与端口将请求分配给其中一台服务器处理,所以同一台外部主机 提出的多个链接web farm请求(源主机的IP地址相同、TCP端口不一样),可能会 分别由不一样的web服务器来负责。
2) 单一(single):此时NLB仅根据源主机的IP地址将请求分配给其中一台web服 务器处理,所以同一台外部主机提出的全部链接web farm请求,都会由同一台服 务器来负责处理。
3) Class C:它是根据源主机的IP地址中最高3个字节,将请求分配给其中一台web 服务器处理。也就是IP地址中最高3个字节相同的全部外部主机,它所提出的连 接web farm请求都会由同一台web服务器负责。好比,63.11.11.1~63.11.11.254的外部主机的请求,都会由同一台web服务器来负责处理。虽然,NLB默认是经过类似性将客户端的请求分配给其中一台服务器来负责处理,但 能够另外经过端口规则来更改类似性。好比,能够在端口规则中将特定流量指定由优先级较 高的一台服务器来负责处理,系统默认的端口规则包括全部流量。且会依照设置的类似性将 客户端的请求分配给某台服务器来负责处理,也就是全部流量都具有网络负载平衡与容错功 倉巨。
在生产环境中推荐使用硬件的NLB设备,后台数据存放到独立的存储设备,例如:
使用防火墙的发行规则来实现NLB效果,例如ISA防火期;ISA Server接收到外部链接内部网站的请求时, 它会根据发行规则的设置,将此请求转交给web farm中的一台web服务器处理。ISA Server 也具有自动检测web服务器是否中止服务的功能,所以它只会将请求转给仍然正常运行的 web服务器,不会转给已中止服务的web服务器。
或者使用专门的NLB硬件设备,例如F5;使用统一的存储例如SAN/NAS等,保证用户访问数据的统一性;
或者使用文件服务器作为数据服务器,用DFS(分布式文件系统)复制保证数据的统一性,架设多台文件服务器还可保证服务器容错性;
在单播模式下,NLB从新对每一个NLB节点中启用NLB的网络适配器分配MAC地址(此MAC地址称为群集MAC地址),而且全部的NLB节点均使用相同的MAC地址(均使用群集MAC地址),同时NLB修改全部发送的数据包中的源MAC地址(NLB利用MaskSourceMac功能,更改外送数据包的ethernet header中的源mac地址,也就是将群集mac地址中最高第2组字符改成主机id,而后将此修改过的mac地址做为源mac地址),确保使交换机不能将此群集MAC地址绑定在某个端口上。
工做在单播模式下的NLB能够在全部网络环境下正常运行,可是因为它的工做特性,具备如下两个限制:
1) 因为NLB所使用的群集MAC地址没有绑定在某个具体的交换机端口上,因此全部的NLB通信均经过在交换机的全部端口上广播进行,而无论此端口是否链接了NLB节点,这形成了额外的网络流量负担(解决该问题能够经过加入一个hub设备,NLB设备链接hub,hub在连接交换机某个端口,这样这个端口便与群集mac绑定);
2) 因为全部的NLB节点具备相同的MAC地址,NLB节点之间不能经过本身原有的专用IP地址进行通信。
单播模式的优势也很明显:它能够无缝地与大多数路由器和交换机协同工做(解决该问题能够在每一个节点上都加一块网卡,专门用户节点之间互相通信,保证节点数据的统一性)。
以下图所示:
单播的其余注意项:
在Windows server 2003 SP1中,微软修改了NLB单播模式的驱动,从而支持阵列成员经过本身原有的专用IP地址进行通信。
若咱们在NLB建立时选择单播的模式,在“群集IP配置”中的“网络地址”是以“02 - BF”开头,后面紧跟IP地址的十六进制表示,该网络地址与实际主机的MAC地址相同,后续加入的主机也将修改成此MAC地址。
在多播模式下,NLB不会修改NLB节点启用NLB的网络适配器的MAC地址,而是为它再分配一个二层多播MAC地址专用于NLB的通信(此MAC地址称为群集MAC地址),这样NLB节点之间能够经过本身原有的专用IP地址进行通信。
可是在多播模式中,NLB节点发送的针对群集IP地址MAC地址ARP(Address Resolution Protocol,地址解析协议)请求的ARP回复会将群集IP地址映射到多播MAC地址,而许多路由器或者交换机(包括CISCO的产品)会拒绝这一行为。当出现这种状况时,你必须在路由器和交换机上手动添加静态映射,将群集IP地址映射到群集的多播MAC地址。
这种模式的优势是能够经过在交换机的“内容可寻址存储器”(CAM) 表中建立静态项,从而使得入站流量仅到达群集中的主机。
还有一个缺点就是不少路由器不会自动将单播 IP 地址(群集的虚拟 IP 地址)与多播 MAC 地址关联起来。若是进行静态配置的话,一些路由器能够存在这种关联。若咱们在NLB建立时选择多播的模式,在“群集IP配置”中的“网络地址”是以“03 -BF”开头,后面紧跟IP地址的十六进制表示。
以下图所示:
NLB算法须要NLB群集中的全部主机都能看到发往群集的每个数据包。NLB不容许交换机将群集的MAC地址关联到交换机的某个特定端口,从而实现了这个目的。可是,这种作法也会带来不想要的反作用,就是发往NLB群集的全部数据包会在交换机上的全部端口上形成数据“洪水”。这不只很是麻烦,并且必将会形成网络资源的浪费。
为了解决这个问题,一个被称做IGMP支持的新特性被引入到了Windows Server 2003之中。该特性有助于将数据“洪水”限制到交换机上与NLB计算机相链接的端口上。经过这种方式,非NLB的计算机不会看到发往NLB群集的数据,而与此同时,全部的NLB计算机均可以看到发往群集的数据,所以知足了NBL算法的要求。可是,应该指出的是:IGMP支持只有在NLB被配置多播(multicast)模式时才能启用。
在选择多播模式时,后面还有个复选项“IGMP Multicast(IGMP多播)”,若复选此项,就像多播操做模式同样,NLB 保留原厂 MAC 地址不变,可是向网络适配器中增长了一个 IGMP 多播地址。此外,NLB 主机会发出这个组的 IGMP 加入消息。若是交换机探测到这些消息,它可使用所需的多播地址来填充本身的 CAM 表,这样入站流量就不会扩散到 VLAN 上的全部端口。这是这种群集模式的主要优势。缺点是有一些交换机不支持 IGMP 探测。除此以外,路由器仍然支持单播 IP 地址到多播 MAC 地址的转换。在IGMP多播模式下,将采用“01 – 00 - 5E”开头的MAC地址。在多播的模式下,实体主机之间能够互相通讯。
以下图所示:
NLB对路由器的要求
当群集已配置为在多播模式下工做时,若是网络负载平衡客户端正在经过路由器访问一个群集,请确保路由器知足如下要求:
接受地址解析协议 (ARP) 应答,此应答在 ARP 结构的有效负载部分有一个媒体访问控制 (MAC) 地址,但正如以太网报头所肯定的,它看上去像来自具备另外一个 MAC 地址的站点。
接受单播 IP 地址的 ARP 应答,此应答在其 ARP 结构的有效负载部分有一个多播 MAC 地址。
本次试验拓扑以下:
? 节点A和节点B为俩台VmWare虚拟机,系统为WindowsServer2008R2,安装有IIS、NLB;
? 客户端由真机代替系统为Win7;
节点A网络配置
节点A主机名配置
节点B网络配置
节点B主机名配置
节点A与节点B的网络模式
分别在俩台节点角色中添加IIS
IIS安装完成
为了后期测试方便,将俩台节点默认的index.html修改
分别在俩台节点上执行 开始>管理工具>IIS控制台右>击默认网站>浏览;
在弹出的文件夹中,右击iisstart,选择打开方式为记事本;
以下修改,保存,退出;
以一样的方式配置节点B;
分别在俩台节点中在功能中添加网络负载平衡组件
安装成功
在任意一台节点主机上执行点击“开始”>“管理工具”>“网络负载平衡管理器”>右击“网络负载平衡群集”>“新建群集”;
输入本节点主机名(若是没有环境中没有DNS服务器推荐填写节点的IP地址而不填写主机名),单击“连接”;下一步;
在主机参数页面保持默认配置单击下一步;
在弹出的群集IP地址页面,单击“添加”输入群集ip,单击肯定;单击下一步;
在弹出的群集参数页面,填写Internet名称(自定义),选择“多播”单击下一步;
在端口规则页面保持默认,单击完成;
节点B配置完成;
右键刚建好的群集,选择添加主机到群集;
输入节点A的ip地址单击连接,单击下一步 ;
节点A添加完成
测试拓扑以下
将俩台节点的网卡模式调整为nat模式
客户端网络配置(为了不其余因素影响,推荐禁用除vm8之外的网卡);
客户端访问群集IP(能够看到访问到的节点为节点A);
将节点A网卡断开测试
继续访问群集IP(能够看到访问到的节点为节点B)禁用网卡只是为了测试方便,此时节点A与节点B都在运行,能够用一台客户端屡次访问,或者多台客户端访问,能够看到俩台节点都在提供访问请求;
模拟拓扑以下
将真机网卡vm8调整为任意不与10.0同网段ip便可,不然影响测试效果;例如
配置真机网卡vm1ip为192.168.30.18,为保证测试效果,将除vm1和vm8之外其余网卡禁用;
打开GNS3,拓扑连接以下
C1配置以下
路由器配置以下;
R1#conf t
R1(config)#int e0/1
R1(config-if)#ip add 192.168.30.1 255.255.255.0
R1(config-if)#no sh
R1(config-if)#int e0/0
R1(config-if)#ip add 192.168.10.1 255.255.255.0
R1(config-if)#no sh
R1(config-if)#exit
R1(config)#ip routing
此时继续访问群集IP结果以下
此时ping群集ip不通
访问群集ip不能打开网页;
登陆任一群集节点,打开“网络负载平衡管理器“,右击群集,选择”群集属性“;
选择“群集参数“标签,记录下方群集MAC地址:03-bf-c0-a8-0a-0a
路由器配置以下,将群集ip和群集MAC地址作静态映射
R1(config)#arp 192.168.10.10 03bf.c0a8.0a0a arpa
继续测试访问,此时已经能够ping通群集ip地址
访问群集ip地址已经能够访问到网页;
屡次刷新网页,或者能够禁用B节点网卡,或者将B节点宕机;能够看到能够切换到节点A;
其余参考连接
http://www.huawei.com/ecommunity/bbs/10162957.html
本文由 大郭讲堂 测试整理,若是疏漏之处请留言指出,旨在提升文档质量、技术交流;
博客连接 http://daguo.blog.51cto.com/ QQ空间连接http://user.qzone.qq.com/1843472029/main