killerxf 发表于 2017-12-27 23:53:12

windows下使用IIS的ARR实现站点的负载均衡

1)    目的:
  访问localhost:18066
  对下边两个端口负载
  localhost:18098
  localhost:18099
2)    手段:
  1.通过nginx
  2.通过iis的ARR(Application Request Routing)
3)    使用IIS的ARR
  步骤:
1.部署porxy站点端口18066,
  用来做转发。
  注意:
  需要把对应的应用程序池的“idel time-out”设置为0。点击对应的程序池,然后点击高级配置,修改“闲置超时”(idel time out) 为0。
  需要把回收时间调成0。点击对应的程序池,然后点击右边面板的“正在回收...”,按照下图修改,去掉固定时间间隔。


2.部署两个实际提供服务的站点
  端口分别是18099和18098,按正常需要的配置
3.安装ARR,
  地址(https://www.iis.net/learn/extensions/installing-application-request-routing-arr/install-application-request-routing-version-2)
  这里下载的是ARR2.0的包,由于ARR3.0会把其他内容分开来打包,所以提供2.0的整体包,3.0的大家可以按需搜索使用
4.设置Server Farms
  如下图,增加server时需要指定端口,点击 advanced settings展开更多选项,修改端口。注意:假如是重复的地址需要使用windwo\system32\drivers\ect\hosts中增加映射来避免重复。
  如:
  127.0.0.1          site1host
  127.0.0.1          site2host
      
5.配置指定porxy端口使用对应的Server Farms。
  (假如不指定则iis上所有正在的监听端口都会使用Server Farms导致错误)
  点击IIS下的“Server Farms”然后选中我们新创建的farm,双击右边中窗体中的“Routing Rules”配置路由规则
      
  进入路由规则设置后,按照下图选中第一个选项,使用URL Rewrite来实现请求的处理,然后点击右边的“URL Rewrite”地址重写来配置具体规则
  
  修改规则,由于我们这边需求简单,只需要把所有请求都转发就可以,所以使用正则“^(.*)”匹配所有内容,(需要转发的内容匹配)
  同时增加筛选条件(能够使用该Farms的规则),增加对端口({SERVER_PORT})的匹配,然后其他默认就可以
  
6.测试
访问http://localhost:18096/aaa.txt
配置了轮训的负载策略后就看到了两个服务器返回对应的内容了

4)    附录:
三种访问情况性能对比,使用工具 apache benchmark,
  在同一服务器上使用iis的arr的性能跟直接访问站点接近
  在同一服务器上同样的方式nginx(windows)的性能只有1/3左右
直接访问10898
,ab -n 10000 -c 3000 http://localhost:18098/天翼live工作.txt
Concurrency Level:      3000Time taken for tests:   15.609 seconds
Complete requests:      10000
Failed requests:      0
Total transferred:      12730000 bytes
HTML transferred:       10290000 bytes
Requests per second:    640.66 [#/sec] (mean)
Time per request:       4682.668 (mean)
Time per request:       1.561 (mean, across all concurrent requests)
Transfer rate:          796.45 received

通过nginx访问18066
,ab -n 10000 -c 3000 http://localhost:18066/aaa.txt
Concurrency Level:      3000
Time taken for tests:   38.987 seconds
Complete requests:      10000
Failed requests:      0
Total transferred:      12685000 bytes
HTML transferred:       10290000 bytes
Requests per second:    256.49 [#/sec] (mean)
Time per request:       11696.169 (mean)
Time per request:       3.899 (mean, across all concurrent requests)
Transfer rate:          317.74 received
通过iis的ARR访问18096
, ab -n 10000 -c 3000 http://localhost:18096/aaa.txt

  Concurrency Level:      3000
  Time taken for tests:   15.560 seconds
  Complete requests:      10000
  Failed requests:      0
  Total transferred:      12969758 bytes
  HTML transferred:       10290000 bytes
  Requests per second:    642.68 [#/sec] (mean)
  Time per request:       4667.967 (mean)
  Time per request:       1.556 (mean, across all concurrent requests)
  Transfer rate:          814.00 received
页: [1]
查看完整版本: windows下使用IIS的ARR实现站点的负载均衡