Nginx+Tomcat7+MSM1.9+实现集群部署及Session共享

系统运行环境为CentOS6.5云服务器,其实在Windows Server服务器上也是一样的。
一、软件准备
1、安装Nginx
安装博文链接: http://blog.csdn.net/kevin_coder/article/details/66971711
2、安装Tomcat7
CentOS上Tomcat的安装其实就是个解压操作,去Tomcat官网下载7*.tar.gz包,使用命令unzip src -d dist 解压即可,此处不重点讲解了。
3、安装Memcached

二、配置Nginx与Tomcat实现项目集群
1、Tomcat配置:
准备两个Tomcat服务器(可以是部署在同一个服务器上的),修改TOMCAT_HOME/conf/server.xml,修改端口号,保证两台Tomcat运行不会端口冲突
SHUTDOWN端口:
<Server port="8005" shutdown="SHUTDOWN">
<Server port="7005" shutdown="SHUTDOWN">
服务监听端口:
<Connector port="8080" protocol="HTTP/1.1"  connectionTimeout="20000" redirectPort="8443" />
<Connector port="9080" protocol="HTTP/1.1"  connectionTimeout="20000" redirectPort="7443" />
以及
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Connector port="7009" protocol="AJP/1.3" redirectPort="7443" />
配置路由(jvmRoute名称随意):
<Engine name="Catalina" defaultHost="localhost"  jvmRoute="tomcat1">
<Engine name="Catalina" defaultHost="localhost"  jvmRoute="tomcat2">
2、Nginx配置集群:
修改/usr/local/nginx/conf/nginx.conf文件
 #测试MSM负载均衡配置,在http{}中配置
        upstream test.msm.cn {
                #ip_hash;
                server localhost:8080;
                server localhost:9080;
        }

    server {
                listen          80;
                server_name     *.domain.cn;


                location / {
                        proxy_pass http://test.msm.cn; #反向代理

                        #设置主机头和客户端真实地址,以便服务器获取客户端真实IP
                        proxy_set_header        Host    $host;
                        proxy_set_header        X-Real-IP       $remote_addr;
                        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                }
    }
以上就是实现了,客户端访问www.domain.cn时,Nginx将请求分发至localhost:8080及localhost:9080两台Tomcat服务器。
配置好之后,启动nginx ——>  启动Tomcat,测试集群是否生效。可以修改自带ROOT项目首页,以作区分。

三、配置Tomcat实现Session共享
1、下载MSM所需Jar包(若没特殊需求,请使用本文提供的下载地址下载)下载地址: http://download.csdn.net/detail/kevin_coder/9795402,将以上jar包放置到TOMCAT_HOME/lib下;
2、修改TOMCAT_HOME/conf/content.xml文件,<Context>节点中添加:
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
sticky="false"
memcachedNodes="n1:localhost:11211"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
sessionBackupAsync="false"
sessionBackupTimeout="1800"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"/>
说明:
sticky="false"表示非粘性
memcachedNodes:memcached所在主机IP及端口号,此处只有一个节点,若有多个:n1:localhost:11211,n2:192.168.1.168:11211
requestUriIgnorePattern:过滤规则,方行图片、样式、js静态资源
sessionBackupAsync:是否异步保存Session,此处设置为非
sessionBackupTimeout:session保存过期时间,单位毫秒,若超时则放弃此次保存Session操作
transcoderFactoryClass:序列化类,使用Memcached推荐的类去序列化
3、以上两点,两个Tomcat下同步雷同操作。

四、联调测试
测试页面准备,例如:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<%@ page session="true" %>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <title>主机01-Memcached-session-manager</title>
</head>
<body >
    主机01
    <%
        out.print("<br> SESSION-ID:"+session.getId()+"<br>");
        out.print("<br> SESSION-PORT:"+request.getServerPort()+"<br>");
        out.print("<br> SESSION-IP:"+request.getServerName()+"<br>");
        out.println("<br>This is Tomcat Server 8080<br>");
    %>
</body>
</html>
启动Memcached、启动Nginx、启动两个Tomcat
浏览器访问www.domain.cn,若发现服务器有切换但sessionID保持不变,则说明集群及Session都配置成功了。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值