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] ~]# service nginx start

2、节点101和102分别安装jdk和tomcat

2.1、安装jdk,版本1.7.67

[[email protected] ~]# rpm -ivh jdk-7u67-linux-x64.rpm
Preparing...                ########################################### [100%] 
1:jdk                    ########################################### [100%] 
Unpacking JAR files... 
rt.jar... 
jsse.jar... 
charsets.jar... 
tools.jar... 
localedata.jar... 
jfxrt.jar...

导出环境变量

[[email protected] ~]# vim /etc/profile.d/jdk.sh
export JAVA_HOME=/usr/java/latest 
export PATH=$JAVE_HOME/bin:$PATH 
[[email protected] ~]# . /etc/profile.d/jdk.sh

测试是否正确安装以及变量是否导出

[[email protected] lib]# java -version
java version "1.7.0_67" 
Java(TM) SE Runtime Environment (build 1.7.0_67-b01) 
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)
2.2、安装tomcat
[[email protected] ~]# tar xf apache-tomcat-7.0.55.tar.gz  -C /usr/local/
[[email protected] ~]# cd /usr/local/ 
[[email protected] local]# ln -sv apache-tomcat-7.0.55/ tomcat 
`tomcat‘ -> `apache-tomcat-7.0.55/‘

导出环境变量

[[email protected] tomcat]# vim /etc/profile.d/tomcat.sh
export CATALINA_HOME=/usr/local/tomcat 
export PATH=$CATALINA_HOME/bin:$PATH 
[[email protected] tomcat]# . /etc/profile.d/tomcat.sh

启动tomcat测试是否安装成功以及环境变量是否导出

[[email protected] tomcat]# catalina.sh start
[[email protected] tomcat]# catalina.sh start
Using CATALINA_BASE:   /usr/local/tomcat 
Using CATALINA_HOME:   /usr/local/tomcat 
Using CATALINA_TMPDIR: /usr/local/tomcat/temp 
Using JRE_HOME:        /usr/java/latest 
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar 
Tomcat started.

访问测试,注意这里默认端口是8080,访问是要注意

关闭tomcat

[[email protected] lib]# catalina.sh stop
Using CATALINA_BASE:   /usr/local/tomcat 
Using CATALINA_HOME:   /usr/local/tomcat 
Using CATALINA_TMPDIR: /usr/local/tomcat/temp 
Using JRE_HOME:        /usr/java/latest 
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

3、安装memcache,此处使用的是编译安装,版本1.4.15

[[email protected] memcached-1.4.15]# yum install -y  gcc libevent-devel
[[email protected] memcached-1.4.15]# ./configure --with-libevent --prefix=/usr/local/memcached 
[[email protected] memcached-1.4.15]# make && make install

安装完成去安装目录测试是否安装成功

[[email protected] memcached-1.4.15]# cd /usr/local/memcached/bin
[[email protected] bin]# ./memcached -i 
memcached 1.4.15 
Copyright (c) 2003, Danga Interactive, Inc. 
All rights reserved. 
以下省略N多.......

创建运行memcache的用户,并连接

[[email protected] bin]# useradd -r memcache
[[email protected] bin]# ./memcached -d -v -p 12000 -m 512 -u memcache

解释:-d表示以守护进程方式运行memcached;-v表示输出警告和错误信息;-p指定监听的端口号;-m指定能使用的最大内存,单位MB;-u指定运行memcached的账户,非root用户。

使用# ps -ef | grep memcached查看进程。

命令基本选项说明:

-p     监听的TCP端口 (默认: 11211)

-d    以守护进程方式运行memcached

-u     运行memcached的账户,非root用户

-m     最大的内存使用,单位是MB,默认是 64 MB

-c     软连接数量,默认是1024(最大并发连接数)

-v    输出警告和错误信息

-vv    打印客户端的请求和返回信息

-h    打印帮助信息

-i    打印memcached和libevent的版权信息

使用telnet连接验证服务是否可用

[[email protected]]# yum install -y telnet
[[email protected]]# telnet 172.16.30.101 12000 
Trying 172.16.30.101... 
Connected to 172.16.30.101. 
Escape character is ‘^]‘.

使用stats命令查看状态,会显示很多当前的状态

stats
STAT pid 4838 
STAT uptime 6747 
STAT time 1422407090 
STAT version 1.4.15 
STAT libevent 1.4.13-stable
STAT pointer_size 64 
STAT rusage_user 1.142826 
STAT rusage_system 0.705892 
STAT curr_connections 12 
STAT total_connections 15 
STAT connection_structures 13 
STAT reserved_fds 20 
STAT cmd_get 16 
STAT cmd_set 8 
STAT cmd_flush 0 
STAT cmd_touch 0 
STAT get_hits 1

停止memcache服务

[[email protected]]# killall memcached

4、为tomcat配置memcache

Tomcat要支持memcached管理Session,需要调用一些jar库文件:

memcached-session-manager项目地址,http://code.google.com/p/memcached-session-manager/

下载如下jar文件至各tomcat节点的tomcat安装目录下的lib目录中,其中的${version}要换成你所需要的版本号,tc${6,7,8}要换成与tomcat版本相同的版本号。

memcached-session-manager-${version}.jar

memcached-session-manager-tc${6,7,8}-${version}.jar

spymemcached-${version}.jar

msm-javolution-serializer-${version}.jar

javolution-${version}.jar

不同的版本对应的库文件不一样,需要对应使用

本实验使用的库文件如下所示

-rw-r--r-- 1 root root  452748 Jan 28 07:43 javolution-5.4.3.1.jar
-rw-r--r-- 1 root root  146932 Jan 28 07:42 memcached-session-manager-1.8.1.jar 
-rw-r--r-- 1 root root   11283 Jan 28 07:42 memcached-session-manager-tc7-1.8.1.jar ##因为使用的tomcat版本是7.0.55所以此处使用的是tc7 
-rw-r--r-- 1 root root   71050 Jan 28 07:43 msm-javolution-serializer-1.8.1.jar
-rw-r--r-- 1 root root  439107 Jan 28 07:42 spymemcached-2.10.2.jar ##此文件无版本区别

注意:以上节点101上的配置同样须在节点102进行

5、配置tomcat使之可以使用memcache服务

分别在两个tomcat上的某host上定义一个用于测试的context容器,并在其中创建一个会话管理器,如下所示:

##可以使用默认host,代码插入位置如图

有一处需要注意:Engine处保持默认即可,不需要添加jvmRoute

<Context path="/test" docBase="/usr/local/tomcat/webapps/test" reloadable="true">
              <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
                memcachedNodes="n1:172.16.100.9:11211,n2:172.16.100.10:11211"
                failoverNodes="n1"
                requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
                transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
              />
             </Context>

分别为两个context提供测试页面:

节点101:

# mkdir -pv /usr/local/tomcat/webapps/test/WEB-INF/{classes,lib}# vim /usr/local/tomcat/webapps/test/index.jsp

添加如下内容:

<%@ page language="java" %>
<html>
  <head><title>TomcatA</title></head>
  <body>
    <h1><font color="red">TomcatA.magedu.com</font></h1>
    <table align="centre" border="1">
      <tr>
        <td>Session ID</td>
    <% session.setAttribute("magedu.com","magedu.com"); %>
        <td><%= session.getId() %></td>
      </tr>
      <tr>
        <td>Created on</td>
        <td><%= session.getCreationTime() %></td>
     </tr>
    </table>
  </body>
</html>

节点102:

# mkdir -pv /usr/local/tomcat/webapps/test/WEB-INF/{classes,lib}
# vim /usr/local/tomcat/webapps/test/index.jsp

添加如下内容:

<%@ page language="java" %>
<html>
  <head><title>TomcatB</title></head>
  <body>
    <h1><font color="blue">TomcatB.magedu.com</font></h1>
    <table align="centre" border="1">
      <tr>
        <td>Session ID</td>
    <% session.setAttribute("magedu.com","magedu.com"); %>
        <td><%= session.getId() %></td>
      </tr>
      <tr>
        <td>Created on</td>
        <td><%= session.getCreationTime() %></td>
     </tr>
    </table>
  </body>
</html>

分别访问测试

如果此时将n1即节点101的memcache关闭的话,再次访问session信息便会在n2上

因为访问的是两个节点所以session信息并不一样,如果通过前端代理访问则会是同一个session

下面将通过设置nginx实现前端代理实现memcache的session绑定

配置nginx

[[email protected] ~]# vim /etc/nginx/nginx.conf
在http段中添加upstream
upstream tomcat {
server 172.16.30.101:80;
server 172.16.30.102:80;
}
在location中添加代理
location / {
root   html;
index  index.jsp index.html index.htm;
proxy_pass    http://tomcat;
}

按下图修改即可

重新载入nginx

[[email protected] ~]# service nginx reloadReloading nginx:                                           [  OK  ]

6、访问测试

此时无论如何刷新都不会变了,我们可以换一个浏览器试一试,也是相同的,这样就实现了通过memcache做session服务器,nginx前端代理的session绑定

时间: 2024-09-28 21:07:31

nginx+tomcat+memcache+session绑定的相关文章

Nginx + tomcat + Memcached(session共享)

Nginx + tomcat + Memcached(session共享) 实验拓扑 nginx   实现负载 tomcat   实现web功能 memcached 实现会话共享 安装Nginx [[email protected] ~]# yum -y install pcre pcre-devel [[email protected] ~]# tar -zxvf nginx-1.0.5.tar.gz [[email protected] ~]# cd nginx-1.0.5 [[email 

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

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 /

Nginx+tomcat实现session共享

防伪码:人生没有对错,成功永远属于奋斗者 一.如何保持session会话 目前,为了使web能适应大规模的访问,需要实现应用的集群部署.集群最有效的方案就是负载均衡,而实现负载均衡用户每一个请求都有可能被分配到不固定的服务器上,这样我们首先要解决session的统一来保证无论用户的请求被转发到哪个服务器上都能保证用户的正常使用,即需要实现session的共享机制. 在集群系统下实现session统一的有如下几种方案: 1.请求精确定位:sessionsticky,例如基于访问ip的hash策略,

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会话保持

一 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

CentOS7 下 Nginx + Tomcat 实现 Session 共享

在之情的文章中搭建的 centos7 + tomcat + nginx 的环境的基础上, 使用 redis 实现 tomcat 的 session 共享的问题. 一 : 安装 Redis 安装 gcc: yum install -y gcc-c++ 使用 FTP 服务器上传安装包,解压上传的 redis 的包 tar -zxvf redis-3.0.0.tar.gz 进入解压目录 redis-3.0.0 执行 make PREFIX=/usr/local/redis install 把 redi

nginx tomcat glassfish session 复制配置

1.nginx配置 [[email protected] ~]# cat /usr/local/nginx/conf/nginx.conf | grep -v ^$ | grep -v ^# user  www www; worker_processes auto; error_log  /home/wwwlogs/nginx_error.log  notice; pid        /usr/local/nginx/logs/nginx.pid; worker_rlimit_nofile 5