IIS负载均衡Application Request Route 安装配置说明(ARR)

时间:2024-02-25 15:01:52

1 ARR介绍

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

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

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

 

 

 

 

参考链接:

https://mp.weixin.qq.com/s?__biz=MzAwNTMxMzg1MA==&mid=2654067559&idx=2&sn=467c3d92089124480fdb62584857e807&scene=21#wechat_redirect

   文章是连载,文末有前面几章的链接。文章中讲的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及其依赖项

  1. webfarm_v1.1_amd64_en_us.msi
  2. ExternalDiskCache_amd64_en-US.msi
  3. rewrite_amd64_en-US.msi
  4. 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,可以添加、移除、下线、上线应用服务。

 

 

 

 

服务器运行状况监控

     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