看到本篇的题目,大家可能感到有点奇怪!下面,我们就来看看这到底是什么意思。
大家可能遇到过这样的一种情况:希望根据某些请求用户的特性,将用户的请求导向不同的站点(请大家这里区分“亲缘性”的概念,这里不是“亲缘性”)。如果说,大家还不是很明确,那么我们就举个例子:如果发出请求的用户用的是IE
浏览器,那么我们就将他们的请求发送到A
服务器上的站点,如果用户用的是Firefox
浏览器,那么我们就将请求转发到B
服务器。
总结一句话:根据用户的特性来,按照我们的意愿来处理不同特性的请求。
我们完全可以把ARR
的这个特性使用的更加灵活,例如,如果用户请求的是文件,那么,我们就像将其转发给文件服务器;再如,如果此时我们的站点是Beta
版本的,我们所有的请求用服务器A
来处理,等到以后站点稳定之后,我们就用服务器B
上的站点来处理请求,等等。
正如之前一样,我们首先来准备一些环境,便于测试!
首先,希望使用IIS 7
(及以上版本),并且安装ARR
,大家可以参看之前的系列文章。
其次,准备好一台服务器(虚拟机也可以)。
再次,我们在服务器上部署两个站点:pilotSite
和productionSite
。
我们本次的
目的就是:
如果发送请求的客户端安装了.NETFramework 3.5
并且还是用的是IE
浏览器,那么,我们就将请求发送给pilotSite
,否则就发送给productionSite
,并且两个不同的站点分别位于不同的两个Server Farm
中(当然,我们可以在每个Farm
中加入更多的站点)。
下面,我们就开始具体的操作。
在IIS
中部署两个站点(我们分别将其部署在不同的端口,如果愿意,大家完全可以将其分别放在两台不同的服务器上)如下图:
创建两个Server Farm
,分别名为:pilotSiteServers
,和productionSiteServers
,如下:
选中pilotSiteServers
,然后双击“
Routing Rules
”,得到如下图:
因为这里需要涉及到了使用多个Server Farm
来匹配不同的请求,所以,需要配置与URL Rewrite
。
点击了“URL Rewrite…
”之后,看到如下的界面:
我们可以看到,现在已经有了两条URL Rewrite
规则,因为此时,我们需要根据特定的用户信息来转发请求,所以,我们要修改默认的规则:
a.
我们要确保“ARR_pilotSiteServers_loadbalance
”在上面,而“ARR_productionSiteServers_loadbalance
”在下面,如果不是,可以点击“Move Up
”和“Move Down
”来调整,如下:
b.
选择“ARR_pilotSiteServers_loadbalance
”,然后点击“Edit
”开始编辑。此时看到的界面如下:
c.
按照我们之前的需求:客户端安装了.NET 3.5
并且使用IE
浏览器的请求都被转发给
pilotSiteServers
来处理,所以,我们开始添加我们的一些过滤的规则,点击“Add Conditions
”,然后点击“Add…
”,如下图:
d.
添加“{HTTP_USER_AGENT}
”,然后在Pattern
添加“*MSIE*
”,如图:
e.
然后,我们在添加另外一个规则(.NET 3.5
的那个),操作和上面的类似,如图:
f.
添加完了两个过滤规则之后,然后不勾选
“
Stop processing ofsubsequent rules
”,然后点击“Apply
”,如图:
到这里就可以运行站点了。
建议大家将两个站点部署在不同的服务器上面,因为我在测试的过程中发现:将两个放在一台服务器上面,总是报错,分开就好了!