nginx+tomcat+memcached(交叉缓存)

tomcat安装与配置:

在server1和server2

tomcat的安装需要java环境,所以先配置java环境
tar zxf jdk-7u79-linux-x64.tar.gz
mv jdk1.7.0_79/ /usr/local/
cd /usr/local/
ln -s jdk1.7.0_79/ java

配置java环境变量
vim /etc/profile
在里面添加下面几行

      export JAVA_HOME=/usr/local/java
      export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
      export PATH=$PATH:$JAVA_HOME/bin


source /etc/profile

JAVA_HOME 后跟上面jdk解压目录
我将解压包移到/usr/local下 并创建了名为java的软连接,所以写/usr/local/jav

查看路径:
echo $JAVA_HOME

echo $CLASSPATH

echo $PATH
which java
which javac

环境配好之后就开始安装tomcat:
tar zxf apache-tomcat-7.0.37.tar.gz
mv apache-tomcat-7.0.37 /usr/local/
cd /usr/local/
ln -s apache-tomcat-7.0.37/ tomcat
ll
cd tomcat/

在网上下载下面几个包,放到lib下(不用解压):

扫描二维码关注公众号,回复: 2807805 查看本文章

启动tomcat:
bin/startup.sh

查看8080端口,tomcat默认占用8080端口:
netstat -anplt | grep :8080

tomcat默认发布目录:
webapps/ROOT/

cd /usr/local/tomcat/webapps/ROOT/
vim test.jsp

在浏览器访问 localhost:8080/test.jsp 测试tomcat
出现以下界面就说明安装成功:


 

配置tomcat:
vim /usr/local/tomcat/conf/context.xml

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.66.1:11211,n2:172.25.66.2:11211"
failoverNodes="n1"  ##在server2 上设置为n2 
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
</Context>

两个节点:
n1:172.25.66.1:11211
n2:172.25.66.2:11211
代表两个memcache服务
这里写图片描述
T1代表 server1 上的tomcat
T2代表 server2 上的tomcat
M1代表 server1 上的 memcache
M2代表 server2 上的 memcache
T1的session存到M2上
T2的session存到M1上
当T1出问题后,T2接管T1的工作,从M2里读取T1的工作数据
当M2出问题,T1就把缓存存到M1上
避免单点故障

配置nginx

编辑配置文件:
vim /usr/local/lnmp/nginx/conf/nginx.conf

    18 http {
##在Http下添加策略 test 这个策略是调用tomcat(tomcat默认端口为8080)
    19         upstream test{
    20             sticky;
    21             server 172.25.66.2:8080;
    22             server 172.25.66.1:8080;
    23         }

##在server下添加 jsp 页面处理策略 只要是jsp页面,就跳到 test策略
##tomcat善于处理动态页面,将所有jsp页面全部交给tomcat去处理,实现动静分离
    70         location ~ \.jsp$ {
    71                 proxy_pass http://test; 
    72         }

    ##添加server策略 当访问 www.test.org 时跳到test策略
   157 server {
   158         listen 80;
   159         server_name www.test.org;
   160 
   161         location / {
   162                 proxy_pass http://test;
   163         }
   164 }

检测nginx配置文件有没有差错
nginx -t

重启nginx
nginx -s reload

测试界面:
写到tomcat发布目录下,每个节点都要写
/usr/local/tomcat/webapps/ROOT/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> 

打开浏览器访问 http://www.test.org/test.jsp
不同的主机访问时会调度到不同的 tomcat 实例上处理
来自同一主机的请求会交给同一个 tomcat 实例处理,此时你 down 掉当前正在响应的 tomcat 实例,nginx 会自动把用户的请求调度到另一个 tomcat 实例上,同时 session 也没有丢掉。

猜你喜欢

转载自blog.csdn.net/gd0306/article/details/81463117
今日推荐