IIS负载均衡(一)

转载 2012年03月27日 23:00:16
说到负载均衡,相信大家已经不再陌生了,本系列主要介绍在IIS中可以采用的负载均衡的软件:微软的Application Request Route模块。
 
       其实Application Request Route已经有很多文章介绍过了,但是有很多的文档都是英文的,笔者在项目中,曾经为了使用和测试Application Request Route,将有关的文档已经转为中文,在组员之间传阅,本系列在这些文档的中,再加入一些使用的心得。
 
本篇议题如下:
Application Request Route介绍
Application Request Route安装
 
 
系列文章链接:
<a title="IIS负载均衡-Application" request="" route详解第一篇:="" arr介绍"="" href="http://www.agilesharp.com/u/yanyangtian/Blog.aspx/t-196" target="_blank" data-mce-href="/u/yanyangtian/Blog.aspx/t-196" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(104, 39, 2); text-decoration: none; ">IIS负载均衡-Application Request Route详解第一篇: ARR介绍  
 
Application Request Route介绍
 
Application Request Route(后面简称为ARR)是一个寄宿于IIS7(及以后的IIS版本)的一个基于代理的模块,它可以通过判断Http Headers,Server Variables以及负载均衡算法将HTTP的请求转发到不同的处理服务器之上。ARR的用处如下:
    1. 增强应用的可用性与扩展性
    2. 更好的利用服务器资源
    3. 使得应用程序的部署更加方便,并且支持卫星部署管理与热替换
    4. 更低的管理成本,使得共享宿主的部署成为可能
 
ARR是基于URL Rewrite Module的,它通过检测客户端发来的HTTP请求来做出请求路由的决定。
20120326103946.png
 
下面,我们就进一步的看看ARR的一些特征:
 
1.基于HTTP请求,做出的请求路由的决定
 
       与硬件的负载均衡不同(在OSI模型的IP层来决定请求的路由方式),ARR是基于应用层来进行负载均衡的,因为在应用层可用的信息更多(其实谈到这里,是很有必要把负载均衡的原理讲清楚的,但是,因为本系列主要是讲述ARR,所以,对已一些底层原理性的概念,不会做过多的涉及,以后计划为朋友们系统的讲述负载均衡的原理及其实现,可以参看:负载均衡第一篇-介绍篇)。通过在ARR中使用URL  Rewrite Module,我们就可以实基于Http Headers与Server Variables来实现个更强大的路由规则。
 
2.提供多种负载均衡算法
我们可以自己决定使用哪一种负载均衡算法来进行请求的路由,ARR提供了以下6种算法。
 
3.健康检查
       我们可以使用“实时通信“和”特定Url测试“来检查服务器的健康状况。并且,我们还可以通过使用很多的参数来决定到底什么样的状况才是健康的正常的服务器,例如,有人认为只要服务器是开启的,就是健康的;也有人认为,服务器开启,并且处理的请求没有超载是健康的,等等。另外,我们还可以通过使用自己的提供Health Monitoring Provider来实现自己的健康检查可能。
 
4.客户端亲缘性
       关于亲缘性,相信大家不再陌生,我这里稍微的提一下:就是更加倾向于,或者喜欢那个。例如,在SQL Server中可以设置CPU的亲缘性,,假设现在有四个CPU,编号分别是A,B,C,D,现在我们SQL Server的CPU亲缘性设置到A上,就是说: SQL Server在处理请求的时候,更加喜欢把请求发送给编号为A的CPU来处理,当然也会将请求发送给其他的CPU,但是A的CPU处理请求的机会更多。
 
同理,在ARR中,可以通过设置客户端的亲缘性,ARR主要是通过使用Cookie来实现的。至于如何实现的,其实也很简单,这里暂且不说。
 
这里就来说说客户亲缘性的一些需要考虑的点:
    1. 如果使用了客户端亲缘性,就可以在应用中使用传统的Session和Cache,而没有必要使用分布式的Session和Cache。这里,以Session为例子,因为很多的时候,我们都需要将一个站点应用部署到多个服务器上,如果在某些地方使用了Session,特别保存用户的一些数据的时候,就需要使用分布式的Session,用户登录就是一个最明显的例子(避免用户从服务器A上登录,当下一次请求在B服务器处理的时候,还需要再次登录)。使用客户端亲缘性,ARR就可以将同一个用户的请求再次转发到用户第一次请求的服务器上。
    2. 使用客户端亲缘性,就在一定程度上面失去了负载均衡的意义。因为设置了客户端亲缘性,即使用户初次请求的服务器现在压力很大,那么ARR还是会将用户的请求转发过去。
    3. 客户端亲缘性,失去了高可用性。因为很有可能现在处理用户请求的服务器已经宕机了,虽然ARR有健康检查机制,但是ARR还是可以将请求发给宕机的服务器,导致请求无法处理。 
5.宿主名亲缘性
理解了上面的“客户端亲缘性“,这里就更加容易理解了。“ 宿主名亲缘性”主要使用在共享服务器中的(很多人使用一台服务器,就是站点部署的时候,购买的是“虚拟地址空间”)。我们后面在提到的时候,会详细讲解。
 
6.服务器分组
ARR可以管理很多的服务器组,其中每一组又包含多台服务器服。
 
7.基于图形化界面的管理与健康
ARR与IIS集成,并且,通过了可视化的,便于操作的可视化操作界面。
 
 
8.制定请求失败的跟踪规则
在ARR中,可以定义特定的跟踪规则,当请求处理失败之后查看跟踪信息,便于诊断。
 
Application Request Route安装
下面,我们就介绍ARR的安装,便于大家快速上手与学习:
ARR依赖于以下组件:
    1. Microsoft URL Rewrite Module for IIS 7.0.
    2. Microsoft Web Farm Management Version 1 for IIS 7.0.
    3. Microsoft Application Request Routing Version 1 for IIS 7.0.
    4. Microsoft External Cache Version 1 for IIS 7.0.
              
ARR的安装,需要相关的环境,如下:
    1. IIS 7.0 以及以后的版本(笔者在Win 7和Server2008中都安装过,是可以的)
 
下面开始进入安装:
 
1. 下载ARR:
现在ARR已经发展了2.5的版本,可以说已经很稳定了,笔者也在一些大型项目中已经采用,效果还不错。
 
 
2. 现在ARR集成在Web 安装平台中,如下:
20120326104119.png
 
3.点击“Install”,开始安装
4.安装之后,打开IIS的控制窗口,如下(Win7系统的界面):
20120326102150.png
如果看到有“Server Farms”,就说明安装OK了。
 
5.配置应用程序池
所有的HTTP请求都需要经过ARR。所以,我们希望在安装了ARR的服务器上的IIS要必须不停的运行,不停把请求转发到其他的服务器上面,也就是说:这台安装了ARR的服务器基本的功能就是请求转发。
 
假设现在我们手里有3台服务器(编号分别为A,B,C)来部署agilesharp的站点,安排如下:
20120326104255.png
现在服务器A向外面暴露的地址假设为:159.12.2.15,那么我们在A服务器上建立一个agilesharp的站点,如下:
20120326104335.png
并且,我们设置agilesharp站点的应用程序池为IIS的集成模式。这个时候,因为这个站点其实只是暴露给外面,真正的请求处理在B和C服务器。所以,我们要设置这个agilesharp的站点的应用程序池,从而它源源不断的接受HTTP请求(应用程序池默认是不会不断的介绍请求的,它有一个时间的延时,这个延时的时间往往就是默认的请求处理时间),然后由ARR转发。
 
设置如下:
20120326104412.png
Idle Time-out (minutes)设置为0,然后保存就OK了。 
OK,介绍就到这里,下一篇,我们就来看看一些具体的应用!

IIS负载均衡配置

一、Inproc模式 Inproc是缺省的设置,这种模式和以前的ASP的会话状态的方法是类似的,会话的状态会被保存在ASP.NET进程中,它的优点是显而易见的:性能。进程内的数据访问自然会比夸进程的访...
  • LanSeTianKong12
  • LanSeTianKong12
  • 2015年09月07日 14:35
  • 1724

架构之路:nginx与IIS服务器搭建集群实现负载均衡(三)

【前言】     在《架构之路:nginx与IIS服务器搭建集群实现负载均衡(二)》中提到有好多有趣的地方,接下来就为大家一块儿讲讲在研究过程中遇到那些有趣的事情。 【实战】     在《架构之路:n...
  • u012829124
  • u012829124
  • 2016年03月10日 22:19
  • 5279

windows下利用nginx 做IIS负载均衡

如果网站流量变大,就想加服务器分担压力,当然就要用到负载均衡,在windows 2003有自带的网络负载均衡,但配置还是挺麻烦的虽然有轮训和iphash的效果,但效果不算好. nginx小巧,下载不...
  • smartsmile2012
  • smartsmile2012
  • 2014年08月28日 16:38
  • 1375

IIS下建立负载均衡的虚拟目录方法

IIS下建立负载均衡虚拟目录的方法当有两台负载均衡服务器(同时运行相同的网站),需要让其访问共同的目录文件,且保证目录文件上传、下载都能正常运作,有两种解决途径(还有很多种方法): 1、在负载均衡所在...
  • zzy5066
  • zzy5066
  • 2017年05月31日 11:18
  • 350

IIS负载均衡-Application Request Route详解第五篇:使用ARR来配置试点项目

看到本篇的题目,大家可能感到有点奇怪!下面,我们就来看看这到底是什么意思。         大家可能遇到过这样的一种情况:希望根据某些请求用户的特性,将用户的请求导向不同的站点(请大家这里区分“亲...
  • orichisonic
  • orichisonic
  • 2016年06月19日 16:09
  • 839

windows系统利用IIS实现网站服务网络负载均衡

在Windows Server 2003中,网络负载均衡的应用程序包括Internet信息服务(IIS)、ISA Server 2000防火墙与代理服务器、VPN虚拟专用网、终端服务器、Windows...
  • w263756314
  • w263756314
  • 2016年06月06日 15:39
  • 213

Windows平台分布式架构-负载均衡(高并发)

缘由单纯想在winodows平台部署分布式程序,微软在IIS扩展的介绍中有涉及到Application Request Router + Web Farm + Url Rewriter可以实现分布式部...
  • lee576
  • lee576
  • 2015年11月02日 17:58
  • 6574

IIS负载均衡

首页 系统网络管理 iis负载均衡集群 2003iis负载均衡 负载均衡技术 网络负载均衡 网站网页负载均衡 IIS负载均衡。想实现iis6负载均衡。1.iis应该如何实现负载均衡 2.实现后对于用户...
  • hanchi8008
  • hanchi8008
  • 2009年05月18日 13:22
  • 5687

windows下使用IIS的ARR实现站点的负载均衡

1) 目的: 访问localhost:18066 对下边两个端口负载 localhost:18098 localhost:18099 2) 手段: 1.通过ngin...
  • zzy7075
  • zzy7075
  • 2017年06月15日 17:58
  • 1756

Nginx+IIS实现负载均衡

负载均衡是什么?当大型的Web程序遇到高并发的时候,往往单点服务器是扛不住这么多用户的同时访问的,就会使程序宕机,所以我们就需要使用负载均衡来实现。当然也还有其他的方法解决高并发的问题。今天就简单的介...
  • cd18333612683
  • cd18333612683
  • 2017年03月01日 16:32
  • 360
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IIS负载均衡(一)
举报原因:
原因补充:

(最多只允许输入30个字)