nginx+tomcat+memcached配置负载均衡与session共享学习一
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx+tomcat+memcached配置负载均衡与session共享学习一相关的知识,希望对你有一定的参考价值。
版本信息:nginx-1.9.11 ,WEB服务器
apache-tomcat-7.0.34-1,servlet容器
apache-tomcat-7.0.34-2, servlet容器
jdk1.6
memcached 内存对象缓存系统
首先配置 nginx信息
配置路径:nginx-1.9.11\conf\nginx.conf
配置信息
#这是基本版的 其它的优化先不提供 server { #访问地址与端口号 listen 80; server_name 192.168.101.243; #charset koi8-r #access_log logs/host.access.log main; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #代理的发送请求服务器 proxy_pass http://local_tomcat; proxy_connect_timeout 5; proxy_send_timeout 5; proxy_read_timeout 5; } # 同上server proxy_pass 有配置local_tomcat 配置的两台tomcat服务器地址 pstream local_tomcat{ # weight 权重 越大访问的次数越多 max_fails访问失败2两次后就不在访问该服务器 # fail_timeout 标识不访问该服务器超过600秒后重新访问该服务器,与max_fails配合使用 server 192.168.101.243:18080 weight=1 max_fails=2 fail_timeout=600s; server 192.168.101.243:18081 weight=1 max_fails=2 fail_timeout=600s; #ip_hash;标识根据第一次访问的IP固定访问服务器,将服务器IP与客户端IP 固定起来 #还有第二种配置方法就是 根据访问的tomcat server.xml <Engine jvmRoute="tomcat1"> #需要将nginx配置在linux系统上 这需要第三方模块 没有window版本,缺点是访问的tomcat #地址宕机后,session丢失。 }
两台tomcat 配置 修改server.xml的配置信息 tomcat1 Engine 标签 添加 jvmRoute="tomcat1" tomcat2 Engine 标签 添加 jvmRoute="tomcat2" 修改 Connector标签 端口号 port="18081" protocol="HTTP/1.1" port="19091" protocol="AJP/1.3" Server port="8006" shutdown="SHUTDOWN" port="18080" protocol="HTTP/1.1" port="19090" protocol="AJP/1.3" Server port="8006" shutdown="SHUTDOWN" 运行两台tomcat 启动nginx 然后访问
访问信息为 http://192.168.101.243/testin/in.jsp
页面交替显示
TOMCAT_1 JSP Test Page
Tue Feb 23 16:10:03 CST 2016
E912147077710AF041A535F3AADC66CD-n1.tomcat1
5415651 null
TOMCAT_2 JSP Test Page
Tue Feb 23 16:10:30 CST 2016
E912147077710AF041A535F3AADC66CD-n1.tomcat2
25383887
下面 配置 memcached
在CMD 窗口 运行 memcached.exe -d install 注册为服务 然后启动该服务
将memcached提供的jar包 拷入到两台tomcat的 lib下
此处拷入的是
javolution-5.4.3.1.jar,
memcached-session-manager-1.5.1.jar,
memcached-session-manager-tc7-1.5.1.jar,
msm-javolution-serializer-1.5.1.jar,
spymemcached-2.7.3.jar
在两台comcat的context.xml里配置 此处提供拦截请求去memcached获取session对象的功能
<Manager
className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
<!-- 指向memcached 服务所在的地址,默认开启服务的端口是 11211 -->
memcachedNodes="n1:192.168.101.243:11211"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
/>
保存后 测试页面为
<html> <body> <h1>TOMCAT_2 JSP Test Page</h1> <%=new java.util.Date()%> <br></br> <%= request.getSession().getId() %> <br></br> <%= request.getSession().hashCode() %> <% session.setAttribute("set","yangjm");%> </body> </html>
<html> <body> <h1>TOMCAT_1 JSP Test Page</h1> <%=new java.util.Date()%> <br></br> <%= request.getSession().getId() %> <br></br> <%= request.getSession().hashCode() %> <%=session.getAttribute("set")%> </body> </html>
访问后出现的界面为:
TOMCAT_2 JSP Test Page
Tue Feb 23 16:20:06 CST 2016
E912147077710AF041A535F3AADC66CD-n1.tomcat2
32696671
TOMCAT_1 JSP Test Page
Tue Feb 23 16:20:26 CST 2016
E912147077710AF041A535F3AADC66CD-n1.tomcat1
22994449 yangjm
在tomcat2保存session对象值, 在tomcat1里取出tomcat2保存的值,
此处出session的ID前面一样但是逗号后面的值不一样。
以上是关于nginx+tomcat+memcached配置负载均衡与session共享学习一的主要内容,如果未能解决你的问题,请参考以下文章
Nginx反向代理+Tomcat+memcached实现session server
Nginx反代至Tomcat基于memcached的session保持
Nginx+Tomcat+Memcache实现负载均衡及Session共享