IIS负载均衡-Application Request Route详解第三篇:使用ARR进行Http请求的负载均衡

在前两篇文章中,我们已经讲述如何配置与安装ARR,从本篇文章开始,我们将重点的来讲述如何在使用ARR进行负载均衡。

本篇文章的目的主要是一步步的带领大家如何配置和使用ARR来进行Http请求的负载均衡,从而实现高可用与高扩展性。同时,本篇文章还会着重的讲述ARR是如何监视服务器的健康状况,同时也会讲述如何设置客户端的亲缘性。

为了演示,我这里做了如下的准备工作:
    1. 配置了三台服务器(名称定为A,B,C),并且安装的是Win Server 2008,IIS与.NET Framework也安装了。
    2. 在服务器A上面安装了ARR模块。服务器A起到一个请求转发的作用!
    3. 创建了一个Server Farm,并且将服务器B,C加入到了Farm中。

另外对于服务器B,我们就部署了一个默认的站点,如下:

20120329224444.png

可以看出,配置的站点相当的简单!大家可以自己去配置不同的站点,然后在ARR添加服务器的时候,指向服务器的其他端口!

下面,我们看看,站点中有哪些内容:

20120329224632.png

在这里,我简单的放置了一个网页Default.html,这个页面的内容也非常的简单,其中的205是服务器的编号,这样写主要是为了我们后面便于辨别到底是哪一个服务器处理了我们的请求!

另外需要注意的是,我们在站点中,放置了一个health.txt文件,内容如下:

20120329224842.png

这个文件主要是给ARR进行健康检查用的,在后面的配置中,我们就可以看到它的作用了!

服务器C的配置和服务器B类似,只是页面文件的内容改为了“Response come from 216”。

整个服务器的结构如下:

20120329225007.png

配置之后的结果如图所示:

20120329225113.png

下面开始确认相关的配置信息。

确认Url Rewrite的规则

1.启动IIS

2.选择建立的AppServerFarm

3.看到如下的界面:

20120329225324.png

4. 双击“Routing Rules”图标,确认“Use URL Rewrite to inspect incoming requests被选中,如图:

20120329225412.png

5.启动浏览器,输入: http://localhost/,得到了如下的页面结果:

20120329225528.png

很显然,ARR的请求转发起作用了,确认这是205服务器在处理请求!下面,为了确认,我们来查看一下。

请求监控配置

1. 选择AppServerFarm,然后选中“Monitoring and Management

20120330085444.png

2. 双击之后,显示如下:

20120330090455.png

发现:果然是205服务器在处理请求!

配置ARR健康检查机制

1.选择AppServerFarm,然后选中右边的“Health Test”图标。

20120330085622.png

2.双击图标,得到如下界面:

20120330085646.png

大家还记得我们之前在每个站点放置的health.txt文件吗,之前说过,这个文件是用来做健康检查的:ARR定时的去通过GET请求获取文件的内容,然后和配置中的“Response match”内容进行对比,如果二者一样,说明Server Farm中的服务器正常。这和我们常常用ping命令测试网络是否连通一个道理。

注意:这里在URL中放置的:http://localhost/health.txt。为什么

我们知道,Farm中服务器很多,这里不可能设置很多的值,例如16.187.153.205/health.txt,16.187.153.216/health.txt。 ARR不允许我们这样设置。这里之所以让URL为localhost,ARR在健康检查的时候,是让各自的站点各自的去请求自己的health.txt,而每一个站点对于各自的health.txt而言,都是local的。这里的内幕,大家不需要太清楚,只要懂得配置就OK了。

另外,还可以设置健康检查的周期,和过期的时间!

配置客户端亲缘性

1.选择AppServerFarm,然后选中右边的“Server Affnity”图标。

20120330085758.png

2.双击,然后看到如下界面:

20120330085824.png

客户端的亲缘性是通过cookie来实现的。基本的流程与原理是这样的:

    1. 请求发送给ARR,假如此时ARR请求转发给服务器B。
    2. 服务器B处理请求,然后将响应发送给ARR所在的服务器。
    3. 此时ARR在响应中加入一个cookie,并且记录请求处理的服务器为B。
    4. 下一次,ARR检查发来的请求,如果发现包含了之前设置的cookie,并且检查cookie里面的服务器信息,然后将请求转发给对应的服务器。

拒绝新的请求连接

在使用Server Farm的时候,我们可以让Farm中的一些服务器不在接受新的请求连接,处于一种离线的状态。从而,使得我们可以之后将这些离线的服务器拿去维护等。

大家可以这里就有一个疑问了:如果客户端设置了服务器的亲缘性,而这个服务器又离线了,之前建立的session和相关的信息怎么办?

其实这里所说的离线,并不是真的离线,断网!而是说,这些服务器不在接受新的请求,之前已经接受的请求,还是会处理完的!

操作的步骤如下:

    1. 选中“appServerFarm“
    2. 展开“Servers“节点
    3. 在右边列出的服务器中,点击“右键“,使其离线,如图:

20120330090012.png

这里给大家留一个小作业:把Farm中的一台服务器下线,然后发送请求到ARR部署的那个服务器,看看效果!

到这里,大家就可以开始配置和使用ARR进行负载均衡了!

之后的文章,我们讲述的深入一些!

原文链接:http://www.agilesharp.com/u/yanyangtian/Blog.aspx/t-204

posted @ 2012-03-30 10:31 Ants 阅读(...) 评论(...) 编辑 收藏