IIS中应用Application Request Route 配置负载均衡
转自:https://blog.csdn.net/wucong60/article/details/84930234
简介
ApplicationRequest Route(后面简称为ARR)是一个寄宿于IIS7(及以后的IIS版本)的一个基于代理的模块,它可以通过判断Http Headers,Server Variables以及负载均衡算法将HTTP的请求转发到不同的处理服务器之上。ARR是基于URLRewrite Module的,它通过检测客户端发来的HTTP请求来做出请求路由的决定。
ARR安装(目前v3.0)
这是下载链接:http://www.iis.net/download/ApplicationRequestRouting
看到上面的Service Farms 就说明你安装成功了。
Demo
我手上有三台Windows机器,本地的机器用作负载均衡,如下:
服务器 IP地址 是否安装了ARR
本地 localhost 是
服务器A
212.64.27.238
否
服务器B
132.232.110.243
否
在三台机器上都新建一个网站,名为arr,网站的内容只有一个index.html,端口都为8888,如下只贴了本地的机器:
右击Server Farms,点击Create Server Farm,这个里命名为mytestarr。界面如下:
Server Farms 就是对一个或多个服务器进行逻辑分组,在这里加了两台服务器,端口也改成了8888,告诉ARR这是要转发的端口,如下。
在Server Farms主界面点击Routing Rules,选中“Use URL Rewrite to inspect incoming requests”,界面如下:
选中之后,点击CDC317011(DIR\cong.wu),再点击URL Rewrite,会发现下面会多出一条URL重写规则,这里是load balance起作用的核心,如果不想用load balance了,可以不选中上面的“Use URL Rewrite to inspect incoming requests”,如果你选中了,那下面的这个规则就起作用了,它会把对我本机的所有端口的请求都转发到server farm的服务器上的8888端口。
在Server Farms主界面点击Load Balance,选择Weighted round robin
好了,配置完成,我们直接访问localhost:8888试试,我们连续访问两次,得到的结果如下:
到这里可以看到使用ARR配置负责均衡成功了。下面是对一些具体配置信息的介绍,Server Farms主界面上面有7个图标,我们一一介绍。
缓存
自行意会吧,不介绍了。
健康检查
几乎所有的load balancer都有这一步。ARR如果判断这些服务器是否还在运行呢,这里使用一个文件,ARR会每隔30秒向这些服务器Check这个文件,如果返回的结果正确,那就表明这些服务器是正确的。
先在两台服务器上,指定的路径下创建一个text.txt文件,里面输入ok。在本地机器上Server Farms主界面点击Health Test,输入如下内容,点击Apply。
配置好后,ARR可以自行判断哪些服务器是可用的,不然的话,如果其中某台服务器挂了,ARR依然会把请求转发给这台挂了的服务器,请求就会丢失。
Load Balance
负载均衡的算法这里有4种,网上有许多介绍了,这里不介绍了。
监控和管理
这里可以看到被请求的次数等情况
代理(Proxy)
看这篇官网的文章https://docs.microsoft.com/en-us/iis/extensions/configuring-application-request-routing-arr/creating-a-forward-proxy-using-application-request-routing
Routing Rules
选中了“Use URL Rewrite to inspect incoming requests”后,URL rewrite才会生效,ARR的负载均衡才能成功。如果添加如下配置呢,它会将所有的png图片不进行转发,拥有ARR的服务器可以直接处理静态资源。
Server Affinity
这里很重要,当选中了Client affinity之后, 再来访问localhost:8888试试
可以看出Cookie里面多出一个ARRAffinity,启用了Client Affinity之后,当你第一次访问此网站的时候,这个ARRAffinity会记住是哪台服务器处理了你的请求,你的后续请求都会发送到此台服务器上,这对于有状态的服务器非常有用,比如在.net framework时代常用的Session。
拒绝新的请求
点击Take Server Offline后,这台服务器就不会接受新的请求了,但原有的还在执行的请求会继续执行。
参考链接
https://docs.microsoft.com/en-us/iis/extensions/configuring-application-request-routing-arr/http-load-balancing-using-application-request-routing#overview
总结
Azure Web APP里负载均衡也是使用得是它,天然支持七层Load Balancer,点击这里看看。
————————————————
版权声明:本文为CSDN博主「wucong60」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wucong60/article/details/84930234
IIS中应用Application Request Route 配置负载均衡的更多相关文章
- NLB+Application Request Route 网路负载均衡
NLB网路负载均衡管理器详解 序言 在上一篇配置iis负载均衡中我们使用啦微软的ARR,我在那篇文章也中提到了网站的高可用性,但是ARR只能做请求入口的消息分发服务,这样如果我们的消息分发服务器给 ...
- 在IIS7中应用Application Request Routing配置反向代理
配置反向代理软件.zip 开启Proxy项: 该设置表面只有HTTP_HOST为phpweb.leven.com.cn的URL才能通过该规则,如果您绑定了多个域名,可以根据多次增加或者通过正则表达式的 ...
- IIS负载均衡-Application Request Route详解第二篇:创建与配置Server Farm(转载)
IIS负载均衡-Application Request Route详解第二篇:创建与配置Server Farm 自从本系列发布之后,收到了很多的朋友的回复!非常感谢,同时很多朋友问到了一些问题,有些问 ...
- Application Request Route实现IIS Server Farms集群负载详解
序言 随着公司业务的发展,后台业务就变的越来越多,然而服务器的故障又像月经一样,时不时的汹涌而至,让我们防不胜防.那么后台的高可用,以及服务器的处理能力就要做一个横向扩展的方案,以使后台业务持续的稳定 ...
- IIS负载均衡-Application Request Route详解第四篇:使用ARR实现三层部署架构(转载)
IIS负载均衡-Application Request Route详解第四篇:使用ARR实现三层部署架构 系列文章链接: IIS负载均衡-Application Request Route详解第一篇: ...
- IIS负载均衡-Application Request Route详解第一篇: ARR介绍(转载)
IIS负载均衡-Application Request Route详解第一篇: ARR介绍 说到负载均衡,相信大家已经不再陌生了,本系列主要介绍在IIS中可以采用的负载均衡的软件:微软的Applica ...
- Windows下应用级别的IIS负载均衡方案 Application Request Route
转载于:https://blog.csdn.net/2000killer/article/details/51228625 序言 随着公司业务的发展,后台业务就变的越来越多,然而服务器的故障又像月经一 ...
- [转帖]Application Request Route实现IIS Server Farms集群负载详解
Application Request Route实现IIS Server Farms集群负载详解 https://www.cnblogs.com/knowledgesea/p/5099893.ht ...
- IIS负载均衡-Application Request Route详解第一篇: ARR介绍
IIS负载均衡-Application Request Route详解第一篇: ARR介绍 说到负载均衡,相信大家已经不再陌生了,本系列主要介绍在IIS中可以采用的负载均衡的软件:微软的Applica ...
随机推荐
- 获取mysql一组数据中的第N大的值
create table tb(name varchar(10),val int,memo varchar(20)) insert into tb values('a', 2, 'a2') inser ...
- 第六章 Flask数据库(二)
Flask-SQLALchemy Flask-SQLALchemy 是一个给你的应用添加 SQLALchemy 支持的 Flask 扩展. 它需要 SQLAlchemy 0.6 或更高的版本.它致力于 ...
- mysql:用户自定义变量关联失效
自定义变量的属性和限制 使用自定义变量的查询,无法使用查询缓存. 不能在使用常量或者标识列的地方使用自定义变量,例如表名.列明和LIMIT子句中. 用户自定义变量的生命周期是在一个连接中有效,所以不能 ...
- asp.net用sql数据库生成json字符串并显示出来
use Shop ,) )) insert into DictBase select '包装' UNION ALL select '价格' UNION ALL select '品牌' 工厂方法模式 I ...
- 1、课程简介-Spring 注解驱动开发
1.课程简介-Spring 注解驱动开发
- [BJOI2019]排兵布阵 DP
[BJOI2019]排兵布阵 DP 比较好想的DP,设\(dp[i][j]\)表示第\(i\)个城堡时,已派出\(j\)个士兵.决策时,贪心派出恰好严格大于某一玩家派出的数量的两倍(不然浪费).我们发 ...
- K8S中Pods
什么是Pod 一个Pod(就像一群鲸鱼,或者一个豌豆夹)相当于一个共享context的配置组,在同一个context下,应用可能还会有独立的cgroup隔离机制,一个Pod是一个容器环境下的“逻辑主机 ...
- 2019.6.24 校内测试 NOIP模拟 Day 2 分析+题解
看到Day 2的题真的想打死zay了,忒难了QwQ~ T1 江城唱晚 这明显是个求方案数的计数问题,一般的套路是DP和组合数学. 正如题目中所说,这个题是一个 math 题. ----zay ...
- 未能加载文件或程序集“Microsoft.SqlServer.Management.Sdk.Sfc, Version=11.0.0.0, Culture=neutral, PublicKeyToken...
刚开始看老师 用VS新建一个“ADO.NET 实体数据模型” 但是一直报错:未能加载文件或程序集“Microsoft.SqlServer.Management.Sdk.Sfc, Version=11. ...
- Git基础命令学习
Git是项目代码管理软件 主要管理逻辑如下: 所有代码保存在远程,本地获取远程代码保存在本地仓库,并于本地工作目录修改代码 修改完成后,提交到本地暂存区,添加必要注释,再尝试提交到远程仓库 若发生冲突 ...