配置ARR方式的三层部署体系
概览
本篇文章指导你用ARR来配置部署三层结构。三层部署体系需要由Web层、应用程序层和数据层组成,如下图:
一般在这种部署场景中,静态内容是由Tier1层的服务器host的,而动态内容是由Tier2层来host的。
先决条件
本演示需要以下几个先决条件:
l 装有IIS7的Win2008,或者更高版本
l Microsoft Application Request Routing和相关联的模块
l 至少2台部署有工作站点和应用程序的内容服务器
l 在ARR服务其上,静态内容必须是能访问的
步骤1 – 为静态内容更改相应的URL Rewrite规则
在本步骤中,URL rewrite规则会根据静态内容的扩展名的不同来作出筛选。能够根据文件扩展名来辨认出是否为静态内容,如.jpg或者.gif。如果静态文件是放在某个目录中的,比如/images/目录,则URL rewrite规则也能根据目录名来进行筛选。
在本演示中,我们会设置URL Rewrite规则根据扩展名.jpg/.css以及目录/images/来筛选。如果所请求的资源扩展名是.jpg或者.css,则这个请求会直接由ARR服务器处理掉(不转发到内容服务器)。类似的,如果请求的资源包含/images/路径,也是这样处理。而所有其它的请求则会被ARR服务器转发给各个内容服务器来处理。
在继续之前,确保静态内容在ARR服务器上是能够被访问得到的。这些静态内容既可以是ARR服务器本地的,也可以是由共享目录实现的。
通过图形界面更改URL Rewrite规则:
1. 打开IIS管理器
2. 打开农场myServerFarm(前几篇文章中创建的一个农场名称)
3. 显示如下:
a)
4. 双击Routing Rules
a) Requests with following extensions are not forwarded中输入*.jpg, *.css(逗号分隔开多个)
b) Requests with following patterns are not forwarded中输入*/images/*
c)
5. 要确认静态图片已经被ARR服务器处理了,可以查看日志文件。日志文件默认的位置是c:\inetpub\logs\LogFiles\。在日志文件中能看到这些jpg, css, images没有被内容服务器处理。
命令行方式更改URL rewrite规则:
1. 以administrator身份打开命令行
2. 导航到目录%windir%\system32\inetsrv
3. 输入下列命令清除所有URL Rewrite规则:
a) appcmd.exe clear config -section:system.webServer/rewrite/globalRules
b) 接着更改规则来把请求这些扩展名*.jpg, *.css以及路径/images/的资源不转发到内容服务器:
i. appcmd.exe set config -section:system.webServer/rewrite/globalRules /+"[name='ARR_myServerFarm_loadbalance',patternSyntax='Wildcard',stopProcessing='True']" /commit:apphost
ii. appcmd.exe set config -section:system.webServer/rewrite/globalRules /[name='ARR_myServerFarm_loadbalance',patternSyntax='Wildcard',stopProcessing='True'].match.url:"*" /commit:apphost
iii. appcmd.exe set config -section:system.webServer/rewrite/globalRules /+"[name='ARR_myServerFarm_loadbalance',patternSyntax='Wildcard',stopProcessing='True'].conditions.[input='EXT_{URL}',negate='True',pattern='*.jpg']" /commit:apphost
iv. appcmd.exe set config -section:system.webServer/rewrite/globalRules /+"[name='ARR_myServerFarm_loadbalance',patternSyntax='Wildcard',stopProcessing='True'].conditions.[input='EXT_{URL}',negate='True',pattern='*.css']" /commit:apphost
v. appcmd.exe set config -section:system.webServer/rewrite/globalRules /+"[name='ARR_myServerFarm_loadbalance',patternSyntax='Wildcard',stopProcessing='True'].conditions.[input='{URL}',negate='True',pattern='*/images/*']" /commit:apphost
vi. appcmd.exe set config -section:system.webServer/rewrite/globalRules /[name='ARR_myServerFarm_loadbalance',patternSyntax='Wildcard',stopProcessing='True'].action.type:"Rewrite" /[name='ARR_myServerFarm_loadbalance',patternSyntax='Wildcard',stopProcessing='True'].action.url:"http://myServerFarm1/{R:0}" /commit:apphost