IIS负载均衡-Application Request Route详解第一篇: ARR介绍

说到负载均衡,相信大家已经不再陌生了,本系列主要介绍在IIS中可以采用的负载均衡的软件:微软的Application Request Route模块。

其实Application Request Route已经有很多文章介绍过了,但是有很多的文档都是英文的,笔者在项目中,曾经为了使用和测试Application Request Route,将有关的文档已经转为中文,在组员之间传阅,本系列在这些文档的中,再加入一些使用的心得。

本篇议题如下:

Application Request Route介绍

Application Request Route安装

系列文章链接:

IIS负载均衡-Application Request Route详解第一篇: ARR介绍  

IIS负载均衡-Application Request Route详解第二篇:创建与配置Server Farm

 IIS负载均衡-Application Request Route详解第三篇:使用ARR进行Http请求的负载均衡(上)

IIS负载均衡-Application Request Route详解第三篇:使用ARR进行Http请求的负载均衡(下)

IIS负载均衡-Application Request Route详解第四篇:使用ARR实现三层部署架构

Application Request Route介绍

Application Request Route(后面简称为ARR)是一个寄宿于IIS7(及以后的IIS版本)的一个基于代理的模块,它可以通过判断Http Headers,Server Variables以及负载均衡算法将HTTP的请求转发到不同的处理服务器之上。ARR的用处如下:

      1. 增强应用的可用性与扩展性
      2. 更好的利用服务器资源
      3. 使得应用程序的部署更加方便,并且支持卫星部署管理与热替换
      4. 更低的管理成本,使得共享宿主的部署成为可能

ARR是基于URL Rewrite Module的,它通过检测客户端发来的HTTP请求来做出请求路由的决定。

下面,我们就进一步的看看ARR的一些特征:

1.基于HTTP请求,做出的请求路由的决定

与硬件的负载均衡不同(在OSI模型的IP层来决定请求的路由方式),ARR是基于应用层来进行负载均衡的,因为在应用层可用的信息更多(其实谈到这里, 是很有必要把负载均衡的原理讲清楚的,但是,因为本系列主要是讲述ARR,所以,对已一些底层原理性的概念,不会做过多的涉及,以后计划为朋友们系统的讲 述负载均衡的原理及其实现,可以参看:负载均衡第一篇-介绍篇)。通过在ARR中使用URL  Rewrite Module,我们就可以实基于Http Headers与Server Variables来实现个更强大的路由规则。

2.提供多种负载均衡算法

我们可以自己决定使用哪一种负载均衡算法来进行请求的路由,ARR提供了以下6种算法。

3.健康检查

       我们可以使用“实时通信“和”特定Url测试“来检查服务器的健康状况。并且,我们 还可以通过使用很多的参数来决定到底什么样的状况才是健康的正常的服务器,例如,有人认为只要服务器是开启的,就是健康的;也有人认为,服务器开启,并且 处理的请求没有超载是健康的,等等。另外,我们还可以通过使用自己的提供Health Monitoring Provider来实现自己的健康检查可能。

4.客户端亲缘性

关于亲缘性,相信大家不再陌生,我这里稍微的提一下:就是更加倾向于,或者喜欢那个。例如,在SQL Server中可以设置CPU的亲缘性,,假设现在有四个CPU,编号分别是A,B,C,D,现在我们SQL Server的CPU亲缘性设置到A上,就是说: SQL Server在处理请求的时候,更加喜欢把请求发送给编号为A的CPU来处理,当然也会将请求发送给其他的CPU,但是A的CPU处理请求的机会更多。

同理,在ARR中,可以通过设置客户端的亲缘性,ARR主要是通过使用Cookie来实现的。至于如何实现的,其实也很简单,这里暂且不说。

这里就来说说客户亲缘性的一些需要考虑的点:

    1. 如果使用了客户端亲缘性,就可以在应用中使用传统的Session和 Cache,而没有必要使用分布式的Session和Cache。这里,以Session为例子,因为很多的时候,我们都需要将一个站点应用部署到多个服 务器上,如果在某些地方使用了Session,特别保存用户的一些数据的时候,就需要使用分布式的Session,用户登录就是一个最明显的例子(避免用 户从服务器A上登录,当下一次请求在B服务器处理的时候,还需要再次登录)。使用客户端亲缘性,ARR就可以将同一个用户的请求再次转发到用户第一次请求 的服务器上。
    2. 使用客户端亲缘性,就在一定程度上面失去了负载均衡的意义。因为设置了客户端亲缘性,即使用户初次请求的服务器现在压力很大,那么ARR还是会将用户的请求转发过去。
    3. 客户端亲缘性,失去了高可用性。因为很有可能现在处理用户请求的服务器已经宕机了,虽然ARR有健康检查机制,但是ARR还是可以将请求发给宕机的服务器,导致请求无法处理。

5.宿主名亲缘性

理解了上面的“客户端亲缘性“,这里就更加容易理解了。“ 宿主名亲缘性”主要使用在共享服务器中的(很多人使用一台服务器,就是站点部署的时候,购买的是“虚拟地址空间”)。我们后面在提到的时候,会详细讲解。

6.服务器分组

ARR可以管理很多的服务器组,其中每一组又包含多台服务器服。

7.基于图形化界面的管理与健康

ARR与IIS集成,并且,通过了可视化的,便于操作的可视化操作界面。

8.制定请求失败的跟踪规则

在ARR中,可以定义特定的跟踪规则,当请求处理失败之后查看跟踪信息,便于诊断。

Application Request Route安装

下面,我们就介绍ARR的安装,便于大家快速上手与学习:

ARR依赖于以下组件:

    1. Microsoft URL Rewrite Module for IIS 7.0.
    2. Microsoft Web Farm Management Version 1 for IIS 7.0.
    3. Microsoft Application Request Routing Version 1 for IIS 7.0.
    4. Microsoft External Cache Version 1 for IIS 7.0.

ARR的安装,需要相关的环境,如下:

    1. IIS 7.0 以及以后的版本(笔者在Win 7和Server2008中都安装过,是可以的)

下面开始进入安装:

1. 下载ARR:

现在ARR已经发展了2.5的版本,可以说已经很稳定了,笔者也在一些大型项目中已经采用,效果还不错。

现在地址:http://www.iis.net/download/ApplicationRequestRouting

2. 现在ARR集成在Web 安装平台中,如下:

3.点击“Install”,开始安装

4.安装之后,打开IIS的控制窗口,如下(Win7系统的界面):

如果看到有“Server Farms”,就说明安装OK了。

5.配置应用程序池

所有的HTTP请求都需要经过ARR。所以,我们希望在安装了ARR的服务器上的IIS要必须不停的运行,不停把请求转发到其他的服务器上面,也就是说:这台安装了ARR的服务器基本的功能就是请求转发。

假设现在我们手里有3台服务器(编号分别为A,B,C)来部署agilesharp的站点,安排如下:

现在服务器A向外面暴露的地址假设为:159.12.2.15,那么我们在A服务器上建立一个agilesharp的站点,如下:

并且,我们设置 agilesharp站点的应用程序池为IIS的集成模式。这个时候,因为这个站点其实只是暴露给外面,真正的请求处理在B和C服务器。所以,我们要设置 这个agilesharp的站点的应用程序池,从而它源源不断的接受HTTP请求(应用程序池默认是不会不断的介绍请求的,它有一个时间的延时,这个延时 的时间往往就是默认的请求处理时间),然后由ARR转发。

设置如下:

Idle Time-out (minutes)设置为0,然后保存就OK了。

OK,介绍就到这里,下一篇,我们就来看看一些具体的应用!

IIS负载均衡-Application Request Route详解第一篇: ARR介绍(转载)的更多相关文章

  1. IIS负载均衡-Application Request Route详解第一篇: ARR介绍

    IIS负载均衡-Application Request Route详解第一篇: ARR介绍 说到负载均衡,相信大家已经不再陌生了,本系列主要介绍在IIS中可以采用的负载均衡的软件:微软的Applica ...

  2. IIS负载均衡-Application Request Route详解第二篇:创建与配置Server Farm(转载)

    IIS负载均衡-Application Request Route详解第二篇:创建与配置Server Farm 自从本系列发布之后,收到了很多的朋友的回复!非常感谢,同时很多朋友问到了一些问题,有些问 ...

  3. IIS负载均衡-Application Request Route详解第四篇:使用ARR实现三层部署架构(转载)

    IIS负载均衡-Application Request Route详解第四篇:使用ARR实现三层部署架构 系列文章链接: IIS负载均衡-Application Request Route详解第一篇: ...

  4. Nginx/LVS/HAProxy 负载均衡软件的优缺点详解

    Nginx/LVS/HAProxy 负载均衡软件的优缺点详解   Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验 ...

  5. 总结)Nginx/LVS/HAProxy负载均衡软件的优缺点详解

    总结)Nginx/LVS/HAProxy负载均衡软件的优缺点详解 PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使 ...

  6. Nginx/LVS/HAProxy负载均衡软件的优缺点详解【转】

    转自 (总结)Nginx/LVS/HAProxy负载均衡软件的优缺点详解http://www.ha97.com/5646.html PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均 ...

  7. (总结)Nginx/LVS/HAProxy负载均衡软件的优缺点详解

    Nginx/LVS/HAProxy负载均衡软件的优缺点详解 PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,参考了一些资料,结合自己的一些使用经验,总结一下. 一般对负载均 ...

  8. [link] 构建负载均衡服务器之一 负载均衡与集群详解

    一.什么是负载均衡 首先我们先介绍一下什么是负载均衡: 负载平衡(Load balancing)是一种计算机网络技术,用来在多个计算机(计算机集群).网络连接.CPU.磁盘驱动器或其他资源中分配负载, ...

  9. IIS中应用Application Request Route 配置负载均衡

    转自:https://blog.csdn.net/wucong60/article/details/84930234 简介ApplicationRequest Route(后面简称为ARR)是一个寄宿 ...

随机推荐

  1. 结合C++和GDAL实现shapefile(shp)文件的读取

    工具:vs2012+GDAL 2.0 数据:中国省界SHP文件bou2_4p.shp   可点击下载 包含头文件: #include "ogrsf_frmts.h" 代码: int ...

  2. 流媒体技术之RTSP

    流媒体技术之RTSP 标签: RTSP技术移动流媒体 2016-06-19 18:48 38人阅读 评论(0) 收藏 举报  分类: 流媒体相关技术 版权声明:本文为博主原创文章,未经博主允许不得转载 ...

  3. Win7上防火墙开放FTP服务以及ping解决方案(zz)

    1.windows 防火墙开放ftp服务 The following 4 steps will allow both non-secure and SSL FTP traffic through fi ...

  4. 几种Java NIO框架的比较(zz)

    问题:生活中工作中,会有人问我javaNIO框架里面 Netty Mina  xSocket Grizzly 等等哪个比较好? 在这里写一下自己的感受,也算是总结一下吧 在我的印象中.不管是什么NIO ...

  5. VC++中复制对话框资源 之较好方法之一

    资源对话框的编写有时候较为麻烦,这里我成功实现了这个方法的可用性,具体如下: 碰到模块移植问题了,自己做的对话框类(继承于CDialog)要移植到目标工程中.在网上搜了几个帖子发现都说的很生涩.   ...

  6. 学习笔记——Maven实战(四)基于Maven的持续集成实践

    Martin的<持续集成> 相信很多读者和我一样,最早接触到持续集成的概念是来自Martin的著名文章<持续集成>,该文最早发布于2000年9月,之后在2006年进行了一次修订 ...

  7. C#基础之IL

    1.实例解析IL 作为C#程序员,IL的作用不言而喻,首先来看一个非常简单的程序和它的IL解释图,通过这个程序的IL指令来简单的了解常见的IL指令是什么意思. class Program { stat ...

  8. PHP PC端接入支付宝和微信感悟

    想着中秋节的时候把异步线程学习完,同事说有个PHP的支付要帮忙做一下,虽然中秋节计划是把C#的异步学完,不过还是喜欢挑战,好久没有像大学一样这么认真的熬夜解决问题了.由于在大学学过asp,它和php有 ...

  9. 几种Boost算法的比较(Discrete AdaBoost, Real AdaBoost, LogitBoost, Gentle Adaboost)

    关于boost算法 boost算法是基于PAC学习理论(probably approximately correct)而建立的一套集成学习算法(ensemble learning).其根本思想在于通过 ...

  10. LinuxMint下Docker的安装部署和验证

    通过lsb_release命令查看以下我的LinuxMint发行版, 查看以下我的Linux内核版本, Docker要求Linux内核版本必须在要在3.10以上,显然我们的系统是满足的. 1. Doc ...