1 ARR介绍
ApplicationRequest Route(后面简称为ARR)是一个寄宿于IIS7(及以后的IIS版本)的一个基于代理的模块,它可以通过判断Http Headers,Server Variables以及负载均衡算法将HTTP的请求转发到不同的处理服务器之上。ARR的用处如下:
- 增强应用的可用性与扩展性
- 更好的利用服务器资源
- 使得应用程序的部署更加方便,并且支持卫星部署管理与热替换
ARR是基于URLRewrite Module的,它通过检测客户端发来的HTTP请求来做出请求路由的决定。
参考链接:
文章是连载,文末有前面几章的链接。文章中讲的2.5版本,目前最新版是3.0,本文也用3.0安装搭建ARR环境;
2 安装
官网下载地址:
https://www.iis.net/downloads/microsoft/application-request-routing
官网是用Web平台安装程序,按照提示安装即可。
脚本之家下载地址:
https://www.jb51.net/softs/629246.html
下载后有3个依赖项和ARR需要安装。
以下是脚本之家下载的安装说明
2.1 停止服务
打开cmd命令行,分别执行net stop was /y和net stop wmsvc /y,一般第二个没有开启。
2.2 手动安装ARR及其依赖项
- webfarm_v1.1_amd64_en_us.msi
- ExternalDiskCache_amd64_en-US.msi
- rewrite_amd64_en-US.msi
- requestRouter_amd64.msi
按照提示安装即可。
2.3 启动服务
打开cmd命令行,分别执行net start was和net start wmsvc
3 创建Server Farm
ApplicationRequest Route模块的使用是和Server Farm模块结合在一起的,只有先创建了Server Farm,才能开始使用Application Request Route进行HTTP请求路由。ServerFarm简而言之就是:对一个或者多个服务器的逻辑分组,便于管理,HTTP请求路由等。
3.1 新建ServerFarm
打开IIS管理器,在右侧可以看到Server Farm项,右键,点击Create Server Farm,输入自定义Farm名称;online:勾选即为开启Server Farm。
3.2 添加应用服务地址
点击“下一步”,添加应用服务地址
Server address:填写应用服务的IP(如:192.168.1.112)或域名(www.XXXXX.com)
Advanced setting:点击打开配置项,点击applicationrequest routing前的加号,设置服务参数
如果http端口不是默认端口80,修改httpPort项(如:8000),修改后点击“Add”,一定要先修改端口,再点“Add”;weight为权重值,用于负载均衡运算分发,暂时默认即可。
添加后,在服务列表中可以看到添加的服务,点击“完成”:
点击“完成”后,弹出是否创建于此Server Farm关联的URL 重写规则,点击“是”。
完成后可以在IIS中看到新建的Server Farm,可以添加、移除、下线、上线应用服务。
4 服务器运行状况监控
ARR可以配置通过发送GET请求来检测ServerFarm中的服务器是状态良好的。这个原理和我们时不时的ping一个电脑,来判断其是否还可以连接一样。
我们可以在在每个站点中放置一个文件(任意IIS允许请求的文件,例如txt,html,aspx页面等,不能是.config等文件,例如:http://localhost/a.txt,(因接收请求的是ARR服务器本地,所以用localhost即可)在文本中写一段文本,如:AAA,
打开IIS管理器,点击左侧Server Farm=》ARREIM,点击右侧“Health Test”,打开健康测试模块:
配置如下:
ARR会每隔30秒(Interval)就去请求一次,然后比较请求的响应是否是“AAA”,从而判断服务器是否状态良好。
点击 Verify URL Test,可以测试当前在线服务器的状态,如果正常Result、Details都显示Pass;如果异常,Result显示Fail,Details显示异常信息。
5 选择负载均衡算法
打开“Load Balance”
Weighted round robin:加权循环,根据传入请求的数量及其标准化权重分配流量。每个服务器都可以接收相同的请求分发或自定义分发。
Server variable hash:服务器变量哈希,根据服务器变量的hash来分配请求,这里面的服务器变量包括Cookie, URL,头信息等。
Query string hash:查询字符串哈希,根据URL查询字符串的hash来分配请求,如果查询字符串包含多个参数(?name=jesse&location=sh),则是用整个查询字符串的hash来作判断。
Request hash:请求哈希,根据服务器变量或者是URL的hash来分配请求,比如说服务器变量是QUERY_STRING,那么hash的值就是query string中对应的那个值。
默认Weighted round robin:加权循环,按照权重设置分发请求,如:现有两台应用服务器B、C,B权重100,C权重100,则两台应用服务器平均分发;B权重100,C权重300,则1/4请求分发给B,3/4请求分发给C。
6 监控和管理
在Server Farm页,打开“Monitoring and Management”,可以查看各应用服务的健康状态、请求分布及数量、请求响应时间、请求大小、权重等信息。
选中一个应用服务,点击右侧按钮或者右键,可以重置统计信息、停止服务、禁止连接等
7 负载均衡器也做应用服务器
按照上面服务器设置,网络拓扑图如下图:
有时一台服务器只当做负载均衡器,ARR服务占用系统资源很少,设备利用率较低,浪费资源。我们可以将负载均衡服务器也作为一台应用服务器运行。改在为下图结构:
7.1 添加ARR本地应用服务
添加ARR本地应用服务时,IP填写127.0.0.1,端口设置为8000,
7.2 修改Server Farm对应的URL重写规则
打开IIS管理器,在主页IIS下找到“URL 重写”,双击打开
打开URL重写可以看到Server Farm对应的重写规则,选中,右键,条件=》添加,
“条件输入”框中输入{SERVER_PORT},“检查输入字符串是否”选择“与模式匹配”,“模式”中输入80,点“确定”
7.3 ARR服务器多应用服务站点
如果ARR服务器本地需要部署多个应用服务站点,需要在C:\Windows\System32\drivers\etc\hosts文件末尾添加映射,如:
127.0.0.1 site1
127.0.0.1 site2