现在大部分网站都有使用负载均衡的技术,这样可以提高网站的稳定性和访问量的分流,加快访问速度。下图是一个演化的过程,从单台Server到多台Server:
负载均衡技术的介绍,网上有很多,这里引用一段:
由于网络的数据流量多集中在中心服务器一端,所以现在所说的负载均衡,多指的是对访问服务器的负载进行均衡(或者说分担)措施。负载均衡,从结构上分为本地负载均衡和地域负载均衡(全局负载均衡),前一种是指对本地的服务器集群做负载均衡,后一种是指对分别放置在不同的地理位置、在不同的网络及服务器群集之间作负载均衡。
每个主机运行一个所需服务器程序的独立拷贝,诸如Web、FTP、Telnet或e-mail服务器程序。对于某些服务(如运行在Web服务器上的那些服务)而言,程序的一个拷贝运行在群集内所有的主机上,而网络负载均衡则将工作负载在这些主机间进行分配。对于其他服务(例如e-mail),只有一台主机处理工作负载,针对这些服务,网络负载均衡允许网络通讯量流到一个主机上,并在该主机发生故障时将通讯量移至其他主机。
其他参考:网络负载均衡技术概况
现在对于大型的商务网站,都会购买负载均衡器来完成硬件的负载均衡,比如使用DNS,代理服务器等,但是对于测试环境由于条件和成本的限制,往往无法使用硬件,一般是使用双网卡,同时安装Network load banlancing协议,使用软件的方式来实现负载均衡,之后在属性中分配指定的IP地址,如下图:
在Host Parameters里面可以指向同一个Host,比如xxx.domain.com,这样,部署了多台的服务器都可以同时使用一个Host访问。这里以2台机器为例,一般最少需要4个IP地址,每台2个,一个IP给内部使用,一个是给外部查看。
下面就介绍下如何测试Web的负载均衡,这里平台以Windows为例(Linux其他的实在不熟),同时Web是部署在IIS中,有2台Server组合做负载均衡,Web是Asp.net 开发的,当然Web不仅仅是以前提到的Website,同样也适用目前比较流行的WebApplication。
其实步骤很简单:
1、首先两台Server都启动
2、需要开发一个页面,比如是test.aspx,用来显示此时访问的Web是使用哪台Server,也就是显示Server的外部IP地址,类似下图:
3、注意,访问Web的时候都是用Host的那个URL来访问,例如我的博客oscarxie.cnbologs.com,而不使用IP
4、输入Host/test.aspx不断访问Web,因为这时候你所访问的Server是随机分配的,以看到2个不同的IP为准,例如2个IP为:192.168.0.1,192.168.0.2,这2个IP都能访问到即可
5、再次访问Web,并获得此时是在哪台Server上,比如为192.168.0.1,这时关闭192.168.0.1这台Server或停止这台Server的IIS,这时继续访问Web,确保不出现异常,同时访问test页面,看是不是Server切换到192.168.0.2上,这样通过负载均衡,做到了平滑的切换。(这个过程手工或自动化都可以)
当然如果Web使用了Session,这个时候还需要做程序的处理,比如Session需要在2台Server都要存在,Session的存储,是在State Service还是在DB中不属于讨论的范围了,博客园中很多牛人肯定介绍过,不在此班门弄斧了。
通过负载均衡还有一个好处就是当Web在真实环境时,新的项目上线部署可以不必停掉Web,可以逐台关闭Server进行部署,不影响Web的正常使用,只要保证还有一台Server在运行就可以了。