Windows NLB搭配IIS的ARR搭建高可用环境(转载)

原文地址:http://www.cnblogs.com/shanyou/archive/2010/04/28/1723276.htmlhtml

在现行的许多网络应用中,有时一台服务器每每不能知足客户端的要求,那么有没有什么办法解决服务器的高可伸缩性、高可用、高可靠性和高性能,提高服务器的SLA? 使用Windows Server 2008/R2中的网络负载平衡(Network Load Balancing,如下简称NLB)和IIS 7的ARP模块就是解决这个问题的方法。web

首先解释一下群集,群集是指一组服务器,经过彼此的协同做业,提供一个相同的服务或应用程序,用于提高服务或应用程序的可用性(availability)、可靠性(reliability)和可扩展性(scalability)。当群集内的服务器down掉之后,服务请求会转给其它群集内的节点,以实现24小时不中断的服务shell

网络负载平衡(NLB)是Microsoft在全部 Windows 2000 Server、Windows Server 200三、Windows Server 2008和Windows Server 2008 R2 操做系统上提供的一种负载平衡技术。网络负载平衡(NLB)是将网络链接客户与服务器应用分布在同一个NLB群集内的多个服务器上。NLB容许添加额外的服务器,所以具有了可扩展性。此外NBL容许用户替换运行不良的服务器,从而确保了可靠性。NBL对于须要将多个客户请求分布在一组服务器上的企业来讲相当重要。特别是它可以确保运行在互联网信息服务(IIS)上的基于Web的应用,可经过添加额外的服务器增长工做负载量而使应用得到扩展。缓存

网络负载平衡(NLB)包括如下功能:服务器

² 可伸缩性网络

可伸缩性是度量计算机、服务或应用程序如何更好地改进以知足持续增加的性能需求的标准。对于NLB群集而言,可伸缩性是指当群集的所有负载超过其能力时逐步将一个或多个系统添加到现有群集中的功能。下表详细介绍了NLB的可伸缩性功能:架构

——平衡NLB群集上对各个TCP/IP服务的负载请求app

——在一个群集中最多支持32台计算机负载均衡

——平衡群集中多个主机之间的多个服务器负载请求(来自同一个客户端或者来自几个客户端)asp.net

——支持在负载增长时,可以在不关闭群集的状况下向NLB群集中添加主机

——支持在负载下降时,可以从群集中删除主机

——经过所有实现管道化提升性能并下降开销。管道容许向NLB群集发送请求,而无需等待响应上一个发送的请求

² 高可用性

经过最大程度地减小停机时间,高可用系统可以可靠地提供可接受级别的服务。NLB包括一些内置功能,能够经过自动执行如下操做来提供高可用性:

——检测发生故障或脱机的群集主机并对其进行恢复。

——在添加或删除主机时平衡网络负载。

——在十秒以内恢复并从新分发负载。

² 可管理性

NLB提供如下可管理性功能:

——使用NLB管理器,能够从单个计算机管理和配置多个NLB群集和群集主机。

——使用端口管理规则,能够为单个IP端口或一组端口指定负载平衡行为。

——能够为每一个网站定义不一样的端口规则。若是您对多个应用程序或网站使用相同的一组负载平衡服务器,则端口规则基于目标虚拟IP地址(使用虚拟群集)。

——使用可选的单主机规则,能够将全部客户端请求引导至单个主机。NLB将客户端请求路由到运行特定应用程序的特定主机。

——能够阻止对某些IP端口进行不须要的网络访问。

——能够在群集主机上启用Internet 组管理协议(IGMP)支持,以控制交换机广播(在多播模式中操做时)。

——使用shell命令或脚本,能够从运行Windows的任何联网计算机上远程启动、中止和控制NLB操做。

——能够查看Windows事件日志以检查NLB事件。NLB在事件日志中记录全部操做和群集更改。

² 易用性

NLB提供了许多便于使用的功能:

——能够做为标准的Windows网络驱动程序组件安装NLB。

——NLB不须要更改任何硬件便可启用和运行。

——使用NLB管理器能够新建NLB群集。

——使用NLB管理器,能够从一台远程或本地计算机上配置和管理多个群集以及群集的全部主机。

——NLB容许客户端使用单个逻辑Internet名称和虚拟IP地址(称为群集IP地址,它保留每台计算机的各个名称)访问群集。NLB容许多宿主服务器具备多个虚拟IP地址。

注:若是是虚拟群集,则不须要服务器是多宿主服务器便可具备多个虚拟IP地址。

——能够将NLB绑定到多个网络适配器,这样您即可以在每一个主机上配置多个独立的群集。支持多个网络适配器与虚拟群集不一样,由于虚拟群集容许您在单个网络适配器上配置多个群集。

² NLB配置

NLB做为Windows网络驱动程序运行。它的操做对于TCP/IP网络堆栈是透明的。

image

上图显示了在NLB主机的典型配置中,NLB和其余软件组件之间的关系。

——不须要修改服务器应用程序便可在NLB群集中运行。

——若是群集主机出现故障而且后来又恢复联机,则能够将NLB配置为自动将该主机添加到群集。以后,添加的主机将可以开始处理来自客户端的新的服务器请求。

——能够在不打扰其余主机上群集操做的状况下使计算机脱机进行预防性的维护。

Windows Server 2008 R2 中的网络负载平衡的功能,为了支持更多的用户同时使用。 Windows Server 2008 R2 中的网络负载平衡的功能改进包括:

1. 更好的支持应用程序和服务的持久链接

在网络负载平衡 IP 粘性功能容许您配置客户端与群集节点之间长链接。 默认状况下,网络负载平衡每一个请求分布在群集中的节点。某些应用程序例如购物的购物车应用程序的服务须要一个将保持与特定群集节点持久链接。

2. 改进对应用程序和服务的健康监测

在Windows Server 2008 R2网络负载平衡管理包容许您监视应用程序和在网络负载平衡群集中运行的服务的运行情况。

3. 支持下一代 TCP/IP

Windows Server 2008 R2 支持Internet 协议版本 4 (IPv4) 和 Internet 协议版本 6 (IPv6)。 NLB 支持IPv4同时 彻底支持IPv6的全部通讯。

4. 多个 IP 地址支持

如今,在 NLB 群集中的每一个节点有多个专用的 IP 地址。

5. Microsoft ISA Server 集成

Microsoft ISA Server支持混合IPv4 和 IPv6 基础结构的网络环境的客户端经过Microsoft ISA Server访问每个NLB节点。 ISA Server 还能够提供入侵检测服务,以保护您的 NLB 群集。

网络负载平衡的缺点

² NLB集群自己会消耗掉一部分CPU资源,所以实际应用中并非集群节点越多性能越好。MS官方有提供这样一份测试报告,模拟web 客户端从群集中下载了 10 KB 的静态 web 页。在群集大小超过 8 到 10 个成员时,扩展因子会显著偏离了线性扩展。以下图所示

image

image

² NLB只能检测到服务器的状态,没法检测到应用程序的状态,假如某节点服务器的IIS不可用,但客户依然会被分配到该节点服务器,从而致使请求失败。要解决应用层面的问题,须要使用IIS 7的Application Request Routing(如下简称ARR),经过监控应用程序状态,反向控制节点服务器。同时NLB能够为IIS 7的ARR模块提供高可用性。

ARR简单的说就是一个IIS7的负载均衡模块,能够一次管理多个IIS 6/7的服务器集群,规则基于URL,或者基于HOST NAME,或者基于HTTP HEADER。微软的Application Request Routing(ARR) 2.0使得Web管理员,虚拟主机提供商,内容分发网络(CDN)经过基于规则路由,机器名匹配,HTTP请求的负载均衡和分布式磁盘缓存来提升Web应用程序的的可扩展性和可靠性。有了ARR技术,管理员能够优化资源以及应用服务器的管理成本。

² 负载均衡能够有效的提升资源的利用率

使用ARR,管理员能够建立强大的基于规则的URL,HTTP HEADERS 变量,并决定最合适的WEB应用服务器。ARR在应用层进行路由选择,并能够在其上加上BIG IP 5这类硬件负载均衡器或者是Windows 负载均衡技术,进行三层架构路由。典型的几种方式:使用ARR,管理员能够将*.aspx路由到一个独立应用服务器上。

² 使用标准的IIS MANAGER更容易管理多个WEB FARMS

ARR给予管理员,建立、管理、应用LOAD BALANCING(负载均衡)规则的能力,管理员能够需求轻松地添加一个服务器到WEB FARMS里去,ARR同时包含了对每台单独的服务器实时流量、URL测试的监视能力。管理员这时有能力在IIS 7的MANAGER中查看WEB FARMS中每一个服务器的统计信息。

² 优化带宽的使用和经过缓存扩展服务器的能力

ARR能够在磁盘上缓存任何通过服务器的HTTP通讯。 经过结合磁盘缓存连同层次化的IIS网站运行ARR的IIS web服务器,CDN和层次化服务器的能力能够大大下降到达源服务器的网络流量。

具体的配置文档这里就再也不详细罗列,只给出IIS.NET上的文档连接。主要的配置步骤:

步骤1:按照这篇文档Install Application Request Routing安装ARR v2,重启服务器后接着完成后续的步骤。

步骤2:按照这篇文档Achieving High Availability and Scalability - ARR and NLB配置你的ARR Server Farm. 这里还有一个以F5的配置文档Achieving High Availability and Scalability - ARR and Hardware Load Balancer

应用程序具备扩展性还要求应用程序的架构上支持,对于ASP.NET的应用程序来讲,主要是要解决两个问题ASP.NET Session State和ASP.NET Cache,这个在Windows Server AppFabric里头有很好地解决方案。能够参看文章Windows Server AppFabric Beta 2 for For Vistual Studio 2010已经发布WizardWu有篇博文用 IIS 七、ARR 與 Velocity 建设高性能的大型网站 供参考。

本文的PDF版本:http://cid-33478a966734670f.skydrive.live.com/self.aspx/.Public/%e9%ab%98%e5%8f%af%e7%94%a8%e6%80%a7/Windows%20NLB%e6%90%ad%e9%85%8dIIS%e7%9a%84ARR%e6%90%ad%e5%bb%ba%e9%ab%98%e5%8f%af%e7%94%a8%e7%8e%af%e5%a2%83.pdf

下载:

ARR v2 x86: http://download.microsoft.com/download/4/D/F/4DFDA851-515F-474E-BA7A-5802B3C95101/ARRv2_setup_x86.EXE

ARR v2 x64: http://download.microsoft.com/download/3/4/1/3415F3F9-5698-44FE-A072-D4AF09728390/ARRv2_setup_x64.EXE

 

使用IIS ARR (Application Request Routing) 來作Exchange 2010的負載平衡器

Part 1: Reverse Proxy for Exchange Server 2013 using IIS ARR

Web farms in .NET and IIS using Web Farm Framework 2.2 part 1: how to set up a webfarm using WFF

Web farms in .NET and IIS using Web Farm Framework 2.2 part 2: provisioning a server farm

Web farms in .NET and IIS using Web Farm Framework 2.2 part 3: deployment and tests

Configure IIS ARR as a reverse-proxy replacement for TMG

Does IIS with ARR support fully transparent reverse proxy?

http://weblogs.asp.net/owscott/archive/tags/ARR/default.aspx

相关文章
相关标签/搜索