nginx+tomcat的集群和session复制
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了nginx+tomcat的集群和session复制,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3848字,纯文字阅读大概需要6分钟。
内容图文
前端服务器采用nginx,后端应用服务器采用tomcat。nginx负责负载均衡,session复制在tomcat上处理。
1、nginx安装(略)
2、nginx配置负载均衡
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
#设置负载均衡列表
upstream backend
{
#ip_hash;
server localhost:8081;
server localhost:8082;
}
#设置虚拟主机
server {
listen 8888;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root "E:\test";
index index.html index.htm;
proxy_redirect off;
#保留用户真实信息
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://backend;
}
}
}
2、tomcat安装(略)
3、tomcat负载均衡配置
分别修改两个tomcat中的server.xml文件,找到<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">类似这句话
1)两个tomcat分别设置为jvmRoute="jvm1",jvmRoute="jvm2";
2)在这句话加入以下内容(直接复制使用即可)
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="8">
<Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4"
frequency="500"
dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
autoBind="100"
selectorTimeout="5000"
maxThreads="6"/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=""/>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
3、在你的项目WEB-INF下的web.xml中添加
<distributable/>
4、测试
建立文件夹testCluster,在文件夹下建立WEB-INF文件夹,在WEB-INF文件夹下放入web.xml(web.xml内容中记得加入<distributable/>),在testCluster文件夹中放入testCluster.jsp,testCluster.jsp内容如下:
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html><head><title>Cluster Test</title></head>
<body>
<%
//HttpSession session = request.getSession(true);
System.out.println(session.getId());
out.println("<br> SESSION ID:" + session.getId()+"<br>");
// 如果有新的请求,则添加session属性
String name = request.getParameter("name");
if (name != null && name.length() > 0) {
String value = request.getParameter("value");
session.setAttribute(name, value);
}
out.print("<b>Session List:</b>");
Enumeration<String> names = session.getAttributeNames();
while (names.hasMoreElements()) {
String sname = names.nextElement();
String value = session.getAttribute(sname).toString();
out.println( sname + " = " + value+"<br>");
System.out.println( sname + " = " + value);
}
%>
<form action="testCluster.jsp" method="post">
名称:<input type=text size=20 name="name">
<br>
值:<input type=text size=20 name="value">
<br>
<input type=submit value="提交">
</form>
</body>
</html>
启动nginx、tomcat1、tomcat2,通过nginx端口访问testCluster.jsp。输入名称和值,不断刷新页面。
现象:
1、tomcat1、tomcat2后台轮询打印出信息。【达到负载均衡】
2、tomcat1端口访问tomcat1端口访问testCluster.jsp输入名称和值,提交。tomcat2端口访问testCluster.jsp能看到tomcat1提交的数据。【达到session复制】
原文:http://www.cnblogs.com/czrwxw/p/3992628.html
内容总结
以上是互联网集市为您收集整理的nginx+tomcat的集群和session复制全部内容,希望文章能够帮你解决nginx+tomcat的集群和session复制所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。