使用ARR管理试点方案(涉及到了A/B Testing)
概览
本主题指导读者使用ARR来发起及管理试点方案或beta方案。ARR能够设置成把不同的用户路由到不同的试点站点,或者根据流量来决定将部分请求路由到试点站点。本演示将主要定位在根据用户环境的特征来将部分请求路由到试点站点。
目标
配置ARR来管理及规避试点方案所带来的风险。
先决条件
本演示需要以下先决条件:
l 装有IIS7的Win2008,或者更高版本
l Microsoft ARR及相关模块
l 至少4台装有工作站点和应用程序的内容服务器。两台服务器将被用于模拟production站点,其他两台将用于模拟试点站点
l 除了Microsoft IE外,还需要另外一种浏览器,比如Firefox,并且装有.net3.5(这个配置只是用于测试目的)
步骤1 – 基于用户端配置来对url rewrite规则进行更改
在这步中,url rewrite规则会改为如下:当客户端装有.net3.5并且使用的是IE,则这些请求会被路由到试点站点,试点站点将被host在pilotServers农场中。所有其他请求则路由到production站点,production站点将被host在productionSiteServers农场中。
通过图形方式更改URL Rewrite规则:
1. 打开IIS
2. 选中农场pilotSiteServers
3. 显示如下:
a)
4. 双击Routing Rules
5. 由于目前这种场景涉及到了多个服务器农场,并且涉及到了额外的http请求头的筛选,所以需要定义URL Rewrite模块的高级选项,点击Advanced Routing下的URL Rewrite
a)
6. 注意已经存在2个规则了,接着需要更改这些规则
a)
7. 在本演示中规则的顺序很重要。如果ARR_productionSiteServers_loadbalance在ARR_pilotServers_loadbalance之上,你需要使用Move Up或Move Down来更改它们的顺序
8. 选择ARR_pilotSite_Servers_loadbalance然后在Actions面板中单击Edit…
a)
9. 有IE并且装有.net3.5的用户请求需要转发到pilotSiteServers农场。需要为此增加条件。单击Add Conditions,然后再单击Add…
a)
10. 在Condition input中输入{HTTP_USER_AGENT};Pattern中输入*MSIE*;这个条件会检查客户端是否使用的是IE
a)
11. 点击Add…来增加另一个条件来检查.net版本,类似上一步分别输入如下:{HTTP_USER_AGENT}和*.NET CLR 3.5*
a)
12. 最后,将复选框” Stop processing of subsequent rules(停止处理后续规则)”设置为不选中状态,然后点击Apply保存更改
a)
13. 如前所述,规则的顺序是很重要的。这是因为当选项” Stop processing of subsequent rules”没有被选中时,URL Rewrite处理器会根据顺序处理这些规则。所以在本例中,第一个规则ARR_pilotSiteServers_loadbalance会先被考虑。这个规则会尝试匹配客户端是否使用了IE以及客户端是否装有.net3.5。如果是这种情况,则这个请求被转到pilotSiteServers农场来处理。由于Stop processing of subsequent rules复选框没有选中,它会继续处理第二个规则,ARR_productionSiteServers_loadbalance,此规则会将所有剩下的请求转发到productionSiteServers农场来处理。
命令行方式更改URL Rewrite规则:
1. 以administrator身份打开命令行
2. 导航到文件夹%windir%\system32\inetsrv
3. 为更改ARR_pilotSiteServers_loadbalance规则来检查IE和.net3.5,输入:
a) appcmd.exe set config -section:system.webServer/rewrite/globalRules /+"[name='ARR_pilotSiteServers_loadbalance'].conditions.[input='{HTTP_USER_AGENT}',pattern='*MSIE*']" /commit:apphost
b) appcmd.exe set config -section:system.webServer/rewrite/globalRules /+"[name='ARR_pilotSiteServers_loadbalance'].conditions.[input='{HTTP_USER_AGENT}',pattern='*.NET CLR 3.5*']" /commit:apphost
4. 为了设置规则ARR_pilotSiteServers_loadbalance的选项Stop processing of subsequent rules为不选中,输入:
a) appcmd.exe set config -section:system.webServer/rewrite/globalRules /[name='ARR_pilotSiteServers_loadbalance'].stopProcessing:"False" /commit:apphost