tomcat+nginx+memcached

########基础准备######

##jdk的安装###
安装包:
     jdk-7u79-linux-x64.tar.gz
tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/
ln -s /usr/local/jdk1.7.0_79/ /usr/local/java

vim /etc/profile

source /etc/profile
测试:

vim test.java  ##编辑测试文件


javac test.java    ##编译文件

java test    ##执行文件


##tomcat的安装
安装包:
apache-tomcat-7.0.37.tar.gz
tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local/
ln -s /usr/local/apache-tomcat-7.0.37/ /usr/local/tomcat
cd /usr/local/tomcat/bin/        ##开启该应用
./startup.sh

cd /usr/local/tomcat/webapps/ROOT/    ##页面发布目录

默认主页如图:


vim test.jsp                ##编写测试页面


测试;

http://172.25.33.2:8080/test.jsp

vim test.jsp                ##编辑如下测试文件

<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html><head><title>Cluster App Test</title></head>
<body>
Server Info:
<%
out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>
<%
out.println("<br> ID " + session.getId()+"<br>");
String dataName = request.getParameter("dataName");
if (dataName != null && dataName.length() > 0) {
String dataValue = request.getParameter("dataValue");
session.setAttribute(dataName, dataValue);
}
out.print("<b>Session list</b>");
Enumeration e = session.getAttributeNames();
while (e.hasMoreElements()) {
String name = (String)e.nextElement();
String value = session.getAttribute(name).toString();
out.println( name + " = " + value+"<br>");
System.out.println( name + " = " + value);
}
%>
<form action="test.jsp" method="POST">
name:<input type=text size=20 name="dataName">
<br>
key:<input type=text size=20 name="dataValue">
<br>
<input type=submit>
</form>
</body>
</html>

网页结果为:


####nginx主机

vim /usr/local/lnmp/nginx/conf/nginx.conf

http {
        upstream westos {
        server 172.25.33.2:8080;
        server 172.25.33.3:8080;
        }
    location ~ \.jsp$ {
                proxy_pass http://westos;
        }
}
nginx -t
nginx -s reload

####tomcat+nginx+memcached

server1安装nginx 配置如上
server2和server3安装jdk,tomcat和memcached
server2和server3配置
安装包
asm-3.2.jar
kryo-1.04.jar
kryo-serializers-0.10.jar
memcached-session-manager-1.6.3.jar
memcached-session-manager-tc6-1.6.3.jar
memcached-session-manager-tc7-1.6.3.jar
minlog-1.2.jar
msm-kryo-serializer-1.6.3.jar
reflectasm-1.01.jar
spymemcached-2.7.3.jar

yum install memcached -y
/etc/init.d/memcached start
cd /usr/local/tomcat/lib
cp *.jar /usr/local/tomcat/lib/
rm -f memcached-session-manager-tc6-1.6.3.jar     ##删除与jdk版本不同的包
vim /usr/local/tomcat/conf/context.xml
  <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
  memcachedNodes="n1:172.25.33.2:11211,n2:172.25.33.3:11211"
  failoverNodes="n1"            #在 node2 上此项设置为“n2”
  requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"    transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"

  />

cd /usr/local/tomcat
bin/shutdown.sh
bin/startup.sh
tail -f logs/catalina.out
测试:
 网页输入:172.25.33.1/test.jsp
 server2和server3进行交叉存储,如果正在响应的tomcat被down掉,会因为memcached中的存储信息

 不会清除用户之前的session信息



###nginx 的sticky模块

server1上进行的操作
nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d.tar.gz
nginx-1.10.1.tar.gz
tar zxf nginx-1.10.1.tar.gz
tar zxf nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d.tar.gz
cd nginx-1.10.1
./configure --prefix=/opt/nginx --user=nginx --group=nginx --with-threads --with-file-aio --with-http_ssl_module --with-http_stub_status_module --add-module=/root/nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d
注: nginx-sticky-module 为 nginx 的第三方模块,使 nginx 支持 sticky 模式, sticky 模式
就是指同一个用户的访问请求都被发送到同一个 tomcat 实例上处理。
make &&make install
vim /opt/nginx/conf/nginx.conf
http {
        upstream westos {
        sticky;
        server 172.25.33.2:8080;
        server 172.25.33.3:8080;
        }
    location ~ \.jsp$ {
                proxy_pass http://westos;
        }
}
测试:
访问 http://172.25.33.1/test.jsp,不同的主机访问时会调度到不同的 tomcat 实例上处理
来自同一主机的请求会交给同一个 tomcat 实例处理,此时你 down 掉当前正在响应的 tomcat 实

例,nginx 会自动把用户的请求调度到另一个 tomcat 实例上,同时 session 也没有丢掉。

测试结果如图:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值