Nginx和Tomcat实现集群和负载均衡
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。说到Nginx和Apache的比较,在高并发连接的情况下,Nginx是Apache服务器最佳替代品。网上有一篇经典的博文,写得非常详细->点击查看
本文资料借鉴于网络
反向代理
- 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
上次整理了Apache和Tomcat实现集群和负载均衡的配置,本文简述一下Nginx和Tomcat实现集群和负载均衡。
负载均衡
- 负载均衡(Load Balance),其意思就是将负载(工作任务)进行平衡、分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
F5是操作于OSI网络模型的传输层,Nginx、Apache是基于Http反向代理方式,位于OSI模型的第七层应用层,即TCP/UDP 和Http协议的区别。
1.准备工作
-
下载Nginx
-
如果想实现SESSION共享,则需要利用memcached来保存session,以下是依赖包:
http://memcached-session-manager.googlecode.com/files/memcached-session-manager-1.3.0.jar
http://memcached-session-manager.googlecode.com/files/msm-javolution-serializer-jodatime-1.3.0.jar
http://memcached-session-manager.googlecode.com/files/msm-javolution-serializer-cglib-1.3.0.jar
http://spymemcached.googlecode.com/files/memcached-2.4.2.jar
http://memcached-session-manager.googlecode.com/files/javolution-5.4.3.1.jar
如果tomcat过多不建议session同步,server间相互同步session很耗资源,高并发环境容易引起Session风暴。而且大多数情况下,同一个用户没有必要访问不同的server。
2.安装
同Apache一样简单,Windows下载后直接解压即可。如果需要memcached,将上述5个依赖包放到$TOMCAT_HOME/lib目录下。
Linux下载后执行以下命令:
如果是Ubuntu,常用在线安装的方式:apt-get install nginx
。
3.配置
- (1)修改
/nginx.conf文件(Linux下修改sites-available/default文件,方式基本雷同):
主要改动在server里面,相当于一个代理服务器,可以配置多个。
-
listen:表示当前的代理服务器监听的端口,默认的是监听80端口。注意,如果我们配置了多个server,这个listen要配置不一样。
-
server_name:表示监听到之后需要转到哪里去,这时我们直接转到本地。
-
location:表示匹配的路径,这时配置了/表示所有请求都被匹配到这里。可以配置任意多个,采用最优匹配的原则进行代理分发;路径支持正则,一般以~开头$结尾(前面加*不区分大小写)。
-
root:里面配置了root这时表示当匹配这个请求的路径时,将会在这个文件夹内寻找相应的文件,这里对我们之后的静态文件伺服很有用。
-
index:当没有指定主页时,默认会选择这个指定的文件,它可以有多个,并按顺序来加载,如果第一个不存在,则找第二个,依此类推。
-
error_page是代表错误的页面
- (2)修改Tomcat的conf/service.xml文件,参考这里。
解决SESSION共享,则还需修改Context节点:
- (3)动静分离,即Nginx处理图片、html等静态的文件,Tomcat处理jsp动态文件。最主要用的还是location这个元素:
- (4)运行
nginx -t
检查配置是否有误,nginx -s reload
重新加载配置,nginx -s stop
关闭服务。