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

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

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

网络负载平衡(NLB)是Microsoft在所有 Windows 2000 Server、Windows Server 2003、Windows Server 2008和Windows Server 2008 R2 操作系统上提供的一种负载平衡技术。网络负载平衡(NLB)是将网络连接客户与服务器应用分布在同一个NLB群集内的多个服务器上。NLB允许添加额外的服务器,因此具备了可扩展性。此外NBL允许用户替换运行不良的服务器,从而确保了可靠性。NBL对于需要将多个客户请求分布在一组服务器上的企业来说至关重要。特别是它能够确保运行在互联网信息服务(IIS)上的基于Web的应用,可通过添加额外的服务器增加工作负载量而使应用获得扩展。

网络负载平衡(NLB)包括以下功能:

² 可伸缩性

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

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

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

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

——支持在负载增加时,能够在不关闭群集的情况下向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网络堆栈是透明的。

上图显示了在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 个成员时,扩展因子会显著偏离了线性扩展。如下图所示

² 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 7、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

Windows NLB搭配IIS的ARR搭建高可用环境(转载)的更多相关文章

  1. 搭建高可用mongodb集群(三)—— 深入副本集内部机制

    在上一篇文章<搭建高可用mongodb集群(二)—— 副本集> 介绍了副本集的配置,这篇文章深入研究一下副本集的内部机制.还是带着副本集的问题来看吧! 副本集故障转移,主节点是如何选举的? ...

  2. 搭建高可用mongodb集群—— 分片

    从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的时候能否做到自动扩展? 在系统早期,数据量还小的时候不会引起太大的问题,但是随着数据量持续增多,后续迟早会出 ...

  3. 使用Spring Cloud搭建高可用服务注册中心

    我们需要的,不仅仅是一个服务注册中心而已,而是一个高可用服务注册中心. 上篇博客[使用Spring Cloud搭建服务注册中心]中我们介绍了如何使用Spring Cloud搭建一个服务注册中心,但是搭 ...

  4. 搭建高可用的Redis服务,需要注意这些方面!

    搭建高可用的Redis服务,需要注意这些方面! HorstXu 占小狼的博客 今天 ◎作者 | HorstXu www.cnblogs.com/xuning/p/8464625.html 基于内存的R ...

  5. 使用SpringCloud搭建高可用服务注册中心

    我们需要的,不仅仅是一个服务注册中心而已,而是一个高可用服务注册中心. 上篇博客中我们介绍了如何使用Spring Cloud搭建一个服务注册中心,但是搭建好的服务注册中心是一个单节点的服务注册中心,这 ...

  6. 搭建高可用mongodb集群(三)—— 深入副本集内部机制

    在上一篇文章<搭建高可用mongodb集群(二)-- 副本集> 介绍了副本集的配置,这篇文章深入研究一下副本集的内部机制.还是带着副本集的问题来看吧! 副本集故障转移,主节点是如何选举的? ...

  7. 搭建高可用的Eureka注册中心

    搭建高可用的Eureka注册中心 一.搭建高可用的Eureka的作用 当服务器因种种原因导致Eureka注册中心(后面简称Eureka)服务当机(服务器跪了,异常关闭停止服务).这样就会影响到整个业务 ...

  8. 搭建高可用服务注册中心-Spring Cloud学习第一天(非原创)

    文章大纲 一.Spring Cloud基础知识介绍二.创建单一的服务注册中心三.创建一个服务提供者四.搭建高可用服务注册中心五.项目源码与参考资料下载六.参考文章   一.Spring Cloud基础 ...

  9. 搭建高可用mongodb集群(四)—— 分片(经典)

    转自:http://www.lanceyan.com/tech/arch/mongodb_shard1.html 按照上一节中<搭建高可用mongodb集群(三)-- 深入副本集>搭建后还 ...

随机推荐

  1. VirtualBox 桥接

    1.设置Virtual box,取消DHCP服务 管理->全局设定->网络->Host-Only->网络明细->DHCP服务器->启用服务器选项取消 2.宿机设置 ...

  2. Java微信公众平台开发(九)--关键字回复以及客服接口实现(该公众号暂时无法提供服务解决方案)

    转自:http://www.cuiyongzhi.com/post/47.html 我们在微信公众号的后台可以发现微信给我们制定了两种模式,一种是开发者模式(也就是我们一直在做的开发),还有一种模式是 ...

  3. Oracle11g-BBED安装

    oracle 11g中缺bbed包 下载地址: https://pan.baidu.com/s/19DVvIajarDjnynILNwQDWQ 密码:tmqt 1.BBED的安装 1.上传(sbbdp ...

  4. 电商模式O2O、C2C、B2B、B2C

    电商模式O2O.C2C.B2B.B2C o2o o2o 是 online to offline 分为四种运营模式 1.online to offline 是线上交易到线下消费体验 2.offline ...

  5. 一篇文章让你了解并掌握memcached

    第一章 memcached简介 1.1为什么引入memcached 随着数据量的增大,访问的集中,REBMS负担加重,数据库响应恶化. Memcached是高性能的分布式内存缓存服务器,目的是通过缓存 ...

  6. dom方式解析xml文件的步骤

    使用java类即可

  7. 安装oracle xe一些注意点

    主要是web管理数据的的端口8080端口的问题, 会和tomcat冲突 安装时把开启8080端口的tomcat启动了 占用8080端口就行了, 然后安装oracle xe就会让你输入 web管理数据的 ...

  8. sqlplus客户端 navicat 使用sqlplus OCI

    链接:http://pan.baidu.com/s/1i5otsUT 密码:cbux 解压后放到某个目录下 这是我的 sqlplus客户端出现乱码 - 一支小白 - 博客园  http://www.c ...

  9. ionic中的后退方法

    1)$ionicHistory.goBack(); 2)$ionicNavBarDelegate.back(); 个人感觉: 1)$ionicHistory.goBack()会按照html历史来后退 ...

  10. SSL认证

    SSL认证 单向认证 1.发一串消息个对方 2.对方用私钥加密后返回 3.本方用对方的公钥解密,验证消息是否正确, 如果消息相同,则本方认可对方 双向认证 本方认证对方 对方认证本方