您的位置:首页 > 数据库 > Redis

Nginx负载平衡 + Tomcat + 会话存储Redis配置要点

2016-04-20 21:51 471 查看
http://www.jdon.com/performance/tomcat-nginx-redis.html使用Nginx作为Tomcat的负载平衡器,Tomcat的会话Session数据存储在Redis,能够实现0当机的7x24运营效果。因为将会话存储在Redis中,因此Nginx就不必配置成stick粘粘某个Tomcat方式,这样才能真正实现后台多个Tomcat负载平衡,用户请求能够发往任何一个tomcat主机,当我们需要部署新应用代码时,只要停止任何一台tomcat,所有当前在线用户都会导向到运行中的tomcat实例,因为会话数据被序列化到Redis,在线用户不会受到影响,一旦停掉的tomcat实例上线,另外其他重复部署过程。

Nginx

  首先,我们安装Nginx:$ sudo rpm -ivh nginx-1.4.2-1.el6.ngx.x86_64.rpm编辑/etc/nginx/nginx.conf,加入负载平衡配置:http {upstream tomcat { server localhost:8080; server localhost:8081; }include /etc/nginx/mime.types;default_type application/octet-stream; 更新/etc/nginx/conf.d/default.conf,用下面location配置替代原来:location / { proxy_pass http://tomcat; }重新启动Nginx:sudo service nginx restart

Tomcat实例

  下面我们开始安装两个Tomcat实例,改变第二个服务器端口,防止它们冲突,这时如果你在浏览器输入 https://localhost,我们访问到缺省的Tomcat页面,因为我们没有设置会话粘粘sticky sessions,每个请求分发使用负载平衡round robin算法,也就是意味着每次请求都会创建一个新的会话,通过tomcat内建案例可以方便看到这种行为,进入http://localhost/examples/servlets/servlet/SessionExample,过一会儿刷新一下这个页面,注意到每次Session ID都会改变,让我们来解决这个问题。  下载安装Redis,在http://redis.io/download 有文档说明如何安装和启动,启动服务器以后,使用客户端程序检查是否正在工作。  最后,我们需要配置Tomcat存储会话到Redis,我们需要使用 tomcat-redis-session-manager开源库包,具体需要一些调整,下载这个项目的源码项目,重新构建,本文使用版本为commons-pool2-2.2.jar 和 jedis-2.6.1.jar.复制这些Jar到tomcat的lib目录。  将你的commons-pool, jedis 更新版本和tomcat版本在tomcat-redis-session-manager的build.gradle中配置一下,然后重新构建项目,将构建结果 tomcat-redis-session-manager-1.2.jar 复制到tomcat lib目录下,两个实例都要复制,在tomcat的context.xml中配置:<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /><Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="localhost" port="6379" database="0" maxInactiveInterval="60" />  重新启动tomcat一切完成,你现在可以看到tomcat会话存储在redis中,使用先前tomcat内置案例,试验两个tomcat开机和关机不同情况进行测试,会话数据都不会受到影响。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: