linux之tomcat+memcache+nginx的服务搭建

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux之tomcat+memcache+nginx的服务搭建相关的知识,希望对你有一定的参考价值。


node1:server1:172.25.44.1   ##配有nginx服务

node2:server2:172.25.44.2  ##没有nginx服务,与server1做以下的配置

实验环境:

getenforce diabled

iptables off

测试真机:foundation44:172.25.44.250 

以下内容先在node1上进行

###node1#####

配置java环境

tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/ 

cd /usr/local/

ln -s jdk1.7.0_79/ java

vim /etc/profile

技术分享

export JAVA_HOME=/usr/local/java

export CLASSROOM=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

export PATH=$PATH:$JAVA_HOME/bin

source /etc/profile  ##刷新

vim test.java                   ###建立测试文件 

技术分享

public class test {

        public static void main(String[] arge)

        {

                System.out.println("Hello world")       ;

        }

 

}

javac test.java   

java test  

技术分享

 

tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local/

cd /usr/local/

ln -s apache-tomcat-7.0.37/    tomcat  ##建立

cd tomcat/webapps/bin

./startup.sh

netstat -antlpe | grep 8080

技术分享 

cd tomcat/webapps/ROOT

vim index.jsp  ##原有网页显示脚本

vim test.jsp   ##建立测试文件

技术分享

页面访问172.25.44.1:8080

技术分享 

页面访问172.25.44.1:8080/test.jsp     

技术分享

更改配置

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

 

技术分享

            加入语句 

                location ~ \.jsp$ {

             proxy_pass   http://172.25.44.1:8080;

          }

页面就可直接访问172.25.44.1/test.jsp

技术分享

负载均衡

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

http {

         upstream westos {

                  server 172.25.44.1:8080;

                  server 172.25.44.2:8080;

         }

location ~ \.jsp$ {

                 proxy_pass   http://westos;

          }

 

 技术分享

技术分享 


 

nginx -t   ##检测配置文件语法错误   

nginx -s reload  ##重新加载

 

负载均衡:

技术分享

Tomcat-1 (T1) 将 session 存储在 memcached-2 (T2)上。只有当 M2 不可用时,T1 才将 session 存储在 memcached-1 上(M1 是 T1 failoverNode)。使用这种配置的好处是,当 T1 和 M1 同时崩溃时也不会丢失 session 会话,避免单点故障。

以下步骤在 node1 与 node2 上实施:

配置node1和node2

node1 172.25.44.1

node2 172.25.44.2

Node已经编译过apache和java配置文件

将已经生成的软连接内的文件远程复制到node2的/usr/local

cd /usr/local/

scp -r   java/    tomcat/ 172.25.44.2:/usr/local

node2中配置环境变量(与node1相同)

cd /usr/local/tomcat

bin/startup.sh   ##开启apache

两边都安装memceche

yum install memcache -y

(1).(由于node1之前已经安装过nginx,此步骤目的是添加新的模块)

cd nginx-1.10.1

make clean

rm -fr nginx-1.10.1

tar  zxf nginx-1.10.1.tar.gz zxf

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

cd nginx-1.10.1

加入第三方模块nginx-sticky-module,这个模块可以确保同一个用户的访问请求都被发送到同一个tomcat上处理。

./configure --prefix=/usr/local/lnmp/nginx/ --with-http_ssl_module --with-http_stub_status_module --add-module=/mnt/nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d

make

make install

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

技术分享

http {

        upstream westos {

                sticky;

                server 172.25.44.1:8080;

                server 172.25.44.2:8080;

        }

nginx -t

nginx -s reolad

 

#以下为node1和node2都要进行的配置,以node1为例#

2).

把如下软件包放置到/usr/local/tomcat/lib 目录中

asm-3.2.jar                            

reflectasm-1.01.jar

kryo-1.04.jar                        

memcached-session-manager-tc7-1.6.3.jar  

spymemcached-2.7.3.jar

kryo-serializers-0.10.jar            

minlog-1.2.jar

memcached-session-manager-1.6.3.jar  

msm-kryo-serializer-1.6.3.jar

[[email protected] lib]# ls

annotations-api.jar  jsp-api.jar                              tomcat-api.jar

asm-3.2.jar          kryo-1.04.jar                            tomcat-coyote.jar

catalina-ant.jar     kryo-serializers-0.10.jar                tomcat-dbcp.jar

catalina-ha.jar      memcached-session-manager-1.6.3.jar      tomcat-i18n-es.jar

catalina.jar         memcached-session-manager-tc7-1.6.3.jar  tomcat-i18n-fr.jar

catalina-tribes.jar  minlog-1.2.jar                           tomcat-i18n-ja.jar

ecj-4.2.1.jar        msm-kryo-serializer-1.6.3.jar            tomcat-jdbc.jar

el-api.jar           reflectasm-1.01.jar                      tomcat-util.jar

jasper-el.jar        servlet-api.jar

jasper.jar           spymemcached-2.7.3.jar

 

(3).yum install memcached -y

/etc/init.d/memcached start

(4).vim /usr/local/tomcat/conf/content.xml

加入如下内容

技术分享

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"

        memcachedNodes="n1:172.25.44.1:11211,n2:172.25.44.2:11211"

        failoverNodes="n1"   ##在node2上改成n2

        requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"   transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"

        />      ##将信息存储在n2上,当n2出现问题时,就会转存到n1中

退出保存

重新开启tomcat

bin/startup.sh

tail -f logs/catalina.out    ##可查看更新后的配置后的信息

技术分享

INFO: MemcachedSessionService finished initialization, sticky true, operation timeout 1000, with node ids [n2] and failover node ids [n1]   ##证明配置成功

(5).

建立测试页面文件

vim /usrlocal/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>

(6).用页面访问172.25.44.1/test.jsp

技术分享

通过建立不同的用户信息来检测存储情况

例如

此时服务node1正常运行,所存储的信息保存在n2上,

技术分享

在真机上测试安装telnet

Telnet 172.25.44.1 11211

技术分享

信息并没存储在node1上

telnet 172.25.44.2 11211

技术分享

用户信息都在n2上存储

node1和n1同时坏掉,

所以即使T1和n1同时down掉,信息也不回丢失。


本文出自 “11897256” 博客,请务必保留此出处http://65147718.blog.51cto.com/11897256/1858478

以上是关于linux之tomcat+memcache+nginx的服务搭建的主要内容,如果未能解决你的问题,请参考以下文章

tomcat session会话保持实验-之Nginx+tomcat+memcached

tomcat session Memcache 共享

Linux之搭建redis缓存服务器

Session服务器之Memcached

nginx+tomcat+memcache

TomcatTomcat + Memcached 实现session共享