一个web服务器处理的能力有限,当出现大用户量同时访问时,出现响应慢,甚至宕机。今天我们就来看看多个web服务器集群的搭建。集群有几个问题会出现:
- session的同步:由于上次请求和这次请求不一定在同一个web服务请上,会出现session数据拿不到的情况,所以要保证session在多个服务器上同步。我们采用redis保存session。
- 上传、下载文件:原因同上。因此在工程一开始就强调存图片时要用一台专门的文件服务器或者是FTP服务器来存,就是为了避免将来出现这样的问题
今天我们搭建tomcat集群,结构图如下:
1.nginx配置
nginx的下载、安装省略。安装很简单,解压到一个目录就可以了。找到安装目录下conf/nginx.conf文件,如图:
添加如下配置:
添加完成后,保存!打开命令行,找到nginx安转路径,输入:start nginx。黑色的框闪一下没了,说明nginx已经启动了。
2.tomcat配置
如果tomcat在不同的机器上,tomcat用默认的端口就行了。如果都在一台机器上,那就要保证各个tomcat端口不同,否则启动不了。如何修改端口,不用多说了。
3.redis配置
Redis是一个基于内存并可以持久化的key-value数据库。安装也很简单,解压即可。如同nginx,命令行下,输入redis-server.exe就启动了,启动如图:
4.tomcat配置redis
这里要用到Redis Session Manager for Apache Tomcat项目,https://github.com/jcoleman/tomcat-redis-session-manager 已经说的很明白了。注意,目前还不支持tomcat8。如果是tomcat6,用到的jar版本也不一样。
配置步骤,第一步:先把redis session所需的jar拷贝到{tomcat_home}/lib下。
注意,有几个tomcat集群,就要copy几份。
第二步:修改{tomcat_home}/conf下的context.xml文件,加入如下配置:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
注意:value标签必须在manager标签之前。 manager标签简单介绍:
- host : redis服务器地址
- port : redis服务器的端口号
- database : 要使用的redis数据库索引
- maxInactiveInterval : session最大空闲超时时间,如果不填则使用tomcat的超时时长,一般tomcat默认为1800 即半个小时。(经过测试,在web.xml中配置session过期时间,此时单位是秒,否则,session过期时间是30秒)。
OK,所有的配置已经完成,启动所有的tomcat看看效果。如图:
红色框框中,显示了session的过期时间。