利用Jexus的“多目标反向代理”功能,我们很容易实现多服务器的负载均衡,构成一个WEB服务器集群,大大提高网站的负载能力。 Jexus反向代理有一个特点:如果前端服务器本地网站中有内容,它就会直接使用前端服务器的本地内容,而不会将请求发送给后端服务器。
据我们所知,对于网站,一个ASPX网页上常常会含有图片、JS、CSS等大量的静态文件,其比例甚至可以达到一比三十或更多,因此,如果你希望为静态文件提供更快的反应速度,你只需要把静态文件放到前端服务器对应网站的对应文件夹下就行。
Jexus的反代很灵活,既可以以文件夹为单位对某个单一目标进行反代,也可以整站反代,关键是看你怎么设置。
比如:如果目标网站是: http://a.b.com/
那么,你就可以设:
reproxy=/ http://a.b.com/
这就是整站。甚至还可以把一个整站作为你的一个虚拟路径:
如:
reproxy=/blog/ http://blog.xy.com/
反向代理负载均衡具体的配置方法如下:
假设有一台面向用户的服务器作为前端服务器,IP地址为1.1.1.1,在这台服务器的后面,有二台工作服务器,分别为1.1.1.2和1.1.1.3。1.1.1.2由80端口提供服务,1.1.1.3由80、81两个端口(更多也行)同时提供服务,那么,只需要一行文字就可以实现这两台服务器的负载均衡:
在192.168.1.1的网站配置文件中加一句:
reproxy=/ http://1.1.1.2/,http://1.1.1.3:80/,http://1.1.1.3:81/
配置文件生效后,当用户访问 1.1.1.1 时,Jexus就会把用户的请求随机转发给1.1.1.2和1.1.1.3这两台工作服务器的三个服务端口,从而实现了负载均衡的目的。
注意:
多台服务器同时为同一个网站提供服务,存在着一个SESSION同步的部题。在Jexus上同步SESSION很方便:你只需要把每个网站的State服务器IP地址指向同一台服务器IP地址就行。具体方法是,修改网站的web.config,在system.web节中加入:
<sessionState mode="StateServer" stateConnectionString="tcpip=x.x.x.x:42424" timeout="60" />
Jexus对State服务器的控制能力比较强,一旦State服务器的服务程序崩溃退出,Jws就会在10秒之内自动重启它,所以,就机制而言,其稳定性是很高的,一般不会出现问题