Nginx
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。———来自百度百科
互联网飞速发展的今天,大用户量高并发已经成为互联网的主体,怎样能让一个网站能够承载几万个或几十万个用户的持续访问呢?这是一些中小网站急需解决的问题。用单机tomcat搭建的网站,在比较理想的状态下能够承受的并发访问量在150到200左右。按照并发访问量占总用户数量的5%到10%这样计算,单点tomcat网站的用户人数在1500到4000左右。对于一个为全国范围提供服务的网站显然是不够用的,为了解决这个问题引入了负载均衡方法。负载均衡就是一个web服务器解决不了的问题可以通过多个web服务器来平均分担压力来解决,并发过来的请求被平均分配到多个后台web服务器来处理,这样压力就被分解开来。
配置Tomcat集群
由于没有多台运行Tomcat的服务器,那么我只能在我本机上运行多个tomcat程序。
先下载Tomcat
安装和配置Tomcat
直接将下载后的Tomcat解压在本地磁盘:解压两个分别命名为tomcat1和tomcat2.
修改tomcat端口(因为一台机上无法同时运行两个端口号一样的tomcat程序)
tomcat1的可以不修改,打开tomcat2的conf下的server.xml,将其所有端口号+1
<Server port="8006" shutdown="SHUTDOWN">
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8444" />
<Connector port="8010" protocol="AJP/1.3" redirectPort="8444" />
部署Nginx
事先网上下载好nginx-1.8.0的zip包,解压后如下,双击nginx.exe
打开浏览器http://localhost如果能看到这个页面,表示部署成功。
否则,则需要检查以下2点:
1.检查nginx的工作路径中是否包含中文
2.检查80端口是否已经被占用,因为nginx的默认端口也是80端口
在cmd下输入命令netstat -aon|findstr "80"查看,如果已经占用的话,需要修改nginx的默认端口,打开安装目录的conf目录下的nginx.conf文件,修改server节点内的listen属性,例如将其修改为没有占用的端口即可,例如我本机的90端口是可以使用的.
配置Nginx的负载均衡
还是打开nginx安装目录下的conf\nginx.conf文件
在http节点下,添加upstream, 名字可以随意,我这里写的是server_tomcat
upstream server_tomcat {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
然后还需要在location节点内添加代理
proxy_pass http://server_tomcat
通过以上的配置我们已经可以通过访问www.mchenys.com访问到不同的tomcat来分担服务器端的压力
Session共享
请求负载过程中会话信息不能丢失.那么需要在多个tomcat中session需要共享.
这里介绍2种解决方案:
方案1.利用web容器本身的session共享策略来配置共享
针对于weblogic这种方式还是靠普的,但是针对于tomcat这种方式存在很大的缺陷,主要因为是依靠广播方式来实现的session复制,会浪费很多带宽导致整个网络反映缓慢。官网也建议这种方式最好不要超过4台tomcat,具体的内容可参考/webapps/docs/cluster-howto.html里面有详细的说明。
步骤一、修改tomcat1和tomcat2根目录下的conf/server.xml文件
最简单的集群配置只需要将节点中注释掉的下面这句取消注释即可
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
步骤二、修改项目的web.xml文件
web.xml文件的修改很简单:只需要在节点中添加这个节点<distributable/>
就可以了。
方案2.固定ip地址访问
保证一个ip地址永远的访问一台web服务器,就不存在session共享问题了
打开nginx安装目录下的conf\nginx.conf文件,在upstream中添加 ip_hash;