本文档提供了关于如何将应用程序请求路由(ARR)与硬件负载均衡器一起使用以实现高可用性和可伸缩性的说明性指导。本文采用F5大IP负载均衡器来说明ARR与硬件负载平衡器之间的工作关系。

IIS7.0及以上版本的Microsoft Application Request Routing(ARR)是一个基于代理的路由模块,它基于HTTP报头、服务器变量和负载平衡算法将HTTP请求转发到内容服务器。下图显示了典型的ARR部署:

虽然ARR为内容服务器(Content server)提供了高可用性和可伸缩性,但总体部署并不是高度可用或可伸缩的,因为:

  • ARR是单点失效。

  • 内容服务器(Content server)的可伸缩性受到一个ARR服务器最大容量的限制。

为了克服这些挑战,管理员可以考虑使用多个具有硬件负载均衡器的ARR服务器,例如F5大IP。ARR可以在主动/被动模式下部署,以实现高可用性,也可以在主动/主动模式下实现高可用性和可伸缩性。本白皮书描述了如何将ARR和F5大IP一起部署,以便在实现总体高可用性和可伸缩性的同时启用核心ARR方案。

应用ARP和F5 BIG-IP

ARR是作为IIS之上的一个模块构建的,它的目的是在第7层(应用程序)做出路由决策。更准确地说,ARR依赖另一个IIS模块URL重写来检查传入的HTTP请求头和服务器变量来做出路由决策。根据这种设计,管理员可以根据应用程序级别的信息编写智能路由规则,例如:

  • 主机名(HTTP_HOST):根据主机名将通信量路由到不同的内容服务器。
  • 请求资源(URL):基于文件扩展名,确定请求的资源是用于静态内容还是用于动态内容,并相应地路由请求。
  • 客户端信息(HTTP_USER_Agent):根据浏览器类型和版本,将请求路由到适当的内容服务器

  • 自定义标头(由应用程序设置为Cookie):根据应用程序设置的cookie信息(如用户首选项或用户ID)路由通信量。

以上只是一些例子。有关HTTP头和服务器变量的完整列表,请参阅附录A。

F5 BIG-IP的第3层和第4层的功能赞扬了ARR在基于第7层(如HTTP报头和服务器变量)进行路由决策方面的优势。同时,ARR不为自己提供容错部署特性,必须依靠其他互补技术和解决方案来实现ARR层的高可用性,如下所示:

场景1:基于http的路由和负载平衡

基于HTTP的路由和负载平衡方案支持三层部署体系结构,其中包括:

  • 第1层(Web):提供处理静态内容以及路由和负载平衡到第2层服务器的剩余动态请求的双重目的。
  • 第2层(应用程序):依赖于业务逻辑的过程动态内容。

  • 第3层(数据):存储数据。

下图说明了3层部署:

尽管上面的示例显示了将静态内容与动态内容区分开来的路由规则,但另一个常见的场景是将表示请求与Web服务请求区分开来。

选项1:Active/Passive

在主动/被动模式下,通常有两个ARR服务器,其中一个服务器处理请求,而另一个服务器作为故障转移服务器。如上所述,虽然此配置通过删除单个故障点来实现高可用性,但它并不是一个扩展解决方案,因为内容服务器的总容量受到一个ARR服务器的最大容量的限制。

在此设置中,由于两个ARR服务器的配置方式相同,因此使用了共享配置。F5 BIG-IP被配置为将所有请求路由到主动ARR服务器,并且只在必要时将请求路由到被动ARR服务器。

除了ARR中的主机名关联特性外,不存在两个ARR服务器之间必须共享的运行时状态信息。因此,对于这种情况,无论是在ARR服务器上还是在F5 BIG-IP上都不需要特殊的配置。即使您使用ARR中的服务器关联特性,当F5 BIG-IP将请求路由到以前被动但现在主动的服务器时,也会通过请求头中的cookie向被动服务器提供亲缘关系状态信息。

这个场景在ARR版本1版本中完全支持。

ARR配置

步骤1:

  • 在两个ARR服务器上启用共享配置。按照本文档中的步骤在IIS中设置共享配置。

步骤2:

  • 使用arr配置3层部署架构。按照本文档中的步骤在3层部署体系结构中配置ARR。
  • 在更高层次上,上面的文档描述了:
    • 如何使ARR服务器上的静态内容可用。
    • 如何为静态内容编写URL重写规则,以便直接从ARR服务器为它们服务。
    • 如何为动态内容编写URL重写规则,以便将它们转发到应用程序服务器。

F5 BIG-IP 配置

在这种情况下,所有可用的ARR服务器都被认为是活动的,并且是负载均衡通信量的候选服务器。使用BIG-IP LTM来确定ARR前端的健康和性能,并将流量引导到性能最好的前端。

步骤1:配置ARR服务器池

  • 在“Local Traffic”部分,单击“pool”。然后单击Create按钮创建一个池。
  • 任何唯一的名称都适用于池;这个例子使用ARR_Pool。对于健康监视器,您可以使用定制的HTTP监视器或默认的HTTP监视器。-你可以把负载平衡方法设置为循环。在这个场景中,由于只有一个主动和被动的ARR服务器,所以不使用负载平衡。-一定要启用优先级组激活。这会配置 BIG-IP 以最高优先级的值将流量发送到服务器(s)。当这些服务器(s)不可用时,大ip将流量发送到ARR服务器,并获得下一个最高优先级值。在这个场景中,10.0.1的ARR服务器的优先级值为1,10.0.0.2的优先级值为2。所有的流量将被发送到10.0.2,直到它下降,然后流量将被发送到10.0.1。

步骤2:配置虚拟服务器。

  • 在“本地流量”部分,单击“虚拟服务器”。然后单击Create按钮创建虚拟服务器。
  • 任何唯一的名称都适用于虚拟服务器;示例使用arr_vs.-对于目标,可以使用用户指向浏览器的IP地址。在这种情况下,我们使用。对于服务端口,我们使用‘80’。-对于虚拟服务器类型部分,您有几个选项。因为您依赖于arr来路由,所以可以选择PerformanceHTTP,这是为最佳性能而设计的。-对于默认池,选择在步骤1中创建的池。

  • 此时,您应该能够连接到此VirtualServer,该服务器将被发送到适当的ARR服务器。

备选案文2:积极/活跃在ARR中

在活动/活动模式下,可以有两个或多个ARR服务器。这种配置实现了高可用性和可伸缩性,与仅实现高可用性的活动/传递模式不同。由于多个ARR服务器的配置方式相同,因此使用了共享配置。F5大IP被配置为将传入请求加载到所有可用和健康的ARR服务器,而ARR服务器反过来将请求转发给内容服务器。

如前所述,主机名和内容服务器之间亲合映射的运行时状态信息存储在arr服务器实例中的内存中。为了在多个ARR服务器之间共享此信息,使用Microsoft外部IIS缓存。有关外部缓存的详细信息,请参阅文件。

ARR组态

主动/主动的ARR结构与主动/被动的ARR结构相同。主要区别在于F5是如何配置的。

步骤1:在两个ARR服务器上启用共享配置。

  • 按照下面的步骤要在IIS中设置共享配置的文档。

步骤2:使用arr配置3层部署架构。

  • 按照下面的步骤文档配置ARR在3层部署体系结构中。
  • 在高级别上,上述文件描述:

    • 如何使静态内容在arr服务器上可用。
    • 如何为静态内容编写URL重写规则,以便直接从arr服务器为它们服务。
    • 如何为动态内容编写URL重写规则,以便将它们转发到应用程序服务器。

步骤3:启用和配置外部缓存。

  • 按照下面的步骤文档以启用和配置外部缓存以与arr一起使用。

F5大IP配置

在这种情况下,所有可用的ARR服务器都被认为是活动的,并且是负载均衡通信量的候选服务器。使用大ip ltm来确定arr前端的健康和性能,并将流量引导到性能最好的前端。

步骤1:配置ARR服务器池。

  • 在“本地交通”部分,单击“池”。然后单击Create按钮创建一个池。
  • 任何唯一的名称都适用于池;示例使用arr_Pool。-对于HealthMonitor,您可以使用自定义HTTP监视器或默认HTTP监视器。-由于您有多个ARR服务器来分发通信量,所以需要选择最适合您的需要的负载平衡方法。假设所有arr服务器都具有相似的硬件特性,则动态负载平衡方法(如最快、可观察或预测)将为您提供基于性能的分发。

步骤2:配置虚拟服务器。

  • 在“本地流量”部分,单击“虚拟服务器”。然后单击Create按钮创建虚拟服务器。
  • 任何唯一的名称都适用于虚拟服务器;示例使用arr_vs.-对于目标,可以使用用户指向浏览器的IP地址。在这种情况下,我们使用。对于服务端口,我们使用‘80’。-对于虚拟服务器类型部分,您有几个选项。因为您依赖于arr来路由,所以可以选择PerformanceHTTP,这是为最佳性能而设计的。-对于默认池,选择在步骤1中创建的池。

摘要

在本白皮书中,回顾了两种主要的ARR场景,通过部署多个ARR服务器和使用F5大IP来实现高可用性和可伸缩性。

附录

附录A:用于编写路由决策规则的所有可用HTTP头和服务器变量。

ALL_HTTP ALL_RAW APPL_MD_PATH
APPL_PHYSICAL_PATH CERT_COOKIE CERT_FLAGS
CERT_ISSUER CERT_KEYSIZE CERT_SECRETKEYSIZE
CERT_SERIALNUMBER CERT_SERVER_ISSUER CERT_SERVER_SUBJECT
CERT_SUBJECT CONTENT_LENGTH CONTENT_TYPE
DOCUMENT_ROOT GATEWAY_INTERFACE HTTP_ACCEPT
HTTP_ACCEPT_ENCODING HTTP_ACCEPT_LANGUAGE HTTP_CONNECTION
HTTP_CONTENT_LENGTH HTTP_HOST HTTP_IF_MODIFIED_SINCE
HTTP_IF_NONE_MATCH HTTP_REFERER HTTP_UA_CPU
HTTP_USER_AGENT HTTPS HTTPS_KEYSIZE
HTTPS_SECRETKEYSIZE HTTPS_SERVER_ISSUER HTTPS_SERVER_SUBJECT
INSTANCE_ID INSTANCE_META_PATH LOCAL_ADDR
PATH_INFO PATH_TRANSLATED QUERY_STRING
REMOTE_ADDR REMOTE_HOST REMOTE_PORT
REMOTE_USER REQUEST_FILENAME REQUEST_METHOD
REQUEST_URI SCRIPT_FILENAME SCRIPT_NAME
SERVER_ADDR SERVER_NAME SERVER_PORT
SERVER_PORT_SECURE SERVER_PROTOCOL SERVER_SOFTWARE
URL    
 

windows平台下实现高可用性和可扩展性-ARR和HLB的更多相关文章

  1. Windows平台下利用APM来做负载均衡方案 - 负载均衡(下)

    概述 我们在上一篇Windows平台分布式架构实践 - 负载均衡中讨论了Windows平台下通过NLB(Network Load Balancer) 来实现网站的负载均衡,并且通过压力测试演示了它的效 ...

  2. 【转载】Windows平台下利用APM来做负载均衡方案 - 负载均衡(下)

    概述 我们在上一篇Windows平台分布式架构实践 - 负载均衡中讨论了Windows平台下通过NLB(Network Load Balancer) 来实现网站的负载均衡,并且通过压力测试演示了它的效 ...

  3. windows平台下基于VisualStudio的Clang安装和配置

    LLVM 是一个开源的编译器架构,它已经被成功应用到多个应用领域.Clang是 LLVM 的一个编译器前端,它目前支持 C, C++, Objective-C 以及 Objective-C++ 等编程 ...

  4. Windows平台下的读写锁

    Windows平台下的读写锁简单介绍Windows平台下的读写锁以及实现.背景介绍Windows在Vista 和 Server2008以后才开始提供读写锁API,即SRW系列函数(Initialize ...

  5. [转]Windows平台下安装Hadoop

    1.安装JDK1.6或更高版本 官网下载JDK,安装时注意,最好不要安装到带有空格的路径名下,例如:Programe Files,否则在配置Hadoop的配置文件时会找不到JDK(按相关说法,配置文件 ...

  6. MongoDB学习总结(一) —— Windows平台下安装

    > 基本概念 MongoDB是一个基于分布式文件存储的开源数据库系统,皆在为WEB应用提供可扩展的高性能数据存储解决方案.MongoDB将数据存储为一个文档,数据结构由键值key=>val ...

  7. windows平台下基于QT和OpenCV搭建图像处理平台

        在之前的博客中,已经分别比较详细地阐述了"windows平台下基于VS和OpenCV"以及"Linux平台下基于QT和OpenCV"搭建图像处理框架,并 ...

  8. Windows平台下的内存泄漏检测

    在C/C++中内存泄漏是一个不可避免的问题,很多新手甚至有许多老手也会犯这样的错误,下面说明一下在windows平台下如何检测内存泄漏. 在windows平台下内存泄漏检测的原理大致如下. 1. 在分 ...

  9. 不同WINDOWS平台下磁盘逻辑扇区的直接读写

    不同WINDOWS平台下磁盘逻辑扇区的直接读写 关键字:VWIN32.中断.DeviceIoControl 一.概述 在DOS操作系统下,通过BIOS的INT13.DOS的INT25(绝对读).INT ...

随机推荐

  1. MyBatis源码解析(二)——Environment环境

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6625612.html 本应该先开始说Configuration配置类的,但是这个类有点过于 ...

  2. SQLite与FMDB使用中区别

    前几篇已经写完了SQLite与FMDB的基本内容以及衍生出来的知识点,我们这一篇主要讲述FMDB与SQLite在基本使用中的区别,大约需要5-10分钟时间讲述内容,欢迎大家指正. 基本使用区别 1.数 ...

  3. c# 怎么读取web.config中的配置项

    ConfigurationManager.AppSettings["templateId"]

  4. BurpSuiteProxy安装使用

    第一步先安装jdk    https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html  ...

  5. T-SQL:SQL语句处理顺序的坑(四)

    首先看下面一条比较完成语句,都是比较常见的关键字. USE Temp; SELECT empid, YEAR(orderdate) AS orderyear, COUNT(*) AS numorder ...

  6. 兼容发布&小流量概述

    背景 re消息limit上线之前有这样的问题: 1.存量用户,会感知到新功能: 2.后端.前端上线间隔期间,如果没做兼容,涉及到接口数据格式变更,会导致C端拉取数据报错: 3.改模板配置,会导致老信息 ...

  7. Java垃圾回收器的工作原理

    上课,老师照本宣科,实在难以理解,干脆就看书包里的Java书,正好看了Java的垃圾回收器是如何工作的,觉得有必要记录一下. 参考于 Java编程思想第四版(Thinking in Java) 老年代 ...

  8. 微信小程序之发送模板消息(通过openid推送消息给用户)

    一.获取access_token access_token是接口调用的凭证,目前有效期为两个小时,需要定时刷新,重复获取将导致上次获取的access_token失效.(注:不建议每次调用需要acces ...

  9. angularjs-select2的使用

    1.引入文件 '/select2.css', '/select2-bootstrap.css', '/select2.min.js', ‘/angular-select2.min.js’ 2.页面 3 ...

  10. canvas-a11htmlANDcanvas.html

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...