Nginx介绍
Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”, 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.这个小巧的东西慢慢地在吞食apache和IIS的份额,说到反向代理,可能很多人都听说,但具体什么是反向代理,很多人估计就不清楚了。摘一段百度百科上的描述:
反向代理方式实际上就是一台负责转发的代理 服务器,貌似充当了真正服务器的功能,但实际上并不是,代理服务器只是充当了转发的作用,并且从真正的服务器那里取得返回的数据。这样说,其实nginx 完成的就是这样的工作。我们让nginx监听一个端口,譬如80端口,但实际上我们转发给在8080端口的tomcat,由它来处理真正的请求,当请求完 成后,tomcat返回,但数据此时没直接返回,而是直接给nginx,由nginx进行返回,这里,我们会以为是nginx进行了处理,但实际上进行处 理的是tomcat。
说到上面的方式,也许很多人又会想起来,这样可以把静态文件交由nginx来进行处理。对,很多用到nginx的地方都是作为静态伺服器,这样可以方便缓存那些静态文件,比如CSS,JS,html,htm等文件。
为什么需要对Tomcat服务器做负载均衡
Tomcat服务器作为一个Web服务器,其并发数在300-500之间,如果有超过500的并发数便会出现Tomcat不能响应新的请求的情况,严重影响网站的运行。另外,在访问量大的情况下,Tomcat的线程数会不断增加。由于Tomcat自身对内存的占用有控制,当对内存的占用达到最大值时便会出现内存溢出,对网站的访问严重超时等现象,这时便需要重新启动Tomcat以释放占用的内存,这样做便会阻断网站运行。
所以对Tomcat做负载均衡便很有必要。目前可以和Tomcat做负载均衡的主流服务器是Apache,但是Nginx由于功能多、配置简单等优点逐渐成为很多负载均衡服务器的首选。Nginx的并发数可达到50000,所以理论上可以和Tomcat以1:100的比例来配置,这样便可以很好的解决网站并发瓶颈问题。而且Nginx、apache是基于http反向代理方式,位于ISO模型的第七层应用层。直白些就是TCP UDP 和http协议的区别,Nginx不能为基于TCP协议的应用提供负载均衡。
Nginx目录结构
配置方法
操作系统在Windows 8系统上模拟。以后更新在Ubunto系统上模拟,敬请关注
服务器列表:
Apache端口默认为8080,nginx默认端口为80,以上服务器单独测试有效后,进行负载均衡配置
关于nginx的安装与测试参考我的文章:https://www.youcl.com/info/3107
第一步:修改tomcat端口号,避免多个tomcat启动时端口号冲突
步骤一,修改Http端口
分别修改tomcat的Http端口,tomcat7的端口修改为8088,tomcat8的端口修改为8089,操作步骤一样。
在\apache-tomcat-7.0.52\conf\server.xml中找到一下代码段
将端口号修改为8088 (端口号自定义,只要不冲突就行)
步骤二,修改关闭端口
修改关闭端口,这里修改tomcat 8的关闭端口,tomcat 7默认不修改。
在\apache-tomcat-8.0.20\conf\server.xml中找到以下代码段
修改为
步骤三,修改AJP端口
修改tomcat 8的AJP端口,tomcat 7默认不修改。
在\apache-tomcat-8.0.20\conf\server.xml中找到以下代码段
修改为
步骤四,修改Https端口(可选)
修改修改tomcat 8的Https端口,tomcat 7默认不修改。
在\apache-tomcat-8.0.20\conf\server.xml中找到以下代码段
测试
保存完成,就可以测试了
第二步:配置Nginx
#Nginx配置文件主要分为4部分:
main(全局设置)部分设置的指令将影响其他所有设置;
server(主机设置)部分的指令主要用于指定主机和端口;
upstream(负载均衡服务器设置)部分指令主要用于负载均衡,设置一系列的后端服务器;
location(URL匹配特定位置的设置)部分用于匹配网页位置。
四者之间的关系:server继承main,location继承server,upstream既不会继承其他设置,也不会被继承。
在\nginx-1.9.0\conf\nginx.conf文件中手动添加以下内容
修改完nginx.conf文件之后,使用nginx -t命令先测试一下配置文件的正确性,
然后再使用命令nginx -s reload 重新启动nginx,配置完成后测试。
测试
启动tomcat 7和tomcat 8,然后启动nginx,直接在浏览器中输入http:localhost:80,即可看到配置地址已经被转发到了tomcat界面,如果其中一个tomcat挂掉,nginx会转发到另外一个tomcat。
如果tomcat都挂掉,Nginx会调用error界面,默认nginx.conf中配置的是50x.html,位于\nginx-1.9.0\html\50x.html
总结
至此window下nginx+tomcat负载均衡配置结束,关于tomcat Session的问题通常是采用memcached,或者采用nginx_upstream_jvm_route,他是一个Nginx的扩展模块,用来实现基于 Cookie的 Session Sticky的功能。如果tomcat过多不建议session同步,server间相互同步session很耗资源,高并发环境容易引起Session风暴。请根据自己应用情况合理采纳session解决方案。