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

在前两篇文章中,我们已经讲述如何配置与安装ARR,从本篇文章开始,我们将重点的来讲述如何在使用ARR进行负载均衡。

        本篇文章的目的主要是一步步的带领大家如何配置和使用ARR来进行Http请求的负载均衡,从而实现高可用与高扩展性。同时,本篇文章还会着重的讲述ARR是如何监视服务器的健康状况,同时也会讲述如何设置客户端的亲缘性。

        为了演示,我这里做了如下的准备工作:

1.      配置了三台服务器(名称定为A,B,C),并且安装的是Win Server 2008IIS.NET Framework也安装了。

2.      在服务器A上面安装了ARR模块。服务器A起到一个请求转发的作用!

3.      创建了一个Server Farm,并且将服务器BC加入到了Farm中。

 

另外对于服务器B,我们就部署了一个默认的站点,如下:

                        

可以看出,配置的站点相当的简单!大家可以自己去配置不同的站点,然后在ARR添加服务器的时候,指向服务器的其他端口!

下面,我们看看,站点中有哪些内容:


        在这里,我简单的放置了一个网页Default.html,这个页面的内容也非常的简单,其中的205是服务器的编号,这样写主要是为了我们后面便于辨别到底是哪一个服务器处理了我们的请求!

        另外需要注意的是,我们在站点中,放置了一个health.txt文件,内容如下:


这个文件主要是给ARR进行健康检查用的,在后面的配置中,我们就可以看到它的作用了!

服务器C的配置和服务器B类似,只是页面文件的内容改为了“Response come from 216”。

整个服务器的结构如下:


配置之后的结果如图所示:


下面开始确认相关的配置信息。

确认Url Rewrite的规则

1.      启动IIS

2.      选择建立的AppServerFarm

3.      看到如下的界面:


4.      双击“Routing Rules”图标,确认“Use URL Rewrite to inspectincoming requests被选中,如图:


5.      启动浏览器,输入: http://localhost/,得到了如下的页面结果:


   很显然,ARR的请求转发起作用了,确认这是205服务器在处理请求!下面,为了确认,我们来查看一下。

请求监控配置

1. 选择AppServerFarm,然后选中“Monitoring and Management


2. 双击之后,显示如下:


        发现:果然是205服务器在处理请求!

配置ARR健康检查机制。

1.      选择AppServerFarm,然后选中右边的“Health Test”图标。


2.      双击图标,得到如下界面:


大家还记得我们之前在每个站点放置的health.txt文件吗,之前说过,这个文件是用来做健康检查的:ARR定时的去通过GET请求获取文件的内容,然后和配置中的“Response match”内容进行对比,如果二者一样,说明Server Farm中的服务器正常。这和我们常常用ping命令测试网络是否连通一个道理。

        注意:这里在URL中放置的:http://localhost/health.txt。为什么

我们知道,Farm中服务器很多,这里不可能设置很多的值,例如16.187.153.205/health.txt16.187.153.216/health.txt ARR不允许我们这样设置。这里之所以让URLlocalhostARR在健康检查的时候,是让各自的站点各自的去请求自己的health.txt,而每一个站点对于各自的health.txt而言,都是local的。这里的内幕,大家不需要太清楚,只要懂得配置就OK了。

另外,还可以设置健康检查的周期,和过期的时间!

 

配置客户端亲缘性

  1. 选择AppServerFarm,然后选中右边的“Server Affnity”图标。


2.      双击,然后看到如下界面:


客户端的亲缘性是通过cookie来实现的。基本的流程与原理是这样的:

a.      请求发送给ARR,假如此时ARR请求转发给服务器B

b.      服务器B处理请求,然后将响应发送给ARR所在的服务器。

c.       此时ARR在响应中加入一个cookie,并且记录请求处理的服务器为B

d.      下一次,ARR检查发来的请求,如果发现包含了之前设置的cookie,并且检查cookie里面的服务器信息,然后将请求转发给对应的服务器。

拒绝新的连接

        在使用ServerFarm的时候,我们可以让Farm中的一些服务器不在接受新的请求连接,处于一种离线的状态。从而,使得我们可以之后将这些离线的服务器拿去维护等。

        大家可以这里就有一个疑问了:如果客户端设置了服务器的亲缘性,而这个服务器又离线了,之前建立的session和相关的信息怎么办?

        其实这里所说的离线,并不是真的离线,断网!而是说,这些服务器不在接受新的请求,之前已经接受的请求,还是会处理完的!

        操作的步骤如下:

1.      选中“appServerFarm

2.      展开“Servers“节点

3.      在右边列出的服务器中,点击“右键“,使其离线,如图:


        这里给大家留一个小作业:把Farm中的一台服务器下线,然后发送请求到ARR部署的那个服务器,看看效果!

到这里,大家就可以开始配置和使用ARR进行负载均衡了!

之后的文章,我们讲述的深入一些!

相关内容

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

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

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

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

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

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

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


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


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


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

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

相关文章

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 是一个数据存储,检索和分析引擎;本…

db9针232接口波特率标准_理解串口通信以及232,485,422常见问题

下面先讲一讲串口通信的一些基本概念,术语。如果对串口通信比较熟悉的,就当复习复习,如果哪里讲错或不到位,也可以及时指出,当作一块交流交流。这里并不对串口的编程作讲解,主要是从应用的角度去讲一讲。因…

理解 .NET Platform Standard

.NET Platform Standard:https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md .NET Platform Standard 是什么?直译过来就是 .NET 平台规范或标准,它的目的就是使 .NET 各个平台之间更加统一…

Oracle入门(十四.18)之使用动态SQL

一、SQL的执行流程数据库中的所有SQL语句都经历了不同的阶段: •解析:预执行“这可能吗?”检查包括语法,对象存在,权限等 •绑定:获取语句中引用的任何变量的实际值 •执行:语句被执行。•提取&…

天平游码读数例题_初二上册物理实验——托盘天平使用的注意事项

今天给大家讲讲托盘天平的使用和注意事项。(1)首先,我们回忆一下什么是托盘天平如下图托盘天平由底座、横梁、分度盘、托盘、平衡螺母、标尺、游码、托盘等组成,当然还有砝码。托盘天平是称量物体的质量的工具(质量符号m,单位:国际…

3.elasticsearch文档查询dsl

【README】 1.本文elasticsearch版本是 7.2.1; 2.文档查询语句叫做 DSL, domain structure language, 领域特定语言;dsl,参见 Query DSL | Elasticsearch Guide [7.2] | Elastic 3.elasticsearch 基于json 提供了完…

Oracle入门(十四.19)之触发器简介

一、触发器的需求让我们从一个例子开始吧:一条业务规则规定,只要员工的工资发生变化,变更就必须记录在日志记录表中。 可以创建两个过程来执行此操作:UPD_EMP_SAL更新工资,LOG_SAL_CHANGE将行插入日志表。可以从UPD_EM…

搜狐视频Redis私有云cachecloud开源了

项目地址:https://github.com/sohutv/cachecloud/ 一、CacheCloud是做什么的 CacheCloud提供一个Redis云管理平台:实现多种类型(Redis Standalone、Redis Sentinel、Redis Cluster)自动部署、解决Redis实例碎片化现象、提供完善统计、监控、运维功能、减…

springboot 订单重复提交_瞬间几千次的重复提交,我用Spring Boot+Redis扛住了

在实际的开发项目中,一个对外暴露的接口往往会面临,瞬间大量的重复的请求提交,如果想过滤掉重复请求造成对业务的伤害,那就需要实现幂等!我们来解释一下幂等的概念:任意多次执行所产生的影响均与一次执行的…

Oracle入门(十四.21)之创建DML触发器:第二部分

一、使用条件谓词 在上文中,看到了一个触发器,可以防止在周末插入EMPLOYEES: CREATE OR REPLACE TRIGGER secure_emp BEFORE INSERT ON employees BEGINIF TO_CHAR(SYSDATE,DY) IN (SAT,SUN) THENRAISE_APPLICATION_ERROR(-20500,You may ins…

【直播预告】创享未来 2016微软开发者峰会

感谢所有中国开发者对2016微软开发者峰会的热情关注,目前活动已经截止报名了,不过M姐为大家带来新的福利: 2016微软开发者峰会将全程线上直播! 2016微软开发者峰会将全程线上直播! 2016微软开发者峰会将全程线上直播…

定时任务重启后执行策略_C语言操作时间函数time.ctime,实现定时执行某个任务小例子...

时间操作函数在实际项目开发中会经常用到,最近做项目也正好用到就正好顺便整理一下。时间概述由上图可知:通过系统调用函数time()可以从内核获得一个类型为time_t的1个值,该值叫calendar时间,即从1970年1月1日的UTC时间从0时0分0妙…

Oracle入门(十四.20)之创建DML触发器:第一部分

一、什么是DML触发器?DML触发器是执行SQL DML语句(INSERT,UPDATE或DELETE)时自动触发(执行)的触发器。 您可以通过两种方法对DML触发器进行分类: •执行时间:BEFORE,AFTE…

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

本篇的主要目的是带领大家一起来使用ARR来实现一个三层部署架构。这里的三层部署架构主要是由:服务层,应用程序服务器层已经数据层实现。如下图所示: 每次一提到“层”这个字的时候,似乎感觉这个字特别的惹火。很多朋友开始讨论起…

c遗传算法的终止条件一般_KDD比赛之遗传算法(举例理解)

求最大值问题是这样的:求解函数 f(x) x 10*sin(5*x) 7*cos(4*x) 在区间[0,9]的最大值。这个函数大概长这样:那么如何应用遗传算法如何来找到这个奇怪的函数的最大值呢?事实上,不管一个函数的形状多么奇怪,遗传算法都…

6.elasticsearch查询与过滤上下文(query context与filter contenxt)以及term术语查询

【README】 1.本文总结自: Query and filter context | Elasticsearch Guide [7.2] | Elastichttps://www.elastic.co/guide/en/elasticsearch/reference/7.2/query-filter-context.html2.文档相关性分数是否被计算,取决于查询子句是在查询上下文&…

Oracle入门(十四.22)之创建DDL和数据库事件触发器

一、什么是DDL和数据库事件触发器?DDL语句触发DDL触发器:CREATE,ALTER或DROP。 数据库事件触发器由数据库中的非SQL事件触发,例如: •用户连接到数据库或与数据库断开连接。 •DBA启动或关闭数据库。•用户会话中引发了…

Visual Studio上开发Python?你不可不知道的六大功能!

Visual Studio 2013/2015 搭配 Python Tools for Visual Studio 扩充套件让 Visual Studio 能提供对 Python 程序语言高度整合的开发环境,并完整发挥 Visual Studio 强大的功能,协助您在 Visual Studio 内开发 Python 程序上如虎添翼,提升开发…

qt中sendevent_Qt中postEvent和sendEvent函数

Qt中postEvent和sendEvent函数部分内容参考http://blog.csdn.net/lvmengzou/article/details/65450908qt事件循环需要维护一个事件队列,在Qt的main函数中最后一般调用QApplication::exec()成员函数来保持程序对事件队列的处理,exec()的实质是不停调用pro…