memcache在tomcat中实现负载均衡和session交叉存放

一、安装和配置jdk和tomcat

1.在官网下载jdk和tomcat包,并解压到指定目录

[root@server1 ~]# tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local
[root@server1 ~]# tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local

在这里插入图片描述

2.制作jdk和tomcat软链接

[root@server1 ~]# cd /usr/local
[root@server1 local]# ll
[root@server1 local]# ln -s jdk1.7.0_79 java
[root@server1 local]# ln -s apache-tomcat-7.0.37 tomcat

在这里插入图片描述
在这里插入图片描述

3.配置java的环境变量

[root@server1 local]# vim /etc/profile
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin
[root@server1 local]# source /etc/profile

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4.查看java的版本号

[root@server1 local]# java -version

在这里插入图片描述

5.检测java环境是否正确

[root@server1 ~]# vim test.java
public class test{
        public static void main(String[] args)
        {
        System.out.println("Hello World!");
        }
}
[root@server1 ~]# javac test.java
[root@server1 ~]# java test
Hello World!

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
6.打开tomcat

[root@server1 ~]# cd /usr/local/tomcat/
[root@server1 tomcat]# cd bin/
[root@server1 bin]# ./startup.sh

在这里插入图片描述
7.编辑配置文件

[root@server1 local]# cd openresty/
[root@server1 openresty]# cd nginx/conf
[root@server1 conf]# vim nginx.conf
添加的部分:
 location ~ \.jsp${
                proxy_pass http://127.0.0.1:8080;
        }

在这里插入图片描述
8.nginx语法检测,并重新加载nginx

[root@server1 conf]# cd ..
[root@server1 nginx]# cd sbin/
[root@server1 sbin]# ./nginx -t
[root@server1 sbin]# ./nginx -s reload

在这里插入图片描述
在这里插入图片描述
9.进入tomcat的发布目录,编写测试页

[root@server1 local]# cd tomcat/
[root@server1 tomcat]# ls
[root@server1 tomcat]# cd webapps/ROOT/
[root@server1 ROOT]# vim test.jsp
1 the time is: <%=new java.util.Date() %>

在这里插入图片描述

10.测试:浏览器中访问http://172.25.7.1/index.jsp显示以下页面
在这里插入图片描述
访问http://172.25.7.1/test.jsp,显示测试页内容
在这里插入图片描述
二、实现负载均衡和反向代理
1.把server1上的jdk和tomcat安装包发送到server2上

[root@server1 ~]# scp jdk-7u79-linux-x64.tar.gz server2:/root/
[root@server1 ~]# scp apache-tomcat-7.0.37.tar.gz server2:/root/

在这里插入图片描述

2.在server2上解压jdk和tomcat并解压到指定目录

[root@server2 ~]# tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local
[root@server2 ~]# tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local

在这里插入图片描述

3.在server2上制作jdk和tomcat软链接

[root@server2 ~]# cd /usr/local
[root@server2 local]# ll
[root@server2 local]# ln -s jdk1.7.0_79 java
[root@server2 local]# ln -s apache-tomcat-7.0.37 tomcat

在这里插入图片描述

4.server2上配置java的环境变量

[root@server2 local]# vim /etc/profile
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin
[root@server2 local]# source /etc/profile

在这里插入图片描述

5.打开server2的tomcat

[root@server2 ~]# cd /usr/local/tomcat/bin/
[root@server2 bin]# ./startup.sh 

在这里插入图片描述

6.在server1上修改nginx的配置文件
在这里插入图片描述

[root@server1 ~]# cd /usr/local/openresty/nginx/conf/
[root@server1 conf]# vim nginx.conf
http {
     upstream tomcat{
        server 172.25.7.1:8080;
        server 172.25.7.2:8080;
     }

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


#location /memc {
        #internal;      #内部的请求
        #memc_connect_timeout 100ms;    #连接超时
        #memc_send_timeout 100ms;
        #memc_read_timeout 100ms;
        #set $memc_key $query_string;
        #set $memc_exptime 300;
        #memc_pass memcache;
    #}

        location ~ \.php$ {
            #set $key $uri$args;
            #srcache_fetch GET /memc $key;      #读数据
            #srcache_store PUT /memc $key;      #放数据
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi.conf;
        }

7.nginx语法检测并重启

[root@server1 conf]# cd ..
[root@server1 nginx]# cd sbin/
[root@server1 sbin]# ./nginx -t
[root@server1 sbin]# ./nginx -s reload

在这里插入图片描述
在这里插入图片描述
8.在server1和server2的tomcat的发布目录,编写测试页

[root@server1 ~]# cd /usr/local/tomcat/webapps/ROOT/
[root@server1 ROOT]# vim test.jsp 
server1 the time is: <%=new java.util.Date() %>
[root@server2 ~]# cd /usr/local/tomcat/webapps/ROOT/
[root@server2 ROOT]# vim test.jsp 
server2 the time is: <%=new java.util.Date() %>

在这里插入图片描述
在这里插入图片描述
9.测试:在浏览器访问http://172.25.7.1:8080,显示tomcat图形界面
在这里插入图片描述
访问http://172.25.7.1/test.jsp,在浏览器中刷新,显示server1、server2轮询
在这里插入图片描述
在这里插入图片描述
三、实现session共享
1.重新编写测试页
在这里插入图片描述

[root@server1 ~]# cd /usr/local/tomcat/webapps/ROOT/
[root@server1 ROOT]# vim 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>

2.在浏览器中访问http://172.25.63.1/test.jsp显示以下界面
在server2上传数据westos1
在这里插入图片描述
提交之后,数据信息会存到server1上,再次上传数据westos2
在这里插入图片描述
westos2的数据信息会存到server2上,但是server1上的数据不见了
在这里插入图片描述
总结:每次提交新的用户信息都会覆盖旧的用户信息,而且server info 和 ID 都会改变

  • 改进之前的设置,实现数据不交换,上传信息到同一个后端服务器

1.把之前openresty实验下的nginx关闭

[root@server1 ~]# cd /usr/local/openresty/nginx/sbin/
[root@server1 sbin]# ./nginx -s stop

2.解压nginx-1.10.1版本的安装包、nginx-sticky安装包

[root@server1 ~]# tar zxf nginx-1.10.1.tar.gz 
[root@server1 ~]# tar zxf nginx-sticky-module-ng.tar.gz 

3.隐藏nginx版本号

[root@server1 ~]# cd nginx-1.10.1
[root@server1 nginx-1.10.1]# vim src/core/nginx.h
#define NGINX_VER          "nginx/"

4.关闭debug日志

[root@server1 nginx-1.10.1]# vim auto/cc/gcc
178 # debug
179 #CFLAGS="$CFLAGS -g"

5.编译并安装,在编译后边添加sticky模块

[root@server1 nginx-1.10.1]# ./configure --prefix=/usr/local/lnmp/nginx --with-threads --with-file-aio --with-http_ssl_module --with-http_stub_status_module --add-module=/root/nginx-sticky-module-ng
[root@server1 nginx-1.10.1]# make &&  make install 

在这里插入图片描述

6.把原来openresty下的nginx配置文件复制过来,修改nginx配置文件

[root@server1 nginx-1.10.1]# cd /usr/local/lnmp/nginx/conf
[root@server1 conf]# cp /usr/local/openresty/nginx/conf/nginx.conf .
cp: overwrite `./nginx.conf'? y
[root@server1 conf]# vim nginx.conf

http {
     upstream tomcat{
        sticky;      ##添加sticky模块
        server 172.25.63.1:8080;
        server 172.25.63.2:8080;
     }
    include       mime.types;
    default_type  application/octet-stream;

在这里插入图片描述

7.检测nginx语法错误,并开启nginx

[root@server1 ~]# cd /usr/local/lnmp/nginx/sbin/
[root@server1 sbin]# ./nginx -t
[root@server1 sbin]# ./nginx 

在这里插入图片描述

8.在浏览器中访问http://172.25.63.1/test.jsp
上传新的数据,发现绑定的主机都是同一个主机server1
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
9.关闭server1上的tomcat

[root@server1 ~]# cd /usr/local/tomcat/bin/
[root@server1 bin]# ./shutdown.sh 

在这里插入图片描述

10.在server2上查看,发现server2上没有将之前的信息缓存过来

[root@server2 ~]# cd /usr/local/tomcat/logs/
[root@server2 logs]# tail -f catalina.out

在这里插入图片描述
在这里插入图片描述
四、session交叉存放
1.开启server1和server2上的tomcat

[root@server1 bin]# ./startup.sh 
[root@server2 ~]# cd /usr/local/tomcat/bin/
[root@server2 bin]# ./startup.sh 

在这里插入图片描述
在这里插入图片描述
2.server2上安装memcached,并开启memcached

[root@server2 bin]# yum install memcached -y
[root@server2 bin]# /etc/init.d/memcached start

在这里插入图片描述
在这里插入图片描述
3.把这些安装包放到server1和server2的/usr/local/tomcat/lib/目录下,并删除memcached-session-manager-tc6-1.6.3.jar这个安装包
在这里插入图片描述

[root@server1 ~]# cd /usr/local/tomcat/lib/
[root@server1 lib]# rm -fr memcached-session-manager-tc6-1.6.3.jar 
[root@server2 ~]# cd /usr/local/tomcat/lib/
[root@server2 lib]# rm -fr memcached-session-manager-tc6-1.6.3.jar 

在这里插入图片描述

4.编辑context.xml 配置文件
在这里插入图片描述

[root@server1 ~]# cd /usr/local/tomcat/conf/
[root@server1 conf]# vim context.xml 
添加的内容:
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.63.1:11211,n2:172.25.63.2:11211"
failoverNodes="n1"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoder    Factory"
  />

5.将配置好的context.xml 文件发送给server2

[root@server1 conf]# scp context.xml root@172.25.63.2:/usr/local/tomcat/conf/

6.server2上修改context.xml 配置文件

[root@server2 ~]# cd /usr/local/tomcat/conf/
[root@server2 conf]# ls
[root@server2 conf]# vim context.xml 
failoverNodes="n2"

在这里插入图片描述
7.测试:
在浏览器中刷新页面,显示在server2上,在server2上传数据westos8,然后关闭server2
[root@server2 ~]# cd /usr/local/tomcat/bin/
[root@server2 bin]# ./shutdown.sh
查看到server1上缓存到了server2上传的数据信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值