'Nginx本机多个Tomcat负载均衡测试'

nginx多tomcat负载均衡
目的先说说我要干什么,如题:使用nginx实现多个tomcat服务器的负载均衡。

nginx大名鼎鼎,相信很多人都听过,以前感觉很厉害,用了之后发现真的很厉害。nginx可以做以下几件事:

* 反向代理
* 负载均衡
* 动静分离
* 网页、图片缓存

需要明确的是nginx并不是应用服务器,也就是说nginx不能处理动态请求(和apache一样,熟悉apache应该知道),比如jsp、php等页面,nginx把这些请求转发给能处理这些页面的程序。
反向代理好吧,之前我也为这个问题纠结挺久,为什么叫反向?既然有反向,那肯定有正向,现有客户端x,代理服务器y,最终服务器z,现在x直接访问z:x->z,通过代理服务器y:x->y->z,无论正反代理服务器y都是位于x、z之间,正反是根据代理服务器代理的是谁来判断的

* 正向:代理服务器y代理的是客户端,站在客户端的角度上是正向的,所以是正向代理
* 反向:代理服务器y代理的是最终服务器z,站在客户端的角度上是反向的,所以是反向代理

好吧,这是我的理解,可能不够详细,这里给大家推荐一片文章,介绍的挺好的:http://bbs.51cto.com/thread-967852-1-1.html
负载均衡现在客户端所有请求都经过nginx了,那么nginx就可以决定将这些请求转发给谁,如果服务器A的资源更充分(CPU更多、内存更大等等),服务器B没有服务器A处理能力强,那么nginx就会吧更多的请求转发到A,转发较少的请求到服务器B,这样就做到了负载均衡,而且就算其中一台服务器宕机了,对于用户而言也能正常访问网站。
动静分离借助于nginx强大的转发功能,可以通过配置实现网站的动态请求和静态文件进行分离,将动态请求发送到服务器A,将静态文件转发到服务器B,这样便于nginx做静态文件的缓存和后期对网站使用CDN。
实现多tomcat负载均衡tomcat和nginx安装再次不再赘述,不过注意如果多个tomcat安装在同一台机器上的话,注意修改server.xml(在%tomcat_home%/conf/server.xml)中的端口号,以下是我的tomcat配置情况

tomcat A:10.10.31.11:8888
tomcat A:10.10.31.11:9999
nginx配置,nginx.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
     # 配置多个服务器
upstream web_app{
server 10.10.31.11:8888;
server 10.10.31.11:9999
}
server{
       # nginx监听80端口
listen 80;
       # 特别注意server_name配置,这儿在实际使用中配置多个域名,比如test.com www.test.com,
server_name localhost 127.0.0.1;
location / {
root html;
index index.html;
proxy_pass http://web_app;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 100m;
}
}
}

验证
service nginx start
访问:localhost或者127.0.0.1会发现两个tomcat首页在交替(为了区分两个tomcat,建议修改%tomcat_home%/weapps/ROOT/index.jsp页面,如修改两个title分别为8888, 9999)
很简单的配置,只有简单的负载均衡,而且两台服务器的权重也是一样的,这样配置主要是为了解决一个问题:因为系统已经上线了,如果在使用过程中发现了bug需要赶修复并重新部署,不能每次部署就shutdown-start吧,用户突然就不能访问网站了,还有一种方法就是等夜深人静没人访问网站的时候部署,更科学的方法是使用nginx做负载均衡,这样启动两台服务器A、B,部署A的时候B还在正常运行,部署完A,启动A,再部署B。
当然了,使用nginx做负载均衡之后还有一个很重要的问题待解决——session集群共享,接下来想使用shiro和redis做session集群共享,这样子随着业务的增长,后期有更多的服务器需要负载均衡也算是有基础了。

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
,