tomcat+nginx+memcache

server1:172.25.45.1 安装tomcat和memcached,做调度器,使用nginx

server4:172.25.45.4 安装tomcat和memcached

一、安装jdk

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

1、下载解压源码,设定链接(当jdk更新时,更新链接即可)

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

cd /usr/local

ln -s jdk.7.0_79/ java

2.添加环境变量

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 $PATH

echo $JAVA_HOME

echo $CLASSPATH

3.java测试

vim test.java

    public class test

    {

                         public static void main(String[] args)

                 { System.out.println("Hello World!");

                  }

     }  

javac test.java               ##编译

java test                        ##运行脚本

二、安装 tomcat

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选,Tomcat 技术先进、性能稳定,而且免费

1、解压源码,设定链接(当tomcat更新时,更新链接即可)

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

cd /usr/local/

ls

ln -s apache-tomcat-7.0.37/ tomcat

ll

2.启动tomcat

cd tomcat/

ls

/bin/startip.sh           ##开启tomcat服务

netstat -antlp | grep:8080        ##查看启动端口,tomcat端口为8080

网页测试:
172.25.45.1:8080

3.编写tomcat默认访问目录

cd webapps/ROOT/

vim test.jsp

  server1-the time is:<%=new java.util.Date() %>

4.修改nginx配置文件,当访问.jsp文件时,自动跳转(保证主页的完整性,修改nginx的默认发布目录)

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

nginx -s reload

网页测试:
172.25.45.1/index.jsp

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

nginx -s reload

网页测试:
172.25.45.1/index.jsp

网页测试:

172.25.45.1:8080/test.jsp

三、在server1上编译安装配置nginx

tar zxf nginx-1.10.1.tar.gz

cd nginx-1.10.1 

vim src/core/nginx.h

vim auto/cc/gcc  
1·nginx编译

yum install gcc gcc-c++ openssl-devel pcre-devel -y

./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio --add-module=/usr/local/nginx-sticky-module-ng

make && make install

cd /usr/local/lnmp/nginx/sbin         

./nginx -t

./nginx 

./nginx -s reload

2·做软链接

cd  /usr/local/lnmp/nginx/sbin 

ln -s /usr/local/lnmp/nginx/sbin/nginx /sbin/   ##做软链接

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

./nginx -t   ##检测

./nginx

页面访问:172.25.45.1

四、tomcat负载均衡

在server4中搭建tomcat:

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  

网页访问:172.25.45.4:8080

 cd /usr/local/tomcat/webapps/ROOT/

cd  usr/local/tomcat/webapps /ROOT

vim test.jsp

server4-The time is:<%=new java.util.Date()%>

网页访问:172.25.45.1/test.jsp,会产生轮询

五、在nginx中添加sticky算法模块,使tomcat中的数据能够得到缓存,不至于一添加就覆盖

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

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 server4:/usr/local/tomcat/webapps/ROOT/


cd /usr/local/tomcat/logs/
cat catalina.out   ##查看日志
nginx -s stop ###先关闭之前的nginx

编写配置文件

##如果添加sticky算法之后刷新nginx服务出现错误 则说明编译nginx时没有加nginx-sticky-module-ng模块  则需要重新编译并加上此模块 加此模块需要安装包nginx-sticky-module-ng.tar.gz

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不共享的情况:
session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。Session对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在 Session 对象中。

录入的文件会保存,但是时哪台服务器写入的,则会保存在哪个tomcat中

cd /usr/local/tomcat/logs

cat catalina.out

实现session共享

在server1中:

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.45.1:11211,n1:172.25.45.4:11211"

36 failoverNodes="n1"

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

38 transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoder    Factory"

39 />

在server4中:

yum install memcached -y       ###安装memcache,并且打开
/etc/init.d/memcached start
cd /usr/local/tomcat/conf/
vim context.xml                  

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

测试结果如下图: session会话在n2即server4上

如果server4的memcached(/etc/init.d/memcached stop)坏掉,那么session会来到server5上:

当server1的tomcat关闭之后 server info 可以看到tomcat服务跳到了server4上

当两个tomcat都挂掉之后,之前缓存在node2(server4)上的session依然在


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值