文章详解如何配置nginx、tomcat与redis实现集群环境下的session共享及负载均衡,包括软件下载、端口修改、反向代理配置及测试步骤,适用于高并发场景下的分布式部署。
一、准备工具和软件:
1、nginx
nginx是一个高性能的 http 和 反向代理 服务器, 它最大的特点是对高并发的支持和高效的负载均衡,这里用到的版本是nginx-1.7.4
请根据实际需要选择下载相应的版本。
2、tomcat
它是一款免费的web应用服务器,这里用到的版本是tomcat7.0
3、redis
redis 是一个高性能的key-value数据库,对关系数据库起到很好的补充作用,它将数据存储在内存中,保证了读取效率,同时它还支持主从同步。
4、下载地址
nginx,tomcat,redis下载地址:
1, http://redis.io/download
2, http://tomcat.apache.org
3, http://nginx.org/en/download.html
*注意:这里下载的都是免安装版,即解压后可以直接使用的。
二、需要用到的jar包
commons-pool-1.5.4,tomcat-redis-session-manager-1.2,jedis-2.1.0
请将下好的这三个包拷贝到tomcat的lib目录下,由于配置集群要用到多个tomcat,所以每个tomcat的lib目录下都要有这些包。
三、配置步骤
1、解压下载文件
解压nginx-1.674.zip到e:\nginx-1.7.4\ nginx-1.7.4目录下
解压apache-tomcat-7.0.6到 e:\apache-tomcat-7.0.6目录下
以上目录是我解压的目录,具体放到哪个目录,根据实际情况修改。
2、配置tomcat
1,由于是搭建集群环境,所以要用到多个tomcat,这里我将解压好的tomcat拷贝一份,重命名为apache-tomcat-7.0.7:(如果用到三个或三个以上tomcat,依次同理)
2,打开apache-tomcat-7.0.7下conf
3,为了不与原先tomcat的端口重复,修改server.xml文件
修改原本的8005端口,这里我改为8015,请根据自己需要自行修改为没被占用的端口
修改原本的8080端口改为8081,请根据自己需要自行修改为没被占用的端口
修改原本的8009端口改为8019,请根据自己需要自行修改为没被占用的端口
3,配置redis的session共享,同时修改e:\apache-tomcat-7.0.6\conf\context.xml、e:\apache-tomcat-7.0.7\conf\context.xml文件,在context节点中增加红圈中的部分。
<valve classname="com.radiadesign.catalina.session.redissessionhandlervalve" />
<manager classname="com.radiadesign.catalina.session.redissessionmanager"
host="192.168.23.14"
port="6379"
password="ylwl"
database="3"
maxinactiveinterval="60" />
配置中各个字段含义:
host:redis服务器ip地址
port:redis端口
password:redis数据库安全密码,若没设置密码,该字段可以去掉(网上大部分配置教程都不加该字段,但我在本地测试是会报连接被拒绝,经验证加入该字段后则可以连接)
database:数据库名,默认为0,请根据实际需要修改
maxinactiveinterval:session最大不活动时间,单位秒
3、配置nginx
找到 e:\nginx-1.7.4\ nginx-1.7.4\conf\nginx.conf 配置文件
1,在 #gzip on; 这一行后面增加以下配置:
upstream yycpsfora {
server localhost:8080;
server localhost:8081;
}
*注意:这里的server指的是你配置的tomcat服务器的ip地址和端口,localhost表示我在本地配置了两个tomcat,它们的端口分别是8080和8081,你可以根据实际需要添加更多的tomcat配置
2,修改server 的端口和服务名如下:
3,在location /大括号中增加如下配置:
location / {
root html;
index index.html index.htm index.jsp;
add_header cache-control 'no-store';
client_max_body_size 100m;
proxy_set_header host $http_host;
proxy_set_header x-real-ip $remote_addr;
proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
# proxy_cache z;
proxy_cache_valid 200 1m;
proxy_pass http://yycpsfora;
}
*特别注意:proxy_pass的值http://yycpsfora中的yycpsfora要与步骤1中的yycpsfora一样
四、集群测试
1, 分别启动两个tomcat实例,然后启动nginx,然后在浏览器中输入:http://localhost:800 将会出现以下结果,说明配置成功了:
2,访问http://localhost:800/yycpsfora/,开始测试
五、备注(开发人员注意)
注意:
1、本文中的yycpsfora为项目名。
2、若要配置session共享,需要对项目中的实体类进行序列化,如此才能在网络中传输,即实体类需要implements java.io.serializable,否则在访问项目时会报错
六、总结
到此这篇关于windows使用nginx+tomcat+redis实现web项目集群的文章就介绍到这了,更多相关windows使用nginx+tomcat+redis实现web集群内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论