我们在上一篇Windows平台分布式架构实践 - 负载均衡中讨论了Windows平台下通过NLB(Network Load Balancer) 来实现网站的负载均衡,并且通过压力测试演示了它的效果,可以说还是非常的理想的。同时我们也收集到了不少的问题,比如说如何在这种分布式的架构下使用Session,NLB中有一台服务器挂掉了会导致对外暴露的地址无法访问,如果实现服务器之间的同步,如果更好的进行热修复等等,还有我们在上一篇中也提到了NLB所提供的功能是非常简单的,为了回答我们前面提到的问题,也为了提供一个比较全面完整的负载均衡方案,我们来看看Windows平台下负载均衡的另一种实现APR (Application Request Router + Web Farm + Url Rewriter),希望可以为大家解决一些实现的问题。
目录
安装配置负载均衡 安装相关组件
话不多说,为了实现一个比较完整的负载均衡,我们要引入以下5个组件。
安装Web Fram 必须要先安装Web Deploy 和Web Platform,所以我把它们俩放在最前面,你也可以参考上面的顺序来安装,当然你首先得自己把IIS和ASP.NET 模块给装上。我们这次不会对这5个组件的原理做详细的介绍,大家知道怎么操作就可以了,如果有兴趣的同学可以继续深入。安装过程非常的简单,基本上每一个组件只需要点一下按钮就可以了,全部安装完之后,你就会在当前那台机器上的IIS下看到一个Server Farms的结点。
配置负载均衡如果大家还有印象,在使用NLB配置负载均衡的时候,我们是不需要一台单独的机器来作为主入口的。 我们给所有的WEB服务器都安装上NLB,然后选择任意一台将其它的WEB服务器加进入同时设置一个单独的IP作为入口地址即可。 但是换成APR,情况就有点不一样了。我们需要一台单独的入口服务器来接收所有的请求,由它再把所有的请求根据配置的规则转发给其它真实的WEB服务器。
3 台Web 服务器我们还是用我们上次做过实验的那三台,我们再添加一台配置一样的虚拟机,然后给这4台服务器全部安装上APR(包括我们上面列出的5个组件)之后,我们就可以开始配置了。我们首先在我们的入口服务器上创建一个Web Farm。在IIS中右击Server Farms -> Create Server Farm,
我们勾上“Server farm is available for load balancing(在Web Fram中使用负载均衡)” ,下面的“Provision server farm”,我们也勾上,并为它输入一个账户,这个账户要求有权限可以访问这个Web Farm里面的所有服务器。Provision 主要是用来实现主-从服务器同步的,我们暂时先忽略它,后面再具体讲。
我们将192.168.1.130设置我们的主Web 服务器,一会我们结合Provision(俺不知道这个翻成中文该叫什么,直译“提供”好像很别扭) 功能就可以实现在主服务器上部署和更改配置就会被自动同步到其它的服务器上。完成创建Web Farm之后,我们就可以在IIS中进行后面的配置了。我们通过点击每一个Web Farm下的Servers来查看每一个Web服务器的状态,是不是连接正常等等 。
同时我们还可以点击每一个Web farm来进行以下功能的管理,这里我们就点击Mono。
配置Load Balance 算法
我们首先要做的就是进入 “Load Balance”,在这里你可以选择负载均衡的算法 :轮转调度,随机分配,URL参数,请求头等。如果不了解这些算法干什么 的,那就去复习上一篇吧。APR为我们提供了以下7种算法:
Weighted round robin 根据权重按照请求数据进行分配
Weighted total traffic 根据权重按照请求和响应字节大小进行分配
Least current request 优先转发给那个当前处理最少请求的服务器
Least response time 优先转发给那个当前响应最快的服务器
Server variable hash 根据服务器变量的hash来分配请求,这里面的服务器变量包括Cookie, URL,头信息等 ,详情点这里。