tomcat+nginx+memcache

tomcat的安装测试
1.tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/
cd /usr/local/
ln -s jdk1.7.0_79/ java
ll

这里写图片描述

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

这里写图片描述

echo $JAVA_HOME
echo $CLASSPATH
echo $PATH
/etc/init.d/php-fpm start  ###打开php
nginx  ###打开nginx
cd
which java
which javac

这里写图片描述

vim test.java   ###编写一个java测试文件
javac test.java  ##检测java文件语法是否正确
java test   ###执行这个文件

这里写图片描述
这里写图片描述

tar zxf apache-tomcat-7.0.90.tar.gz -C /usr/local/
cd /usr/local/
ln -s apache-tomcat-7.0.90/ tomcat
ll

这里写图片描述

cd tomcat/
bin/startup.sh
netstat -antlp    ###查看端口看服务是否开启

这里写图片描述
在浏览器中访问172.25.3.5:8080,会看到如下界面
这里写图片描述

cd /usr/local/tomcat/webapps/ROOT/
vim test.jsp
    server5--The time is:<%=new  java.util.Date()%>
cd /usr/local/tomcat/logs/
cat catalina.out   ##查看日志

这里写图片描述
在浏览器测试172.25.3.5:8080/test.jsp
这里写图片描述

修改nginx的默认配置文件 (为后面的负载均衡做准备)
cd /usr/local/lnmp/nginx/conf/
vim nginx.conf
 17 http {
 18          upstream tomcat{
 20          server 172.25.3.1:8080;  ##添加两台tomcat机
 21          server 172.25.3.5:8080;
 22          }
 23     include       mime.types;
 24     default_type  application/octet-stream;
############################################################################### 
 64         location ~ \.jsp$ {  ##jsp结尾的进行负载均衡请求
 65             proxy_pass   http://tomcat;   
                ##请求转向westos定义的服务器列表
 66         }
nginx -s reload  ##重新加载

这里写图片描述
这里写图片描述

tomcat负载均衡

在server1中(做和server5相同的配置):

 tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/
   tar zxf apache-tomcat-7.0.90.tar.gz -C /usr/local/
   vim /etc/profile
   source /etc/profile
   cd /usr/local/
   ln -s jdk1.7.0_79/ java
   ln -s apache-tomcat-7.0.90/ tomcat
   java   ##检测语法
   javac  ##检测语法
   cd /usr/local/tomcat/
   bin/startup.sh   ###启动tomcat 
   cd /usr/local/tomcat/webapps/ROOT/
   vim test.jsp
server1--The time is:<%=new  java.util.Date()%> 
   cd  /usr/local/tomcat/logs/
   cat catalina.out  ##查看日志 
在浏览器中访问172.25.3.5/test.jsp,会产生轮询

这里写图片描述
这里写图片描述

在nginx中添加sticky算法模块,使tomcat中的数据能够得到缓存,不至于一添加就覆盖
sticky算法(比ip_hash更优化)
cookie,服务器给客户端下发一个cookie,具有特定cookie的请求会分配给它的发行者。
Sticky就是基于cookie的一种负载均衡解决方案,
通过cookie实现客户端与后端服务器的会话保持, 
在一定条件下可以保证同一个客户端访问的都是同一个后端服务器。
请求来了,服务器发个cookie,并说:下次来带上,直接来找我。
Sticky工作原理 Sticky是nginx的一个模块,通过分发和识别cookie,
来使同一个客户端的请求落在同一台服务器上

在server5中:

cd /usr/local/tomcat/webapps/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>
scp test.jsp server1:/usr/local/tomcat/webapps/ROOT/
cd /usr/local/tomcatlogs/
cat catalina.out   ##查看日志 
nginx -s stop ###先关闭之前的nginx
因为高版本的nginx不支持sticky算法,所以需要重新源码编译一个nginx,将算法加进去
tomcat-1 (T1) 将 session 存储在 memcached-2 (T2)上。
只有当 M2 不可用时,T1 才将 session 存储在 memcached-1 上
(M1 是 T1 failoverNode)。
使用这种配置的好处是,当 T1 和 M1 同时崩溃时也不会丢失 session 会话,
避免单点故障
cd nginx-1.10.1
make clean   ###清理之前的缓存文件
tar zxf nginx-sticky-module-ng.tar.gz 
cd nginx-1.10.1
./configure --help   ##查看添加编译模块的帮助
./configure --prefix=/usr/local/lnmp/nginx/ --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio --add-module=/root/nginx-sticky-module-ng
make && make install   ###读取makefile和安装

编写配置文件

cd /usr/local/lnmp/nginx/conf
vim nginx.conf
 17 http {
 18          upstream tomcat{
 19          sticky;  ###将sticky写入nginx配置文件
 20          server 172.25.3.1:8080;
 21          server 172.25.3.5:8080;
 22          }
 23     include       mime.types;
 24     default_type  application/octet-stream;
nginx -s reload  ###重新加载
nginx   ###打开nginx

session不共享的情况:
这里写图片描述
录入的文件会保存,但是它会存到不同的tomcat上
这里写图片描述
通过查看两台tomcat主机就会看出来
这里写图片描述

实现session共享

在server5中:

yum install memcached -y  ###安装memcache,并且打开
/etc/init.d/memcached start
cd /usr/local/tomcat/conf/
vim context.xml   ###编辑配置文件,内容如下
###加到文件的最后面,但要在最后一个括号内
 34 <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
 35 memcachedNodes="n5:172.25.3.5:11211,n1:172.25.3.1:11211"
 36 failoverNodes="n5"
 37 requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
 38 transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoder    Factory"
 39 />

这里写图片描述
这里写图片描述
注意:将jar包所有文件放入/usr/local/tomcat/lib中,记住要删除memcache的6版本
yum install telnet -y (在server1和server5中分别安装)
telnet localhost 11211 ###查看session中存的数据
在server1中做和server5相同的配置,即上面的步骤

测试结果如图:

这里写图片描述
当server5的memcache挂掉后,之前上传的结果依旧在
这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值