Nginx+Tomcat+Memcached实现tomcat集群和session共享

实验环境:

hostname      ip

nginx        192.168.1.241

java1        192.168.1.242

java2        192.168.1.243

1.nginx+upstream安装

[[email protected] ~]# useradd nginx -s /sbin/nologin

[[email protected] opt]# tar zxf pcre-8.34.tar.gz

[[email protected] opt]# cd pcre-8.34

[[email protected] pcre-8.34]# ./configure

[[email protected] pcre-8.34]# make && make install

[[email protected] opt]# tar zxf tengine-1.5.1.tar.gz

[[email protected] opt]# cd tengine-1.5.1

[[email protected] tengine-1.5.1]# ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

[[email protected] tengine-1.5.1]# make && make install

(1)修改配置文件

[[email protected] ~]# mv /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak

[[email protected] ~]# vi /usr/local/nginx/conf/nginx.conf

添加以下配置

user nginx nginx;

worker_processes auto;

worker_rlimit_nofile 65535;

error_log /var/log/www/error.log;

#pid      logs/nginx.pid;

events {

use epoll;

worker_connections  51200;

}

http {

include       mime.types;

default_type  application/octet-stream;

log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request"‘

‘$status $body_bytes_sent "$http_referer" ‘

‘"$http_user_agent" "$http_x_forwarded_for"‘;

server_info  off;

server_tag   off;

server_name_in_redirect off;

access_log  /var/log/www/access.log  main;

client_max_body_size 20m;

client_header_buffer_size 16k;

large_client_header_buffers 4 16k;

sendfile        on;

tcp_nopush     on;

keepalive_timeout  65;

server_tokens on;

gzip  on;

gzip_min_length 1k;

gzip_buffers 4 16k;

gzip_proxied   any;

gzip_http_version 1.1;

gzip_comp_level 3;

gzip_types text/plain application/x-javascript text/css application/xml;

gzip_vary on;

upstream kim {

consistent_hash $request_uri;

#ip_hash;

server 192.168.1.242:8080;

server 192.168.1.243:8080;

}

server {

listen       80;

server_name  localhost;

location / {

root   html;

index  index.html index.htm;

proxy_pass   http://kim;

proxy_redirect    off;

proxy_set_header   Host $host;

proxy_set_header   X-Real-IP $remote_addr;

proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;

client_max_body_size   10m;

client_body_buffer_size   128k;

proxy_connect_timeout   90;

proxy_send_timeout   90;

proxy_read_timeout   90;

proxy_buffer_size   4k;

proxy_buffers   4 32k;

proxy_busy_buffers_size   64k;

proxy_temp_file_write_size  64k;

}

}

}

2.memcached安装

http://304076020.blog.51cto.com/7503470/1544311

安装过程请参照上面网址

3.tomcat安装 (安装 java1和java2两台配置一样)

http://304076020.blog.51cto.com/7503470/1642482

安装过程请参照上面网址

(1)将以下jar包放到/usr/local/tomcat/lib下

jar包下载地址

http://down.51cto.com/data/2044436

(2)修改配置文件

[[email protected] ~]# vi /usr/local/tomcat/conf/context.xml

在 </Context> 上一行添加以下配置

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"

memcachedNodes="n1:127.0.0.1:11211"

sticky="false"

sessionBackupAsync="false"

lockingMode="auto"

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

transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"

/>

如图

[[email protected] ~]# vi /usr/local/tomcat/conf/context.xml

在 </Context> 上一行添加以下配置

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"

memcachedNodes="n1:192.168.1.242:11211"

sticky="false"

sessionBackupAsync="false"

lockingMode="auto"

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

transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"

/>

如图

3)新建测试页面

[[email protected] ~]# vi /web/data/test.jsp

添加以下配置

SessionID:<%=session.getId()%>

<BR>

SessionIP:<%=request.getServerName()%>

<BR>

SessionPort:<%=request.getServerPort()%>

<%

out.println("This is Tomcat Server java1!");

%>

[[email protected] ~]# vi /web/data/test.jsp

添加以下配置

SessionID:<%=session.getId()%>

<BR>

SessionIP:<%=request.getServerName()%>

<BR>

SessionPort:<%=request.getServerPort()%>

<%

out.println("This is Tomcat Server java2!");

%>

(4)启动tomcat

[[email protected] ~]# /usr/local/tomcat/bin/startup.sh

[[email protected] ~]# /usr/local/tomcat/bin/startup.sh

测试访问tomcat

(5)启动nginx

[[email protected] ~]# /usr/local/nginx/sbin/nginx -s start

测试访问nginx

由上图可见,nginx现在负载在tomcat2上,关闭tomcat2,访问测试session id会不会变。

[[email protected] ~]# /usr/local/tomcat/bin/shutdown.sh

由上图可见,nginx现在负载在tomcat1上,此时session id一直没变,表示共享成功。

时间: 2024-08-04 22:02:14

Nginx+Tomcat+Memcached实现tomcat集群和session共享的相关文章

基于apache的tomcat负载均衡和集群配置session共享

接上面的话题接着继续完善.为什么没接到上篇呢?原因很简单太长的文章不爱看!就像有人写了上千行的方法一样,不是逼得没办法谁爱看谁看,反正我不看. 期间我没有一次配置成功,从失败的开始说起, 1.准备jar包 注意:不同的tomcat版本(tomcat6,tomcat7)所需的包不一样,需要针对tomcat版本下载对应的包. 这是采用的最新稳定版1.6 首先我到官网:http://code.google.com/p/memcached-session-manager/下载了最新的jar 由于公司网络

Redis+Tomcat+Nginx集群实现Session共享,Tomcat Session共享

Redis+Tomcat+Nginx集群实现Session共享,Tomcat Session共享 ============================= 蕃薯耀 2017年11月27日 http://www.cnblogs.com/fanshuyao/ 代码美化版或附件下载见:http://fanshuyao.iteye.com/blog/2400975 一.Session共享使用tomcat-cluster-redis-session-manager插件实现 插件地址见:https://g

Nginx+Tomcat7+Memcached负载均衡集群+session共享

Nginx+Tomcat7+Memcached负载均衡集群服务搭建 操作系统:CentOS6.5     本文档主要讲解,如何在CentOS6.5下搭建Nginx+Tomcat7+Memcached负载均衡集群服务器,Nginx负责负载均衡,Tomcat7负责实际服务,Memcached负责同步Tomcat7的Session,达到Session共享的目的.1.安装NginxNginx官网:http://nginx.org/下载最新稳定版本.在安装Nginx之前,需要先安装gcc. openssl

MSM实现tomcat集群中session共享的高可用

目录 1.测试环境概述 2.MSM简介 2.1.MSM的特性 2.2.MSM要解决的问题 2.3.MSM的工作原理 3.环境搭建 3.1.memcached安装 3.2.jkd与tomcat安装配置 3.3.MSM sticky session + kryo模式的配置 3.4.MSM no-sticky session + kryo模式的配置 4.思考与总结 1.测试环境概述 采用两台linux x64主机,主机上分别安装memcached与tomcat,memcached提供key/value

nginx+tomcat+memcached搭建服务器集群及负载均衡

在实际项目中,由于用户的访问量很大的原因,往往需要同时开启多个服务器才能满足实际需求.但是同时开启多个服务又该怎么管理他们呢?怎样实现session共享呢?下面就来讲一讲如何使用tomcat+nginx搭建服务器集群以及如何实现session共享. 环境: apache-tomcat-6.0.29+apache-tomcat-6.0.29+jdk1.6+win7(由于自己只是做了一个demo,j就没有用到服务器系统了) 1.首先我们准备两个tomcat(tomcat1,tomcat2),并将端口

Nginx+Tomcat+Memcached+kryo序列化集群Session共享

架构(一共使用3台主机,其中nginx主机上运行2个memcached实例,端口分别是11211.11212) 环境配置说明: 软件:Centos6.7.tomcat8.0.memcached1.4.4.nginx1.4.7.jdk-8u65-linux-x64. 实现msm+kryo必须的包,一共9个: (注意:不同版本的tomcat,必须下载对应的memcached-session-manager包) spymemcached-2.11.4 reflectasm-1.01 msm-kryo-

关于 tomcat 集群中 session 共享的三种方法

前两种均需要使用 memcached 或 redis 存储 session ,最后一种使用 terracotta 服务器共享. 建议使用 redis ,不仅仅因为它可以将缓存的内容持久化,还因为它支持的单个对象比较大,而且数据类型丰富, 不只是缓存 session ,还可以做其他用途,一举几得啊. 1.使用 filter 方法存储 这种方法比较推荐,因为它的服务器使用范围比较多,不仅限于 tomcat ,而且实现的原理比较简单容易控制. 可以使用 memcached-session-filter

基于tomcat集群做session共享

前端代理服务器nginx:192.168.223.136 tomcat服务器:采用的一台多实例192.168.223.146:8081,192.168.223.146:8082(如何构建多实例tomcat,请参考前面的文章) 首先查看下tomcat的webapps目录架构: [[email protected] tomcat-instance]# pwd/usr/local/tomcat-instance[[email protected] tomcat-instance]# ll总用量 24-

tomcat集群及session共享

一般来说,java web app主要用作两个领域: 1.api.api一般是无状态的,所以无需考虑session共享的问题 2.传统web应用和网站,如crm,oa,erp,b2c,bbs等.尤其bbs,b2c这样的互联网应用,单台tomcat往往无法满足高并发,所以需要做集群.如果做了集群,往往需要考虑session共享的问题,因为LB(apache/nginx)等等往往会将同一用户的请求分发到不同server 常用的servlet容器主要有tomcat(老牌的servlet容器,像apac