在大型Web应用系统中,由于请求的数据量过大以及并发的因素,导致Web系统会出现宕机的现象,解决这一类问题的方法我个人觉得主要在以下几个方面:
1.IIS 负载均衡。
2.数据库 负载均衡。
3.系统架构优化,比如报表服务器和应用服务器分开等。
本文主要介绍以下IIS负载均衡的实现方法,作者也是慢慢摸索的,如有不当之处还请各位大神指点以下,以求共同进步!!
演示环境介绍:
Server 1: 18.13 (用来分流的IIS服务器)。
Server 2: 18.49 (用来分流的IIS服务器)。
Server 3: 50.32 (用户所访问的服务器)。
用来演示的网站:一个名为WebTest的网站,内容就是一张图片,足以达到演示效果。
安装Server Farms ,如下图所示:
整个安装步骤非常简单,跟着提示走即可,安装完成之后在IIS里面可以看到Server Farms的项目了,如下图所示:
现在我们通过Server Farms 来创建Server,如下图所示:
有多少个IIS服务器就创建多少个,我这里创建了2个,创建完成之后可以在“运行状态测试”中进行测试,如下:
Server Farms判断目标IIS服务器是否正常,是通过目标服务器里面的某一个文件返回的数据来判断的,具体配置如下所示,health.txt是用来作为验证的一个文件,里面的内容是OK,那么如果这个文件返回的数据是OK,Server Farms则会判断该服务器为正常状态,反之则不正常:
对于如何去平衡服务器的压力,Server Farms已经提供了一些算法,具体如截图所示,这里不做详细的介绍,大家有兴趣的话可以逐个测试一下,
两台IIS服务器验证成功,说明我们的配置是正确的,下一步我们来测试一下:我直接访问50.32服务器,这个时候呈现出来的页面是18.49这个服务器上面的图片。
OK,现在我将18.49这台服务器的IIS停止掉,如下图所示:
当18.49这台服务器的IIS停止以后,我们再次查看Server Farms里面的服务器状态,如下图所示:
当18.49挂了之后,我们再次访问50.32服务器,结果出来了:
结论:当配置了多台IIS服务器之后,根据我们定义的均衡规则和算法,它会自动为我们协调和分配当前的请求来达到分流的目的,上面的演示中,当18.49无法访问的时候,自动贝切换到了18.13服务器。
PS:虽然是不同的服务器,呈现出来不同的内容,这里我是为了便于查看效果,所以采用的不同的图片来显示,不然不容易区分。
有一个待解决的问题:不知道Session如何处理?欢迎讨论。