最近由于项目需要,所以学习了 nginx+tomcat7+memcached集成负载均衡。下面直接说这次学习到的知识,有什么不对的地方欢迎指出( nginx+tomcat7+memcached集成 负载均衡 搭建步骤):
环境及框架介绍:
- 服务器环境:windows server 2012
- jdk 1.7
- tomcat 7
- nginx 1.10.1
- 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
- 下载地址:http://nginx.org/ ,建议下载稳定版本,我用的是1.10
- 因为我服务器是win版,下载后安装很简单:cmd转到nginx文件夹bin下,一句命令即可:nginx -s install
- 什么都不需要该,直接再来一句命令:nginx -s start 或nginx,就已经启动了,默认地址:http://localhost,看到 欢迎页面,说明安装成功!
- 安装成功后,就需要与tomcat集成,主要修改conf/nginx.conf配置文件:(下面是我的配置)
-
#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 - 重启nginx后,接着启动2个tomcat,最后访问地址:http://localhost:8085/test/rt.jsp("test/rt.jsp"是tomcat中项目路径),看到对应页面就表示成功拉。
- 当你关掉一个tomcat,路径还能正常访问表示nginx 配置成功;
- 但是这时候还存2个tomcat的session值不能共享问题,通过比较找到了memcached,Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。
- memcached(附件memcached-win64-1.4.4-14.zip)
- 安装:memcached.exe –d install
- 启动:memcached.exe –d start
- 需要的jar(附件memjar),放到tomcat 目录的lib下
- 修改tomcat 的context.xml配置:
-
<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" />
- 最后重启tomcat、nginx,再次测试,查看session值是否一致(如何获取session值这里就不说了)
- 最后的最后这次初体验就结束了!
相关推荐
总结起来,这个配置方案通过Nginx的会话保持功能配合Tomcat7与Memcached的集成,确保了用户会话在跨服务器环境下的连续性。同时,这种架构也具有良好的可扩展性和容错性,因为即使某台服务器宕机,其他服务器仍能...
【标题】"nginx+tomcat+memcached例子"揭示了一个集成Web服务器技术的场景,其中Nginx作为前端代理服务器,Tomcat作为后端Java应用服务器,而Memcached则作为一个分布式内存缓存系统来提高整体性能。这个组合常用于...
通过这种方式,我们可以利用`nginx`的反向代理和负载均衡功能,结合`tomcat`的Java应用处理能力和`memcached`的分布式缓存特性,构建出一个既能处理大量并发请求,又能保持用户会话状态的高效Web系统。 在实际项目...
通过这些jar包的集成,我们可以构建出一个高效的、基于Memcached的session管理解决方案,使得在nginx负载均衡下运行的Tomcat 7应用能充分利用Memcached进行session数据的存储和共享,从而提高系统的整体性能和可靠性...
这里提到的“nginx+tomcat7+memcached”就是这种模式的一个典型组合,分别代表了负载均衡器、Java应用服务器和分布式内存缓存服务。下面将详细介绍这三个组件以及它们之间的协同工作。 **Nginx** 是一款高性能的...
综上所述,通过使用Nginx作为前端负载均衡器,结合Tomcat作为Java Web应用服务器,再配合Memcached作为集中式缓存,可以构建出一个既稳定又高性能的Web应用集群。这种方式不仅能够有效提升系统的并发处理能力,还...
### Nginx+Tomcat集群部署与负载均衡 #### 版本信息与集群及负载均衡概念 在深入了解如何实现Nginx与Tomcat集群的部署和负载均衡之前,我们需要先了解一些基本的概念以及版本信息。 - **集群**:通常指一组计算机...
总结,构建Linux下Nginx+Memcached+Tomcat的负载均衡集群服务,需要深入了解每个组件的工作原理,正确配置和整合这些组件,以实现高效、稳定的Web服务。同时,不断优化和调整集群策略,以适应业务的增长和变化。
### Ubuntu16集成nginx+多个tomcat+memcached文档知识点详解 #### 一、环境搭建概述 本文档主要介绍如何在Ubuntu 16.04系统上集成部署Nginx、多个Tomcat以及Memcached。这是一套常用的Web服务器集群方案,其中...
标题“Arch-03-15- Nginx+tomcat 配置负载均衡动静分离”涉及的是在Web服务器架构中使用Nginx与Tomcat的集成,通过配置实现负载均衡和动静态资源分离。这样的架构可以提高系统的可用性和响应速度,减轻后端应用...
此外,还可以根据需求调整负载均衡策略和Memcached的超时设置,以平衡性能和用户体验。 这个方案的优点在于,它提高了系统的可扩展性和容错性,同时也减少了对单个服务器的压力。然而,需要注意的是,由于session...
本话题将深入探讨如何通过集成Nginx和Tomcat实现负载均衡,并探讨Session共享的策略,以及使用ANT工具进行自动化构建的流程。让我们逐一解析这些关键知识点。 首先,Nginx是一个高性能的反向代理服务器和HTTP缓存,...
综上所述,"Nginx.tomcat.memcached负载均衡和session共享.rar"这个压缩包内容可能包含详细的配置示例、教程或者案例分析,旨在帮助开发者实现高效的Web应用架构,确保在多服务器环境下的用户体验和系统性能。...
通过配置Nginx的负载均衡策略,例如轮询、最少连接或IP哈希,可以确保同一用户的请求被定向到同一台服务器,从而保持Session的一致性。但这仅限于服务器故障恢复或负载均衡,如果需要在不同服务器间主动共享Session...
配置Nginx时,你需要在`nginx.conf`文件中定义一个或多个upstream块,列出后端服务器(即Tomcat实例),并指定负载均衡策略。例如,你可以使用`round-robin`策略实现简单的轮询分配请求,或者利用`ip_hash`让相同IP...
通过以上步骤,你可以实现一个使用Tomcat 7、Nginx和Memcached的高性能、可扩展的Web服务架构,其中Memcached提供了Session共享,而Nginx则负责负载均衡,确保系统的高可用性和良好的用户体验。
总结来说,Tomcat+memcached+Nginx实现session共享是通过MSM中间件,配合Nginx的负载均衡,将session数据存储在memcached中,实现跨服务器的用户状态一致性。配置过程涉及到Tomcat、memcached和Nginx的安装、配置...
总结起来,这个项目涉及到的技术栈包括Tomcat 7集群、memcached集成和Nginx负载均衡。为了实现高效、稳定的Web服务,需要正确配置每个组件,确保会话数据的正确复制、memcached的高效访问以及Nginx的智能负载分配。...
【描述】"Nginx+Tomcat+Memcached"组合是一种常见的Web服务器架构,其中Nginx作为反向代理和负载均衡器,Tomcat作为Java应用服务器处理业务逻辑,而Memcached则作为一个分布式内存对象缓存系统,用于减轻数据库的...