`

nginx+tomcat7+memcached集成 负载均衡初体验

 
阅读更多

最近由于项目需要,所以学习了 nginx+tomcat7+memcached集成负载均衡。下面直接说这次学习到的知识,有什么不对的地方欢迎指出( nginx+tomcat7+memcached集成 负载均衡 搭建步骤):

 

环境及框架介绍:

  1.    服务器环境:windows server 2012
  2.    jdk 1.7
  3.    tomcat 7
  4.    nginx 1.10.1
  5.    memcached-2.5

搭建步骤:

  •  tomcat 7解压版的,修改server.xml!要注意多个tomcat,端口号等不能一样,另外需要把Engine  注释打开,加上jvmRoute,如下:

 

  <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">

 

  • 安装nginx
    1. 下载地址:http://nginx.org/ ,建议下载稳定版本,我用的是1.10
    2. 因为我服务器是win版,下载后安装很简单:cmd转到nginx文件夹bin下,一句命令即可:nginx -s install
    3. 什么都不需要该,直接再来一句命令:nginx -s start 或nginx,就已经启动了,默认地址:http://localhost,看到 欢迎页面,说明安装成功!
    4. 安装成功后,就需要与tomcat集成,主要修改conf/nginx.conf配置文件:(下面是我的配置)
    5. #user  nobody;
      #此参数修改为与CPU个数一致
      worker_processes  1;
      #error_log  logs/error.log;
      #error_log  logs/error.log  notice;
      #error_log  logs/error.log  info;
       
      pid        logs/nginx.pid;
       
      
      worker_rlimit_nofile 51200;
       
      events {
          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"';
       
          #access_log  logs/access.log  main;
       
          server_names_hash_bucket_size 128;
          client_header_buffer_size 32k;     
          large_client_header_buffers 4 32k;
       
          sendfile        on;
          #tcp_nopush     on;
       
          #keepalive_timeout  0;
          keepalive_timeout  60;
         
          tcp_nodelay on;
       
          #gzip  on;
          #下面是配置关联tomcat关键代码
          upstream abc.tomcats.com {
             #ip_hash;
             server 127.0.0.1:8080 ;
             server 127.0.0.1:8090 ;
             }
       
          server {
              listen       8085;
              server_name  abc.tomcats.com;
       
      proxy_redirect off;
       
      access_log logs/abc.tomcats.com.log combined;
              #charset koi8-r;
              #access_log  logs/host.access.log  main;
       
      #充许客户端请求的最大单个文件字节数
      client_max_body_size 10m;
       
      client_body_buffer_size 128k;
       
      #跟后端服务器连接的超时时间
      proxy_connect_timeout 10;
       
      #连接成功后等候后端服务器响应时间
      proxy_read_timeout 600;
       
      #后端服务器数据回传时间
      proxy_send_timeout 600;
       
      #代理请求缓存区
      proxy_buffer_size 8k;
       
      #同上,保存用几个buffer每个最大空间是多少
      proxy_buffers 4 32k;
       
      #如果系统很忙时可以申请更大的proxy_buffers,官方推荐*2
      proxy_busy_buffers_size 64k;
       
      #缓存临时文件的大小
      proxy_temp_file_write_size 64k;
       
              location / {
                  root   html;
                  index  index.html index.htm;
                  proxy_pass   http://abc.tomcats.com;
      	    proxy_redirect default;  
                  proxy_set_header Host $host;
                  proxy_set_header X-Real-Ip $remote_addr;
                  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              }
       
              location /status{
                  stub_status on;
                  access_log off;
                  auth_basic "NginxStatus";
                  auth_basic_user_file htpasswd;
                    }
                    location ~ \.jsp$ {
                  proxy_pass  http://abc.tomcats.com;
                    }              
       
              location ~ \.(html|js|css|png|gif)$ {
                  root html;
                           proxy_pass  http://abc.tomcats.com;
              }
       
              #error_page  404              /404.html;
       
              # redirect server error pages to the static page /50x.html
              #
              error_page   500 502 503 504  /50x.html;
              location = /50x.html {
                  root   html;
              }
       
              # proxy the PHP scripts to Apache listening on 127.0.0.1:80
              #
              #location ~ \.php$ {
              #    proxy_pass   http://127.0.0.1;
              #}
       
              # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
              #
              #location ~ \.php$ {
              #    root           html;
              #    fastcgi_pass   127.0.0.1:9000;
              #    fastcgi_index  index.php;
              #    fastcgi_param  SCRIPT_FILENAME /scripts$fastcgi_script_name;
              #    include        fastcgi_params;
              #}
       
              # deny access to .htaccess files, if Apache's document root
              # concurs with nginx's one
              #
              #location ~ /\.ht {
              #    deny  all;
              #}
          }
       
          # another virtual host using mix of IP-, name-, and port-based configuration
          #
          #server {
          #    listen       8000;
          #    listen       somename:8080;
          #    server_name  somename  alias  another.alias;
       
          #    location / {
          #        root   html;
          #        index  index.html index.htm;
          #    }
          #}
       
       
          # HTTPS server
          #
          #server {
          #    listen       443;
          #    server_name  localhost;
       
          #    ssl                  on;
          #    ssl_certificate      cert.pem;
          #    ssl_certificate_key  cert.key;
       
          #    ssl_session_timeout  5m;
       
          #    ssl_protocols  SSLv2 SSLv3 TLSv1;
          #    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
          #    ssl_prefer_server_ciphers   on;
       
          #    location / {
          #        root   html;
          #        index  index.html index.htm;
          #    }
          #}
       
      }
            这时候已经与tomcat集成了,修改过nginx配置后,记得重置一下nginx,命令如下:nginx -s reload 
    6. 重启nginx后,接着启动2个tomcat,最后访问地址:http://localhost:8085/test/rt.jsp("test/rt.jsp"是tomcat中项目路径),看到对应页面就表示成功拉。
    7. 当你关掉一个tomcat,路径还能正常访问表示nginx 配置成功;
  • 但是这时候还存2个tomcat的session值不能共享问题,通过比较找到了memcachedMemcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。
  1. memcached(附件memcached-win64-1.4.4-14.zip)
  2. 安装:memcached.exe –d install
  3. 启动:memcached.exe –d start
  4. 需要的jar(附件memjar),放到tomcat 目录的lib下
  5. 修改tomcat 的context.xml配置:
  6. <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" 
            memcachedNodes="n1:127.0.0.1:11211" 
           sticky="false" 
           lockingMode="auto"   
           sessionBackupAsync="false"   
           sessionBackupTimeout="1000"  
           transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" 
           /> 
     
  7. 最后重启tomcat、nginx,再次测试,查看session值是否一致(如何获取session值这里就不说了)
  8. 最后的最后这次初体验就结束了!
分享到:
评论

相关推荐

    nginx+tomcat7+memcached session会话保持

    总结起来,这个配置方案通过Nginx的会话保持功能配合Tomcat7与Memcached的集成,确保了用户会话在跨服务器环境下的连续性。同时,这种架构也具有良好的可扩展性和容错性,因为即使某台服务器宕机,其他服务器仍能...

    nginx+tomcat+memcached例子

    【标题】"nginx+tomcat+memcached例子"揭示了一个集成Web服务器技术的场景,其中Nginx作为前端代理服务器,Tomcat作为后端Java应用服务器,而Memcached则作为一个分布式内存缓存系统来提高整体性能。这个组合常用于...

    nginx+tomcat+memcached

    通过这种方式,我们可以利用`nginx`的反向代理和负载均衡功能,结合`tomcat`的Java应用处理能力和`memcached`的分布式缓存特性,构建出一个既能处理大量并发请求,又能保持用户会话状态的高效Web系统。 在实际项目...

    nginx+tomcat7+memcached所需jar

    通过这些jar包的集成,我们可以构建出一个高效的、基于Memcached的session管理解决方案,使得在nginx负载均衡下运行的Tomcat 7应用能充分利用Memcached进行session数据的存储和共享,从而提高系统的整体性能和可靠性...

    nginx+tomcat7+memcached

    这里提到的“nginx+tomcat7+memcached”就是这种模式的一个典型组合,分别代表了负载均衡器、Java应用服务器和分布式内存缓存服务。下面将详细介绍这三个组件以及它们之间的协同工作。 **Nginx** 是一款高性能的...

    集群Nginx+Tomcat+Memcached

    综上所述,通过使用Nginx作为前端负载均衡器,结合Tomcat作为Java Web应用服务器,再配合Memcached作为集中式缓存,可以构建出一个既稳定又高性能的Web应用集群。这种方式不仅能够有效提升系统的并发处理能力,还...

    nginx+tomcat集群部署与负载均衡

    ### Nginx+Tomcat集群部署与负载均衡 #### 版本信息与集群及负载均衡概念 在深入了解如何实现Nginx与Tomcat集群的部署和负载均衡之前,我们需要先了解一些基本的概念以及版本信息。 - **集群**:通常指一组计算机...

    Linux下Nginx+Memcached+Tomcat负载均衡集群服务搭建所需jar包

    总结,构建Linux下Nginx+Memcached+Tomcat的负载均衡集群服务,需要深入了解每个组件的工作原理,正确配置和整合这些组件,以实现高效、稳定的Web服务。同时,不断优化和调整集群策略,以适应业务的增长和变化。

    Ubuntu16集成nginx+多个tomcat+memcached文档

    ### Ubuntu16集成nginx+多个tomcat+memcached文档知识点详解 #### 一、环境搭建概述 本文档主要介绍如何在Ubuntu 16.04系统上集成部署Nginx、多个Tomcat以及Memcached。这是一套常用的Web服务器集群方案,其中...

    Arch-03-15- Nginx+tomcat 配置负载均衡动静分离

    标题“Arch-03-15- Nginx+tomcat 配置负载均衡动静分离”涉及的是在Web服务器架构中使用Nginx与Tomcat的集成,通过配置实现负载均衡和动静态资源分离。这样的架构可以提高系统的可用性和响应速度,减轻后端应用...

    nginx+tomcat+memcached实现session共享

    此外,还可以根据需求调整负载均衡策略和Memcached的超时设置,以平衡性能和用户体验。 这个方案的优点在于,它提高了系统的可扩展性和容错性,同时也减少了对单个服务器的压力。然而,需要注意的是,由于session...

    nginx+tomcat的负载均衡session共享和ant构建全流程

    本话题将深入探讨如何通过集成Nginx和Tomcat实现负载均衡,并探讨Session共享的策略,以及使用ANT工具进行自动化构建的流程。让我们逐一解析这些关键知识点。 首先,Nginx是一个高性能的反向代理服务器和HTTP缓存,...

    Nginx.tomcat.memcached负载均衡和session共享.rar

    综上所述,"Nginx.tomcat.memcached负载均衡和session共享.rar"这个压缩包内容可能包含详细的配置示例、教程或者案例分析,旨在帮助开发者实现高效的Web应用架构,确保在多服务器环境下的用户体验和系统性能。...

    tomcat中Nginx+memcached实现session共享

    通过配置Nginx的负载均衡策略,例如轮询、最少连接或IP哈希,可以确保同一用户的请求被定向到同一台服务器,从而保持Session的一致性。但这仅限于服务器故障恢复或负载均衡,如果需要在不同服务器间主动共享Session...

    手把手教你负载均衡-tomcat1.7+nginx+memcached

    配置Nginx时,你需要在`nginx.conf`文件中定义一个或多个upstream块,列出后端服务器(即Tomcat实例),并指定负载均衡策略。例如,你可以使用`round-robin`策略实现简单的轮询分配请求,或者利用`ip_hash`让相同IP...

    tomcat7+整合memcached jar包集合

    通过以上步骤,你可以实现一个使用Tomcat 7、Nginx和Memcached的高性能、可扩展的Web服务架构,其中Memcached提供了Session共享,而Nginx则负责负载均衡,确保系统的高可用性和良好的用户体验。

    Tomcat+memcached+Nginx实现session共享

    总结来说,Tomcat+memcached+Nginx实现session共享是通过MSM中间件,配合Nginx的负载均衡,将session数据存储在memcached中,实现跨服务器的用户状态一致性。配置过程涉及到Tomcat、memcached和Nginx的安装、配置...

    apache-tomcat-7.0.54+memcached+nginx

    总结起来,这个项目涉及到的技术栈包括Tomcat 7集群、memcached集成和Nginx负载均衡。为了实现高效、稳定的Web服务,需要正确配置每个组件,确保会话数据的正确复制、memcached的高效访问以及Nginx的智能负载分配。...

    MemcachedWebDemo:Nginx + Tomcat + Memcached

    【描述】"Nginx+Tomcat+Memcached"组合是一种常见的Web服务器架构,其中Nginx作为反向代理和负载均衡器,Tomcat作为Java应用服务器处理业务逻辑,而Memcached则作为一个分布式内存对象缓存系统,用于减轻数据库的...

Global site tag (gtag.js) - Google Analytics