nginx+tomcat+memcache

nginx支持静态页面tomcat支持动态页面如果所在的nginx服务器想要进行动态页面则需与tomcat结合此时nginx只是起到转发的作用对jsp的处理是由tomcat来处理的。

一 搭建jdk

先搭建java环境

1  tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/    ###解压到/usr/local下###

2 ln -s jdk1.7.0_79/ java            ###软链接方便版本升级后的使用###

3 vim /etc/profile            ###/etc/profile是全局定义所有用户可以用/.bash_profile是局部定义只有某个用户启动时才能加载###

内容

export JAVA_HOME=/usr/local/java        ###使用变量$JAVA_HOME如果路径改变了修改会比较方便###

export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib    ###该环境变量是当我们再写java程序时要应用别人写好的类时要让java解释器知道到哪里去找这个类##

export PATH=$PATH:$JAVA_HOME/bin            ###系统路径一定要先写不然系统的一些命令可能会找不到不过可以用绝对路径去执行系统和命令,设置好path对java应用程序鄂运行会比较方便比如javacjavajavah等等###

4 source /etc/profile            ###使文件生效###

测试是否搭建好

[[email protected] ~]#vim test.java

内容

public class test {
    public static void main(String[] arge){
        System.out.println("Hello World!");

}
    }

[[email protected] ~]# javac test.java
[[email protected] ~]# java test
Hello World!

具体过程如下
[[email protected] ~]# tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local/
[[email protected] ~]# cd /usr/local/
[[email protected] local]# ls
bin  etc  games  include  jdk1.7.0_79  lib  lib64  libexec  sbin  share  src
[[email protected] local]# ln -s jdk1.7.0_79/ java
[[email protected] local]# ll
total 44
drwxr-xr-x. 2 root root 4096 Jun 28  2011 bin
drwxr-xr-x. 2 root root 4096 Jun 28  2011 etc
drwxr-xr-x. 2 root root 4096 Jun 28  2011 games
drwxr-xr-x. 2 root root 4096 Jun 28  2011 include
lrwxrwxrwx  1 root root   12 Jul 22 10:00 java -> jdk1.7.0_79/
drwxr-xr-x  8 uucp  143 4096 Apr 11  2015 jdk1.7.0_79
drwxr-xr-x. 2 root root 4096 Jun 28  2011 lib
drwxr-xr-x. 2 root root 4096 Jun 28  2011 lib64
drwxr-xr-x. 2 root root 4096 Jun 28  2011 libexec
drwxr-xr-x. 2 root root 4096 Jun 28  2011 sbin
drwxr-xr-x. 5 root root 4096 Jul 18 11:24 share
drwxr-xr-x. 2 root root 4096 Jun 28  2011 src
[[email protected] local]# vim /etc/profile
[[email protected] local]# source /etc/profile
[[email protected] local]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/java/bin
[[email protected] local]# cd
[[email protected] ~]# vim test.java
[[email protected] ~]# javac test.java
[[email protected] ~]# java test
Hello World!

二 搭建tomcat

安装包下载可以去http//tomcat.apache.org/下载
主要是进行动态页面的处理jsp
默认发布目录/usr/local/tomcat/webapps/ROOT
默认发布网页index.jsp

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

2 ln -s apache-tomcat-7.0.37/ tomcat             ###软链接方便版本升级###

3 /usr/local/tomcat/bin/startup.sh/            ###开启服务###

4 netstat -antlp            ###查看端口为8080

测试

[[email protected] ROOT]# pwd
/usr/local/tomcat/webapps/ROOT
[[email protected] ROOT]# vim test.jsp

内容

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

172.25.78.1:8080/test.jsp

三 将nginx和tomcat整合再一起

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

内容

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

2 nginx -s reload

测试
访问172.25.38.1/test.jsp

####作负载均衡###

jsp的页面很消耗资源要做一个负载均衡

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

内容
upstream  westos{
        server 172.25.38.2:8080;
        server 172.25.38.3:8080;
        server 127.0.0.1:8000 backup;
        }

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

2 nginx -s reload

####ip_hash###

再作负载均衡时不指定算法则默认是轮询会导致用户在提交请求时就会到另一个tomcat则就要再次提交请求原有的session就会丢失假如是一个购物车则用户加一个东西就会不见因此是不合理的就要用到ip_hash则只要是同一个ip发出的请求就不会跳到别的tomcat上

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

内容:
upstream  westos{
        ip_hash;
        server 172.25.38.2:8080;
        server 172.25.38.3:8080;
        }

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

2 nginx -s reload

tomcat的发布页面

vim /usr/local/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>

####tomcat+memcache###

采用session对象存储特定用户会话所需的信息这样当用户在应用程序的web页之间跳转时存储在session对象中的变量将不会丢失而是在整个用户会话中一直存在下去
采用ip_hash虽然解决了用户请求可以保存再一个tomcat上但是如果该tomcat出现故障了就会导致session的丢失因此要再加一个额外的备份存储memcache使得tomcat故障了还能够去memcache拿到信息

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

1 yum  install  -y   memcached

2 将memcached-session-manager-tc7-1.6.3.jar等放在/usr/local/tomcat/lib

3 vim  /usr/local/tomcat/conf/context.xml

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.78.2:11211,n2:172.25.78.3:11211"
failoverNodes="n1"        ###当n2出现故障时找n1节点###
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
</Context>

4 /usr/local/tomcat/bin/shutdown.sh    ###关闭tomcat如果没有开启tomcat则忽略这步###

5 /usr/local/tomcat/bin/startup.sh    ###开启tomcat###

6 tail -f /usr/local/tomcat/logs/catalina.out    ###监控日志信息查看是否出错###

server3

1 yum  install  -y   memcached

2 将memcached-session-manager-tc7-1.6.3.jar等放在/usr/local/tomcat/lib

3 vim  /usr/local/tomcat/conf/context.xml
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:172.25.78.2:11211,n2:172.25.78.3:11211"
failoverNodes="n2"    ###当n1出现故障时找n2节点###
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
</Context>

4 /usr/local/tomcat/bin/shutdown.sh    ###关闭tomcat如果没有开启tomcat则忽略这步###

5 /usr/local/tomcat/bin/startup.sh    ###开启tomcat###

6 tail -f /usr/local/tomcat/logs/catalina.out    ###监控日志信息查看是否出错###

测试
访问172.25.78.1/test.jsp

tge contentType="text/html; charset=GBK" %> Server Info: 172.25.78.2 : 8080

ID 3281D8620D9C032D509F68999319E338-n2
Session listuser2 = 123
user1 = 123
user5 = 789
name:
key:
he time is:Mon Jul 24 03:46:41 CST 2017

[[email protected] tomcat]# telnet localhost 11211
Trying ::1...
Connected to localhost.
Escape character is ‘^]‘.
 get 3281D8620D9C032D509F68999319E338-n2
VALUE 3281D8620D9C032D509F68999319E338-n2 2048 125
W]p~j]p01]p]p#3281D8620D9C032D509F68999319E338-n2user2123user1123user5789
END

###如果将server2的tomcat关闭####

仍然访问172.25.78.1/test.jsp会发现原有的session并没有丢失这是因为保存在了缓存里
tge contentType="text/html; charset=GBK" %> Server Info: 172.25.78.3 : 8080

ID 3281D8620D9C032D509F68999319E338-n2
Session listuser2 = 123
user1 = 123
user4 = 345
user5 = 789
name:
key:
he time is:Mon Jul 24 03:52:52 CST 2017

get  3281D8620D9C032D509F68999319E338-n2
VALUE 3281D8620D9C032D509F68999319E338-n2 2048 137
W]p~j]qt01]qt]qt#3281D8620D9C032D509F68999319E338-n2user2123user1123user4345user5789
END

####nginx算法sticky####

客户端的请求---> cdn ----> nginx ---> server 时如果nginx负载均衡的算法使用ip_hash那么经过cdn后nginx得到的ip均变成了cdn的ip那么所有经过cdn的客户请求均会到同一个后端服务器这样就导致只有一个后端服务器相应请求是不合理的但使用stick算法那么是根据cookie来进行负载均衡cookie是服务器分给浏览器的因此浏览器的cookie是不同的服务器就可以根据cookie来进行处理

原来编译的nginx1.12没有sticky模块而现有的模块nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d.tar.gz与1.12版本不匹配所以重新编译1.10版本的nginx

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

2 ./configure --prefix=/opt/nginx/  --user=nginx --group=nginx  --with-http_stub_status_module --with-http_ssl_module --with-threads --with-file-aio --add-module=/root/nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d

3 make  &&  make    install

4 vim   /opt/nginx/cong/ngin.conf

upstream westos  {
                sticky;
                server 172.25.38.2:8080;
                server 172.25.38.3:8080;

}

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

5 /opt/nginx/sbin/nginx  -s  reload

时间: 2025-01-04 22:51:17

nginx+tomcat+memcache的相关文章

windows下nginx+tomcat+memcache负载均衡tomcat集群session共享搭建

使用nginx 做负载均衡 memcached处理session共享  环境 windows 7  X64  java : jdk-7windows-x64.rar  nginx : http://nginx.org/en/download.html ,这里我们推荐下载稳定版(stable versions),本文采用nginx-1.8.0  tomcat:apache-tomcat-7.0.63 在同一台电脑上配置多个tomcat(本次采用两个tomcat来示范),修改 conf/server

Nginx+Tomcat+Memcache实现负载均衡及Session共享

第一部分 环境介绍 部署环境: Host1:Nginx.Memcached.Tomcat1 Host2:Tomcat2 Tomcat_version:8.0.38 第二部分 Nginx+Tomcat实现负载均衡 1.nginx及tomcat的安装省略 2.nginx负载均衡配置: http标签中定义tomcat集群: upstream tomcat_server { server 101.200.229.38:8080; server 101.200.162.214:8080; } server

haproxy+nginx+tomcat+memcache实现动静分离、会话同步集群

一.实验说明 haproxy在前端做负载均衡调度,后端实现动静分离 静态资源server为nginx 动态内容使用nginx&tomcat做app server,集成于单机,两台 使用两台memcache服务器做高可用session缓存,实现app server宕机时会话不中断 以上组合使用实现业务.session.session缓存均为高可用的集群. 二.实验准备 haproxy server:192.168.0.168 nginx server(静态):192.168.0.68 nginx+

nginx+tomcat+memcache+session绑定

节点信息 节点1 ip:172.16.30.1 nginx 节点101 ip:172.16.30.101 tomcat 节点102 ip:172.16.30.102 tomcat 通过nginx代理访问后端tomcat,并实现memcache的会话绑定,即同一个浏览器访问得到的session结果是一样的 1.节点1安装nginx [[email protected] ~]# yum install -y nginx 1.1.启动nginx测试 [[email protected] ~]# ser

nginx+tomcat+memcache会话保持

一 Tomcat 简介: Tomcat服务器是一个免费的开发源代码的WEB应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选.其主要的应用场景是解析动态程序代码(Java)JSP程序可以处理Tomcat界面 二 环境安装: 主机名 IP地址 作用 server 1 192.168.3.10 nginx调取器,Tomcat客户端,memcached服务器 server 2 192.168.3.20 tomcat 客户端,memcac

session共享机制(nginx+tomcat+memcached)

一.配置jdk环境java的编译环境------server2和server3同时配置 jdk是JAVA的开发编译环境是java语言的软件开发工具包主要用于移动设备的嵌入式设备上的java应用程序 jdk的安装基础过程 1将jdk的包解压在指定路径 使用-C来指定路径 2进入指定的路径给jdk解压后的目录做个软连接 3编辑系统的环境变量使得java命令可以使用更改后让文件生效让环境变量文件即时生效使用source命令 4编辑java测试文件编译执行 1. get jdk-7u79-linux-x

nginx+tomcat+memcached

######### nginx+tomcat+memcache ############ 实验环境rhel6.53台主机iptables防火墙关闭 实验主机172.25.8.2    nginx172.25.8.3    tomcat memcached172.25.8.4    tomcat memcached 实验原理nginx在前端接受客户端请求进行负载均衡Tomcat-1(T1)将session存储在memcached-2(T2)上.只有当M2不可用时,T1才将session存储在mem

nginx+tomcat集群+redis(memcache)session共享!

nginx+tomcat+redissession共享 常用保持session的方式: 1.一些代理(比如nginxIP_hash) 1.使用数据库来存储Session 2.使用Cookie来存储Session                       3.使用Redis来存储Sesssion(memcache也可以) --   环境: 192.168.1.220   nginx    centos6.6   端口:80 版本:1.9.2 192.168.1.224   tomcatA  ce

Nginx+Tomcat+Keepalived+Memcache 负载均衡动静分离技术

一.概述 Nginx 作负载均衡器的优点许多,简单概括为: ①实现了可弹性化的架构,在压力增大的时候可以临时添加Tomcat服务器添加到这个架构里面去; ②upstream具有负载均衡能力,可以自动判断下面的机器,并且自动踢出不能正常提供服务的机器: Keepalived 可实现 Nginx负载均衡器双机互备,任意一台机器发生故障,对方都能够将虚拟IP接管过去. Memcache可以实现Tomcat服务器的Sission共享整个拓补如下: 注意: 1.由于服务器有限,IP相同的为同一台机.只是端