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

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

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

本篇议题如下:

Application Request Route介绍

Application Request Route安装

 

Application Request Route介绍

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

1.      增强应用的可用性与扩展性

2.      更好的利用服务器资源

3.      使得应用程序的部署更加方便,并且支持卫星部署管理与热替换

4.      更低的管理成本,使得共享宿主的部署成为可能

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


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

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

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

  1. 负载均衡算法

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

  1. 健康检查

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

4.      客户端亲缘性

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

 

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

 

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

a.      如果使用了客户端亲缘性,就可以在应用中使用传统的SessionCache,而没有必要使用分布式的SessionCache。这里,以Session为例子,因为很多的时候,我们都需要将一个站点应用部署到多个服务器上,如果在某些地方使用了Session,特别保存用户的一些数据的时候,就需要使用分布式的Session,用户登录就是一个最明显的例子(避免用户从服务器A上登录,当下一次请求在B服务器处理的时候,还需要再次登录)。使用客户端亲缘性,ARR就可以将同一个用户的请求再次转发到用户第一次请求的服务器上。

b.      使用客户端亲缘性,就在一定程度上面失去了负载均衡的意义。因为设置了客户端亲缘性,即使用户初次请求的服务器现在压力很大,那么ARR还是会将用户的请求转发过去。

c.       客户端亲缘性,失去了高可用性。因为很有可能现在处理用户请求的服务器已经宕机了,虽然ARR有健康检查机制,但是ARR还是可以将请求发给宕机的服务器,导致请求无法处理。

 

5.       宿主名亲缘性

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

 

6.      服务器分组

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

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

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

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

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

 

Application Request Route安装

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

        ARR依赖于以下组件:

1.       Microsoft URL Rewrite Modulefor IIS 7.0.

2.       Microsoft Web Farm ManagementVersion 1 for IIS 7.0.

3.       Microsoft Application RequestRouting Version 1 for IIS 7.0.

4.       Microsoft External CacheVersion 1 for IIS 7.0.

       

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

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

下面开始进入安装:

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安装了ARR

进行请求路由

B安装ARR,就是普普通通的服务器

处理请求

C安装ARR,就是普普通通的服务器

处理请求

 

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

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

设置如下:

 

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

 

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

相关内容

  • 构建高性能.NET应用之配置高可用IIS服务器-第一篇:IIS必须掌握的知识

  • 构建高性能.NET应用之配置高可用IIS服务器-第二篇 IIS请求处理模型

  • 构建高性能.NET应用之配置高可用IIS服务器-第三篇 IIS中三个核心组件的讲解(上)

  • 构建高性能.NET应用之配置高可用IIS服务器-第四篇 IIS常见问题之:工作进程回收机制(上)

  • 构建高性能.NET应用之配高可用IIS服务器-第五篇 IIS常见问题之:工作进程回收机制(中)


作者介绍:汪洋,哪合伙CEO,曾大汉电子商务有限公司首席技术官,副总裁,负责公司产品、技术、运营,参与商业模式设计。华康移动医疗前CTO,副总裁,首席架构师。微软MVP


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/329342.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单位矩阵的逆矩阵是它本身吗_矩阵运算、单位矩阵与逆矩阵(二)

逆矩阵什么是逆矩阵?数有倒数:逆矩阵也是相同的概念,但我们写为A-1逆矩阵的定义计算逆矩阵我们怎么知道计算结果是正确的?我们把矩阵和逆矩阵相乘来看看:我们为什么需要逆矩阵,举个例子:一帮人坐…

Oracle入门(十四.12)之游标FOR循环

一、游标FOR循环游标FOR循环处理显式游标中的行。 这是一个快捷方式,因为游标被打开,循环中的每次迭代都会获取一次行,当处理最后一行时会退出循环,并且游标会自动关闭。 当最后一行被提取时,循环本身在迭代结束时自动…

结合Jexus + Kestrel 部署 asp.net core 生产环境

ASP.NET Core 是微软的全新的框架。这一框架的目标 ︰ 跨平台针对云应用优化解除 System.Web 的依赖。 获得下面三个方面的优势,你可以把它认为是一个C# 版本的NodeJS: 1) 模块化实现 2) 一切都尽可能的-异步 3) 依赖关…

centos普通用户修改文件权限_用户管理(特殊权限、特殊属性、umask 默认权限 )

特殊权限suidLinux 系统文件除了9位基本权限,还有额外3位特殊权限,分别是  SUID(set uid), -rwsr-xr-x  SGID(set gid), -rw-r-sr-x  SBIT(sticky bit), -rw-r-xr-t  这3位特殊权限不建议使用(除系统默认的特殊权限可…

Oracle入门(十四.13)之带参数的游标

一、带参数的游标参数是一个变量,其名称用于游标声明中。 当游标打开时,参数值被传递给Oracle服务器,Oracle服务器使用它来决定要将哪些行检索到光标的活动集中。这意味着您可以在块中多次打开和关闭显式光标,或者在同一个块的不同…

4.canal抽取失败报is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts‘

【README】 1.本文po出了报错【messageXXX is blocked because of many connection errors; unblock with mysqladmin flush-hosts】的解决方法; 2.解决方法参考了 StackOverflow: mysql - How to unblock with mysqladmin flush hosts - Stack Overfl…

raid配置ssd为缓存_超融合硬件选配推荐指南 | 第三期:SSD 与 HDD

本期《SMTX OS 硬件选配推荐指南》继续与大家分享单机硬件配置中存储相关的内容——固态硬盘 SSD 和机械硬盘 HDD 章节。前两期摘录了单机硬件配置中的 CPU 选择和内存选择参考,感兴趣的读者可点击回顾。如果希望获取完整《指南》,可点击这里下载。单机硬…

Oracle入门(十四.14)之处理异常

一、什么是异常? 在执行破坏程序正常运行的程序期间发现错误时会发生异常。 有很多可能的例外原因:用户在输入时出现拼写错误; 程序无法正常工作; 广告网页不存在; 等等。 你能想到在使用网站或应用程序时遇到的错误吗?二、PL / SQL中的异常…

1.(译)NoSQL与SQL数据库对比

【README】 1.本文翻译自: NoSQL Vs SQL Databases | MongoDB 2.NoSQL指的是不止sql(not only sql);NoSQL数据库是2000年代末开发的,重点是扩展,快速查询,允许频繁变更,让编程更简…

C#使用Redis集群缓存

本文介绍系统缓存组件,采用NOSQL之Redis作为系统缓存层。 一、背景 系统考虑到高并发的使用场景。对于并发提交场景,通过上一章节介绍的RabbitMQ组件解决。对于系统高并发查询,为了提供性能减少数据库压力,我们加入缓存机制&#…

Oracle入门(十四.15)之捕获Oracle服务器异常

一、异常类型 本课讨论预定义和非预定义的Oracle服务器异常。(1)使用PL / SQL处理异常有两种提出异常的方法: •Oracle服务器隐式(自动):- 发生Oracle错误并自动引发相关异常。- 例如,如果在SEL…

萤石云好友分享的监控怎么看_萤石S1:英超赛场上雄起的中国品牌

北京时间4月26日20:30,英超2014/15赛季第34轮,曼联客场0比3不敌埃弗顿,麦卡锡、斯通斯和米拉拉斯先后进球。曼联在连败的情况下积分榜跌至第四。后弗格森时代的曼联最近刚刚有点起色,似乎这场惨败又让曼联球迷的信心跌到了低谷。在…

2.es与mongodb的区别

【1】es vs mongo 图片转自: MongoDB和Elasticsearch的对比 参考文档: MongoDB和Elasticsearch的对比 10亿数据,数据库选Mongo还是Elalsticsearch?-51CTO.COM ElasticSearch可以替代Mongo么? - 知乎 https://www.j…

taro 缺点_Taro小程序富文本解析4种方法

最近遇到一个富文本解析的问题,尝试了很多办法,终于成功了!最后本人选择Parser。1.Taro组件rich-text优点:使用极其方便,引用一下就行了。缺点:不支持视频,放弃!2.wxParse https://g…

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

自从本系列发布之后,收到了很多的朋友的回复!非常感谢,同时很多朋友问到了一些问题,有些问题是一些比较基本的问题,由于时间的缘故,不会一一的为大家回复,如果有不明白的,希望大家勤…

Oracle入门(十四.16)之捕获用户定义的异常

一、异常类型 本文讨论用户定义的错误。二、捕获用户定义的异常 PL / SQL允许你定义你自己的异常。 您根据应用程序的要求定义异常。输入数据期间需要用户定义的异常的一个示例。 假设您的程序提示用户输入部门编号和名称,以便它可以更新部门的名称。 当用户进入无效…

以太坊地址和公钥_以太坊交易签名解析源码解读

上篇文章《以太坊交易签名过程源码解析[1]》从源码角度分析了一个合约调用的的签名过程,签名后的交易发送到以太坊节点后,节点需要从签名交易中还原出公钥(从公钥中单向计算出账号地址),进而将交易放入交易池中。本文从go-ethereum源码的出发…

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

在前两篇文章中,我们已经讲述如何配置与安装ARR,从本篇文章开始,我们将重点的来讲述如何在使用ARR进行负载均衡。 本篇文章的目的主要是一步步的带领大家如何配置和使用ARR来进行Http请求的负载均衡,从而实现高可用与高扩展性。同…

Oracle入门(十四.17)之procedure传递参数

一、PROCEDURE 参数模式参数模式在形式参数声明中指定,位于参数名称之后,位于其数据类型之前。 参数传递模式: •IN参数(默认值)为子程序提供处理值。 •OUT参数将值返回给调用者。•IN OUT参数提供一个输入值&#xf…

1.elasticsearch文档存储(保存|修改|删除)

【README】 0.本文部分内容(数据)总结自 es 开发文档, Document APIs | Elasticsearch Guide [7.2] | Elastic ; 1.本文的es版本是7.2.1; 2.elasticsearch 是一个数据存储,检索和分析引擎;本…