Nginx+Tomcat+Memcached

nginx+tomcat+memcached


利用memcached把多个tomcat的session集中管理,前端利用nginx负载均衡实现高可用。

这里写图片描述

memcached采用交叉存储,在文末说明

这里写图片描述


1. 安装包

jdk-7u79-linux-x64.tar.gz ##Java 语言的软件开发工具包
apache-tomcat-7.0.37.tar.gz ##tomcat包

在server2虚拟机上:
tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/        ##解压至/usr/local目录
tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local/

1. 配置

1.jdk

cd /usr/local/
ln -s jdk1.7.0_79/ 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             ##使修改的环境变量生效

cd ~
vim test.java                       ##用于测试java
public class test {

        public static void main(String[] arge) {
                System.out.println("Hello World!");
        }
}

测试:

javac test.java     ##测试是否有错误
java test           ##运行

这里写图片描述

1.tomcat

cd /usr/local/
ln -s apache-tomcat-7.0.37/ tomcat      ##软连接,方便调用

cd tomcat/bin
./startup.sh                            ##启动tomcat

cd /usr/local/tomcat/webapps/ROOT       ##测试页
vim test.jsp
the time is: <%=new java.util.Date()%>

测试:

172.25.36.2:8080            ##tomcat为8080端口

这里写图片描述

172.25.36.2:8080/test.jsp   ##测试页

这里写图片描述

1.tomcat+nginx

server1:

vim /usr/local/lnmp/nginx/conf/nginx.conf
location ~ \.jsp$ {               ##当有以.jsp结尾的访问时代理访问172.25.36.2:8080
                proxy_pass http://172.25.36.2:8080;
        }
nginx -s reload

测试:

172.25.36.1/test.jsp

这里写图片描述

2.tomcat+nginx+memcache

2.server3:

yum install -y memcached            ##安装memcached缓存包
/etc/init.d/memcached start     ##运行memcached服务

2.server2:

yum install -y memcached
/etc/init.d/memcached start

下###2.1.3载memcached的session管理模块包至/usr/local/tomcat/lib/
asm-3.2.jar
kryo-1.04.jar
kryo-serializers-0.10.jar
memcached-session-manager-tc7-1.6.3.jar
memcached-session-manager-1.6.3.jar
minlog-1.2.jar
msm-kryo-serializer-1.6.3.jar
reflectasm-1.01.jar
spymemcached-2.7.3.jar

vim /usr/local/tomcat/conf/context.xml
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.36.2:11211,n2:172.25.36.3:11211"  ##设置memcached的两个节点
failoverNodes="n1"                          ##当memcached停止运行时将session信息存储至n1节点
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
vim /usr/local/tomcat/webapps/ROOT/test.jsp     ##用作测试memcache缓存存储情况,server3同
<%@ 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>
cd /usr/local/tomcat/bin/
./startup.sh                ##启动tomcat服务

2.server3:

同server2操作

vim /usr/local/tomcat/conf/context.xml
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.36.2:11211,n2:172.25.36.3:11211"  ##设置memcached的两个节点
failoverNodes="n2"      ##当memcached服务器停止运行时将session信息存储至n2节点
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
cd /usr/local/tomcat/bin/
./startup.sh                ##启动tomcat服务

server1:

vim /usr/local/lnmp/nginx/confnginx.conf
http {
        upstream westos {            ##负载均衡组
        server 172.25.36.2:8080;
        server 172.25.36.3:8080;
}

location ~ \.jsp$ {                  ##以.jsp结尾的访问直接调用westos组负载均衡
                proxy_pass http://westos;

测试:

server2:

cd /usr/local/tomcat
tail -f logs/catalina.out   #查看当前缓存

这里写图片描述

web界面:

172.25.36.1/test.jsp #写入信息,web上写入后会有缓存的ID可用telnet查看

server3:

  • telnet localhost 11211 ##访问本地的11211即memcached端口,可查看到在web上写入的缓存。
    get ‘ID’
    这里写图片描述

  • telnet 172.25.36.2 11211 ##访问server2的memcacehd,查看发现并无缓存
    get ‘ID’
    这里写图片描述

3.1sticky
因为nginx1.12.0不支持sticky,需要另外下载sticky的组件包且重新编译nginx时将sticky组件包加入
server1:
安装包:
nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d.tar.gz

tar zxf nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d.tar.gz

重新编译nginx且加入sticky模块

./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

make && make install
vim /opt/nginx/conf/nginx.conf
http {
        upstream westos {
        sticky;                                              ##sticky模式
        server 172.25.36.2:8080;
        server 172.25.36.3:8080;
        }

location ~ \.jsp$ {
                proxy_pass http://westos;

测试:
打开firefox访问172.25.36.1/test.jsp,然后按F12添加storage,查看cookies这里写图片描述
这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值