nginx+tomcat+memcached

nginx+tomcat+memcached


<TI>    <T2>

.  \    /  .

.     X    .

.   /   \  .

<M1>  <M2>

Tomcat-1 (T1) session存储在memcached-2 (T2)上。只有当M2不可用时,T1才将session

储在memcached-1(M1T1failoverNode)。使用这种配置的好处是,T1M1同时崩

溃时也不会丢失session会话,避免单点故障


我们需要准备两个节点(nginx1nginx2

首先配置java运行环境

参见http://blog.csdn.net/zhangxc73912/article/details/20550077

安装apache-tomcat

[root@nginx1~]# tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local

[root@nginx1~]# mv /usr/local/apache-tomcat-7.0.37/ /usr/local/tomcat

[root@nginx1~]# cd /usr/local/

tomcat/bin/

[root@nginx1bin]# ./startup.sh

//启动tomcat ./shutdown.sh 关闭tomcat

[root@nginx1~]# cd /usr/local/tomcat/webapps/ROOT

[root@nginx1ROOT]# vi test.jsp

<%@page contentType="text/html; charset=GBK" %>

<%@page import="java.util.*" %>

<html><head><title>ClusterApp Test</title></head>

<body>

ServerInfo:

<%

out.println(request.getLocalAddr()+ " : " + request.getLocalPort()+"<br>");%>

<%

out.println("<br>ID " + session.getId()+"<br>");

StringdataName = request.getParameter("dataName");

if(dataName != null && dataName.length() > 0) {

StringdataValue = request.getParameter("dataValue");

session.setAttribute(dataName,dataValue);

}

out.print("<b>Sessionlist</b>");

Enumeratione = session.getAttributeNames();

while(e.hasMoreElements()) {

Stringname = (String)e.nextElement();

Stringvalue = session.getAttribute(name).toString();

out.println(name + " = " + value+"<br>");

System.out.println(name + " = " + value);

}

%>

<formaction="test.jsp" method="POST">

name:<inputtype=text size=20 name="dataName">

<br>

key:<inputtype=text size=20 name="dataValue">

<br>

<inputtype=submit>

</form>

</body>

</html>

此测试也可显示ip,可观测到服务器为那台,为后面做memcache做铺垫,同时也可以测出我的安装的tomcat是否成功。


安装nginx

yuminstall -y pcre-devel openssl-devel

[root@nginx1nginx]# tar zxf nginx-1.4.2.tar.gz

[root@nginx1nginx]# cd nginx-1.4.2

[root@nginx1nginx]#vi /mnt/nginx/nginx-1.4.2/auto/cc/gcc

#CFLAGS="$CFLAGS-g"

[root@nginx1nginx-1.4.2]# ./configure

[root@nginx1nginx-1.4.2]# make && make install

[root@nginx1~]# useradd nginx

[root@nginx1~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

[root@nginx1~]# vi /usr/local/nginx/conf/nginx.conf

user nginx nginx;

worker_processes 2;

events{

useepoll;

worker_connections 1024;

}

http{

upstreamtomcatcluster{

server192.168.0.40:8080;

server192.168.0.41:8080;

}

include mime.types;

default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

server{

listen 80;

server_name localhost;

location/ {

root html;

index test.jsp index.html index.htm;

}

error_page 500 502 503 504 /50x.html;

location= /50x.html {

root html;

}

location~ \.jsp$ {

proxy_passhttp://tomcatcluster;

//凡是访问*.jsp转至8080端口由tomcat处理

}

}

}

[root@nginx1~]# nginx -t //检测配置文件是否正确

[root@nginx1~]# curl -I localhost

HTTP/1.1200 OK

Server:zhangxc-nginx/1.4.2

Date:Wed, 05 Mar 2014 05:00:23 GMT

Content-Type:text/html

[root@nginx1~]# nginx -s reload


可当我们刷新网页之后


解决方案,添加粘制位

所以我们需要重新加载ngnx模块

[root@nginx1nginx]# tar zxf nginx-sticky-module-1.0.tar.gz

[root@nginx1nginx-1.4.2]#make clean

[root@nginx1nginx-1.4.2]# ./configure --prefix=/usr/local/nginx/--with-http_ssl_module –add-module=/mnt/nginx/nginx-sticky-module-1.0

[root@nginx1nginx-1.4.2]#make && make install

[root@nginx1nginx-1.4.2]#vi /usr/local/nginx/conf/nginx

upstreamtomcatcluster{

sticky; //其他和上面的文件内容相同

server192.168.0.40:8080;

server192.168.0.41:8080;

[root@nginx1nginx-1.4.2]# nginx -s

[root@nginx1nginx-1.4.2]# nginx

然后就ok了一台,这样就一台服务器将会对于一个ip客户服务到底

于此同时也就出现一个问题,就是数据安全问题,虽然有服务器进行接替但是用户的数据丢失了。

所以在此我们整合memcached,解决这样的问题。

[root@nginx1~]# yum install -y memcached

[root@nginx1~]# /etc/init.d/memcached start

[root@nginx1~]# cd /usr/local/tomcat/lib/

添加如下包

asm-3.2.jar kryo-1.04.jar

memcached-session-manager-tc6-1.6.3.jar reflectasm-1.01.jar

kryo-serializers-0.10.jar minlog-1.2.jar

memcached-session-manager-1.6.3.jar msm-kryo-serializer-1.6.3.jar

然后在编辑

/usr/loacl/tomcat/conf/context.xml

添加如下

<ManagerclassName="de.javakaffee.web.msm.MemcachedBackupSessionManager"

memcachedNodes="n1:192.168.0.40:11211,n2:192.168.0.41:11211"

failoverNodes="n1" //另个节点为n2

requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"

transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"

/>


这样就ok我们可以进行测试了



节点2和节点1的安装tomcatmemcached,其配置和节点1的相同。


注释:由于一些图片显示不了,建议大家下在文档进行查看http://yunpan.cn/Q42wcN6vgcaIu


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值