`
pany
  • 浏览: 90512 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

nginx+tomcat集群+session复制

阅读更多

ulimit -SHn 65535 
echo "ulimit -SHn 65535" >>/etc/rc.local

环境: 
redhat5.4、pcre-8.12、nginx-upstream-jvm-route-0.1、nginx-1.0.5、apache-tomcat-6.0.33 
nginx服务器地址:192.168.0.40 
tomcat1:192.168.0.20 
tomcat2:192.168.0.30

拓扑如下:

 

绘图1

 

1.安装nginx

tar zxf pcre-8.12.tar.gz 
cd pcre-8.12 
./configure 
make;make install

下载下面的插件安装,否则nginx无法识别tomcat中jvmRoute,从而无法达到session复制的效果。

wget http://friendly.sinaapp.com//LinuxSoft/nginx-upstream-jvm-route-0.1.tar.gz 
tar xzf nginx-upstream-jvm-route-0.1.tar.gz 
tar xzf nginx-1.0.5.tar.gz 
cd nginx-1.0.5 
patch -p0 <../nginx_upstream_jvm_route/jvm_route.patch 
/configure --prefix=/usr/local/nginx --with-http_stub_status_module  --with-pcre=/root/pcre-8.12 --add-module=../nginx_upstream_jvm_route/ 
#--with-pcre=指向的是pcre的源码包 
make;make install

2.配置nginx

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

#user  nobody; 
worker_processes  1;

#error_log  logs/error.log; 
#error_log  logs/error.log  notice; 
#error_log  logs/error.log  info;

pid        /usr/local/nginx/logs/nginx.pid; 
worker_rlimit_nofile 51200;

events { 
    worker_connections  5000; 
}

http { 
  upstream backend { 
    server 192.168.0.20:8080 srun_id=tomcat1; //在tomcat的配置里会配置jvmRoute为tomcat1
    server 192.168.0.30:8080 srun_id=tomcat2; 
    jvm_route $cookie_JSESSIONID|sessionid reverse; 
  }

include       mime.types; 
default_type  application/octet-stream; 
#charset  gb2312; 
charset UTF-8; 
server_names_hash_bucket_size 128; 
client_header_buffer_size 32k; 
large_client_header_buffers 4 32k; 
client_max_body_size 20m; 
limit_rate  1024k; 
sendfile on; 
tcp_nopush     on; 
keepalive_timeout 60; 
tcp_nodelay on; 
fastcgi_connect_timeout 300; 
fastcgi_send_timeout 300; 
fastcgi_read_timeout 300; 
fastcgi_buffer_size 64k; 
fastcgi_buffers 4 64k; 
fastcgi_busy_buffers_size 128k; 
fastcgi_temp_file_write_size 128k; 
gzip on; 
#gzip_min_length  1k; 
gzip_buffers     4 16k; 
gzip_http_version 1.0; 
gzip_comp_level 2; 
gzip_types       text/plain application/x-javascript text/css application/xml; 
gzip_vary on;

server 

   listen       80; 
   server_name  www.baiying.com; 
   index index.jsp index.htm index.html; 
   root  /usr/www;

   location /  { 
     proxy_pass  http://backend; 
     proxy_redirect    off; 
     proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for; 
     proxy_set_header  X-Real-IP  $remote_addr; 
     proxy_set_header  Host $http_host; 
   } 
   location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ 
   { 
     expires      30d; 
   } 
   location ~ .*\.(js|css)?$ 
   { 
     expires      1h; 
   } 
   location /Nginxstatus { 
     stub_status on; 
     access_log   off; 
   } 
  log_format  access  '$remote_addr - $remote_user [$time_local] "$request" ' 
             '$status $body_bytes_sent "$http_referer" ' 
             '"$http_user_agent" $http_x_forwarded_for';



                                                                                                          
[root@slave conf]# /usr/local/bin/nginx.sh stop 
[root@slave conf]# /usr/local/bin/nginx.sh start 
 

3.安装tomcat 
1)安装tomcat_1 
tar zxf apache-tomcat-6.0.33.tar.gz 
mv apache-tomcat-6.0.33/usr/local/tomcat 
cp tomcat-replication.jar /usr/local/tomcat/lib 
2)安装tomcat_2,步骤同1)

4.分别在tomcat服务器安装jdk

chmod 755 jdk-6u26-linux-i586-rpm.bin 
./jdk-6u26-linux-i586-rpm.bin

cat >>/etc/profile <<EOF
export JAVA_HOME=/usr/java/jdk1.6.0_26 
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib 
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin

EOF;

source /etc/profile  //使环境变量立即生效

5.tomcat集群配置 
tomcat1配置: 
修改conf/server.xml配置文件

    &lt;Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1"> 
        <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" 
                 channelSendOptions="8"> 
          <Manager className="org.apache.catalina.ha.session.DeltaManager" 
                   expireSessionsOnShutdown="false" 
                   notifyListenersOnReplication="true"/> 
          <Channel className="org.apache.catalina.tribes.group.GroupChannel"> 
            <Membership className="org.apache.catalina.tribes.membership.McastService" 
                        address="224.0.0.4" 
                        port="45564" 
                        frequency="500" 
                        dropTime="3000"/> 
            <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" 
                      address="192.168.0.20" 
                      port="4001" 
                      autoBind="100" 
                      selectorTimeout="5000" 
                      maxThreads="6"/> 
            <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"> 
              <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender" /> 
            </Sender> 
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/> 
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/> 
         <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/> 
          </Channel> 
          <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" 
                 filter=""/> 
          <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/> 
          <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" 
                    tempDir="/tmp/war-temp/" 
                    deployDir="/tmp/war-deploy/" 
                    watchDir="/tmp/war-listen/" 
                    watchEnabled="false"/> 
          <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/> 
          <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> 
        </Cluster> 

tomcat2配置: 
修改conf/server.xml配置文件

    <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2"> 
        <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" 
                 channelSendOptions="8"> 
          <Manager className="org.apache.catalina.ha.session.DeltaManager" 
                   expireSessionsOnShutdown="false" 
                   notifyListenersOnReplication="true"/> 
          <Channel className="org.apache.catalina.tribes.group.GroupChannel"> 
            <Membership className="org.apache.catalina.tribes.membership.McastService" 
                        address="224.0.0.4" 
                        port="45564" 
                        frequency="500" 
                        dropTime="3000"/> 
            <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" 
                      address="192.168.0.30" 
                      port="4000" 
                      autoBind="100" 
                      selectorTimeout="5000" 
                      maxThreads="6"/> 
            <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"> 
              <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender" /> 
            </Sender> 
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/> 
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/> 
         <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/> 
          </Channel> 
          <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" 
                 filter=""/> 
          <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

          <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" 
                    tempDir="/tmp/war-temp/" 
                    deployDir="/tmp/war-deploy/" 
                    watchDir="/tmp/war-listen/" 
                    watchEnabled="false"/> 
          <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/> 
          <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> 
        </Cluster>

6.session配置

修改web应用里面WEB-INF目录下的web.xml文件,加入标签 
<distributable/> 
直接加在</web-app>之前 
开启网卡组播功能: 
route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0

7.创建jsp测试页面 
在tomcat1安装路径下建立目录test 
mkdir /usr/local/tomcat/webapps/ROOT/test/ 
vi index.jsp 
<html> 
<title> 
tomcat1 jsp 
</title> 
<% 
   String showMessage="Oh My God 192.168.0.20 华仔!"; 
   out.print(showMessage); 
%> 
</html> 
---------------------------- 
在tomcat2安装路径下建立目录test 
mkdir /usr/local/tomcat/webapps/ROOT/test/ 
vi index.jsp 
<html> 
<title> 
tomcat2 jsp 
</title> 
<% 
   String showMessage="Oh My God 192.168.0.30 华仔!"; 
   out.print(showMessage); 
%> 
</html>

转载自:http://baiying.blog.51cto.com/1068039/731021/

分享到:
评论

相关推荐

    nginx+tomcat+redis完成session共享

    这个小例子"nginx+tomcat+redis完成session共享"旨在演示如何通过这三种技术实现跨服务器的用户会话共享,以提升用户体验并简化系统管理。以下是这些技术及其在会话共享中的作用: 1. **Nginx**:Nginx是一款高性能...

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

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

    nginx+tomcat7+memcached session会话保持

    本文将详细介绍如何在Nginx、Tomcat7和Memcached的环境下实现会话保持,确保用户在多台服务器之间切换时仍能保持其会话状态。 首先,我们要理解会话保持的重要性。在分布式系统中,用户可能与集群中的任何一台...

    Nginx+Tomcat+Memcached共享session集群配置

    ### Nginx+Tomcat+Memcached 共享 Session 集群配置 #### 一、概述 在大型分布式系统中,为了实现高可用性和负载均衡,常常会使用 Nginx 作为反向代理服务器来分发请求到后端多个 Tomcat 实例上。然而,传统的基于...

    Nginx+Tomcat+Memcached集群Session共享实例

    Nginx+Tomcat+Memcached集群Session共享实例,Nginx 1.81 + tomcat1 + tomcat2 + Memcached 完整可运行 访问根目录下 test.jsp 可看效果

    Nginx+tomcat+redis

    - **反向代理**:Nginx接收来自客户端的请求,然后将这些请求转发到后端的Tomcat服务器集群,隐藏了内部服务器的细节。 - **负载均衡**:Nginx可以基于多种策略(如轮询、最少连接、IP哈希等)分配请求到不同的...

    nginx+tomcat+redis集群部署环境

    nginx+tomcat+redis集群部署环境,包括nginx tomcat redis及集群部署所需jar包,jedis-2.6.1.jar,commons-pool2-2.2.jar,tomcat-redis-session-manager1.2.jar 具体步骤可以参见我的博文

    Nginx+Tomcat7+Memcached集群Session共享

    Nginx+Tomcat7+Memcached集群Session共享 完整例子 主要是利用memcached-session-manager(下面简称msm)开源tomcat插件改变tomcat原始的session存储机制,将session的存储放到分布式缓存memcache中,从而实现对...

    Nginx+Tomcat+Memcached集群Session共享

    标题 "Nginx+Tomcat+Memcached集群Session共享" 描述了在分布式环境中如何通过Nginx反向代理服务器、Tomcat应用服务器集群以及Memcached缓存系统来实现Session的共享。这是一个常见的高可用性和负载均衡解决方案。...

    nginx+tomcat集群+redis实现session共享

    目前只支持tomcat8.5,其它版本的tomcat还没测试,自己配置过很多nginx+tomcat集群+redis实现session共享的系统,经过仔细总结得出这些,可以说是知识的结晶,欢迎大家来下载,不好的地方可以多提,有问题看到的话会...

    Windows+Nginx+Tomcat做负载均衡同时实现session共享Demo

    总之,“Windows+Nginx+Tomcat做负载均衡同时实现session共享Demo”是一个实践性强的教学资源,它涵盖了Web服务集群中的关键技术和最佳实践,对于学习和提升系统架构能力非常有帮助。通过深入理解和实践这个Demo,...

    Nginx+tomcat负载均衡集群session复制 windos

    本文将详细介绍如何在Windows环境下,利用Nginx作为反向代理服务器,与Tomcat集群配合实现负载均衡,并进行session复制,确保用户会话在不同服务器之间的一致性。 首先,Nginx是一款轻量级、高性能的HTTP和反向代理...

    Nginx+tomcat 实现负载均衡session共享demo

    3. **Session Replication**:在`Tomcat`集群间复制`session`数据。这需要在`Tomcat`配置中开启`Manager`组件,并确保相同的`session`ID在所有服务器上有效。 4. **Shared Session Store**:如使用数据库、缓存(如...

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

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

    男孩的天职nginx+tomcat集群+redis存储session

    男孩的天职nginx+tomcat集群+redis存储session 下载的是一个pdf文件,文件里面有视频演示下载地址,以及jdk1.8 tomcat8 nginx 1.8安装笔记,绝对可以用 nginx反向代理tomcat集群,请求轮训给集群的tomcat,session...

    Windows + Nginx + Memcached + Tomcat 集群 session共享

    总之,Windows + Nginx + Memcached + Tomcat 集群session共享方案是一个高效且可靠的架构,它能提高系统的可用性,保证用户会话的连续性,是大规模Web应用常见的部署模式。然而,实际部署时,还需要考虑安全性、...

    Nginx+Tomcat+Redis集群和session共享所有jar包

    Nginx+Tomcat+Redis实现应用服务器集群负载均衡和Session共享所需要的所有jar包,包括如下jar包:commons-logging-1.2.jar,commons-pool2-2.6.0.jar,jedis-2.9.0.jar,tomcat-juli-7.0.90.jar,tomcat-redis-...

    Nginx+Tomcat+Redis实现session共享

    Nginx+Tomcat+Redis实现session共享,通过Nginx作为前端的负载,把请求分发到后端的Tomcat服务器上,提高并发数;但是单纯的通过Nginx的ip_hash负载是很多问题的。只要用户一切换网络或者后端Tomcat主机宕机session就...

Global site tag (gtag.js) - Google Analytics