Ubuntu下基于Nginx实现Tomcat集群负载均衡

Nginx是一款HTTP和反向代理服务器,有关它的介绍可以到网上搜一下,很多很多,不再累述。这里,我们记录一下Nginx的安装过程,以及如何配置Nginx来实现Tomcat集群的负载均衡。

基本思路

假如现在我们有一个使用Java实现的Web搜索服务器,用户可以通过Web页面输入关键词,搜索服务器处理搜索请求并向用户展示搜索结果。如果用户访问量很大的话,我们的这台搜索服务器承受的压力会很大,很可能由于搜索服务器的处理能力达到上限,在某一个时刻无法再处理用户新到来的请求。所以,我们就考虑将用户请求的压力分散开,即在多台服务器上部署同一套搜索服务器程序,然后通过一个负载均衡策略,将请求的压力分摊在多台搜索服务器上,这样,在用户请求量很大的情况下,很好解决单台服务器的无法处理请求的问题。

我们的想法就是,通过一台服务器做代理,使用负载均衡软件实现请求的代理转发,将用户的请求转发到多台搜索服务器上去处理,就能实现多台搜索服务器的负载均衡,而不致于单一服务器处理所有请求。

假设,我们现在有三台机器,各台服务器如下所示:

搜索服务器:192.168.0.174 RHEL 5   搜索服务器:192.168.0.181 Win 7   代理服务器:192.168.0.184 Ubuntu 11.04.1  

通过使用Nginx做反向代理,安装在192.168.0.184上。另外两台服务器均为搜索服务器,并且都安装了Tomcat Web服务器软件,搜索服务器程序就部署在Tomcat中。服务器192.168.0.184接收搜索请求, 并通过Nginx将请求转发到两台搜索服务器上进行处理,然后返回结果,通过Nginx代理响应的搜索结果。 

配置资源

这里,说明一下我们各台服务器的软件配置,及其应用端口,如下所示:

服务器IP:端口

 

软件配置

 
192.168.0.174:8080   OpenJDK 1.6.0_22, apache-tomcat-7.0.22.tar  
192.168.0.181:8080   Sun JDK 1.6.0_17, apache-tomcat-6.0.20.exe  
192.168.0.184:8888   nginx-1.0.8.targz, pcre-8.13.tar.gz  

安装配置过程

Nginx安装

下载nginx-1.0.8.targz, pcre-8.13.tar.gz这两个安装包,并解压缩到目录/home/shirdrn/tools下面,然后安装过程如下所示:

cd /home/shirdrn/tools   tar -xvf pcre-8.13.tar.bz2   tar -xzvf nginx-1.0.8.tar.gz   cd /home/shirdrn/tools/nginx-1.0.8   ./configure --with-http_stub_status_module --prefix=/home/ubuntu/servers/nginx --with-pcre=/home/ubuntu/tools/pcre-8.13   make   make install  

执行上述命令,需要使用超级用户权限,将我们的Nginx安装到/home/shirdrn/servers/nginx-1.0.8下面,由于指定了--with-pcre=/home/ubuntu/tools/pcre-8.13,即pcre的源码路径,在安装的过程首先编译pcre并安装,然后才开始配置安装Nginx。

验证是否安装成功,只需要在浏览器输入:8888/即可,默认Nginx使用80端口,这里我的80端口被占用了,所以修改为8888(有关Nginx的基本配置在下面说明)。

Ngin负载均衡配置

下面,我们看一下我们实现Nginx负载均衡的配置。配置文件为conf/nginx.conf,由于我们进行的代理的配置,通过使用一个单独的代理配置文件conf/proxy.conf,在conf/nginx.conf中引入该代理配置即可。

conf/proxy.conf的配置内容如下所示:

proxy_redirect          off;   proxy_set_header        Host $host;   proxy_set_header        X-Real-IP $remote_addr;   proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;   client_max_body_size    10m;   client_body_buffer_size 128k;   proxy_connect_timeout   300;   proxy_send_timeout      300;   proxy_read_timeout      300;   proxy_buffer_size       4k;   proxy_buffers           4 32k;   proxy_busy_buffers_size 64k;   proxy_temp_file_write_size 64k;  

各配置项的含义,可以通过查阅相关文档了解。下面看conf/nginx.conf的配置,我们根据实践修改的基本配置来做适当的说明,如下所示:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/wyyyfx.html