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

nginx+tomcat+memcached配置负载均衡与session共享学习一

2016-02-23 16:23 405 查看
版本信息: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前面一样但是逗号后面的值不一样。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: