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

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

测试真机:foundation44:172.25.44.250 

实验环境:

getenforce

diabled

iptables off


 

以下内容先在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

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

export JAVA_HOME=/usr/local/java

export CLA×××OOM=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

export PATH=$PATH:$JAVA_HOME/bin

source /etc/profile  ##刷新

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

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

public class test {

        public static void main(String[] arge)

        {

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

        }

 

}

javac test.java   

java test  

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

 测试成功

 

tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local/   ##解压到/usr/local目录下

cd /usr/local/

ln -s apache-tomcat-7.0.37/    tomcat  ##建立软连接方便管理

cd tomcat/webapps/bin

./startup.sh

netstat -antlpe | grep 8080

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

cd tomcat/webapps/ROOT

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

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

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

页面访问172.25.44.1:8080

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

页面访问172.25.44.1:8080/test.jsp     

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

更改配置

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

 

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

            加入语句 

                location ~ \.jsp$ {

             proxy_pass   http://172.25.44.1:8080;

          }

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

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

负载均衡

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;

          }

 

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

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


 

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

nginx -s reload  ##重新加载

 

负载均衡:

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

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

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

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

[root@server2 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

加入如下内容

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

<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    ##可查看更新后的配置后的信息

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

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

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

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

例如

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

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

在真机上测试安装telnet

Telnet 172.25.44.1 11211

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

信息并没存储在node1上

telnet 172.25.44.2 11211

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

用户信息都在n2上存储

node1和n1同时坏掉,

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