Nginx+tomcat实现集群跟负载均衡
来源:互联网 发布:琉璃神社备用域名 编辑:程序博客网 时间:2024/06/07 11:16
nginx负载均衡多台tomcat,session共享,session丢失
使用Nginx实现Tomcat集群负载均衡
- 概述
- 要解决的问题
- 环境准备以及问题解决思路
- 配置
- 测试
- 小结
一、概述
使用Nginx主要是来解决高并发情况下的负载均衡问题。
二、要解决的问题
1、最主要是负载均衡请求分发。
2、文件上传功能,只能上传到一个Tomcat上,下载文件或者图片的时候就有可能发生404错误。
3、多个Tomcat之间Session共享问题,否则会出现不断要求登录的情况。
三、环境准备以及问题解决思路
1、第一个问题肯定就是使用Nginx来做负载均衡。安装Nginx,请参考:Linux Centos 6.5_x86安装Nginx。
2、第二个问题思路有两个:
a)在Linux上搭建NFS服务器来实现文件共享,参考:Tomcat 集群 文件上传下载的共享问题 NFS配置。
b)利用Nginx的负载均衡,请求转发功能,将关于图片的上传和下载请求全部转到一台Tomcat上。具体配置参考下边配置一节。本文使用的是这种方式。
3、上述提到的第三个问题即Session共享问题选择是Tomcat-Redis-Session_manager来解决的,具体请参考:使用Tomcat-redis-session-manager来实现Tomcat集群部署中的Session共享。
3、一台Linux安装多个Tomcat请参考:linux系统下安装两个或多个tomcat。
start nginx//启动nginx -t//测试nginx配置是否正确nginx -s stop//结束nginx进程nginx -s reload//重启nginx进程
一. 配置负载均衡
自己尝试的例子:
访问:
发现请求被根据权重weight分发到两个Tomcat中。其中一个Down掉后也会切换到另一个上。
注释掉可使用#号也可使用down:
upstream localhost2 { # server localhost:8080 weight=1; server localhost:28080 weight=2;}upstream localhost2 { server localhost:8080 down; server localhost:28080 weight=2;}
QC:
window下权重 weight设置为一样时,切换无法成功,原因未知
配置多个:
server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } }server {listen 80;server_name t.test.com;charset utf-8;access_log logs/hostzs.access.log;location / {proxy_pass http://127.0.0.1:9000;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}}server {listen 80;server_name www.test.com;charset utf-8;access_log logs/hostzs.access.log;location / {proxy_pass http://127.0.0.1:8080;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}}
二. 实现Session共享
多个tomcat要一起协同工作有几种办法,可以考虑的方案有以下几个:
1. 使用tomcat自带的cluster方式,多个tomcat间自动实时复制session信息,配置起来很简单。但这个方案的效率比较低,在大并发下表现并不好。
2. 利用nginx的基于访问ip的hash路由策略,保证访问的ip始终被路由到同一个tomcat上,这个配置更简单。但如果应用是某一个局域网大量用户同时登录,这样负载均衡就没什么作用了。
3. 利用memcached把多个tomcat的session集中管理,前端在利用nginx负载均衡和动静态资源分离,在兼顾系统水平扩展的同时又能保证较高的性能。
小结
1、此时Nginx只有一台,如果这台Nginx访问不了了,整个集群就无法提供服务,所以为了实现Nginx的高可用,需要实现Nginx的failover,实现方式参考:Nginx+Keepalived实现站点高可用。
2、Redis的问题同上,参考:keepalived+redis 高可用redis主从解决方案。
【更详细的参考文档】
1、Nginx+Tomcat7+Mencached负载均衡集群部署笔记 - 海涛的CSDN博客 - 博客频道 - CSDN.NET http://blog.csdn.net/zht666/article/details/38515147
2、使用Nginx实现Tomcat集群负载均衡 - 502studio - 博客园 http://www.cnblogs.com/machanghai/p/5957086.html
- Nginx+tomcat实现集群跟负载均衡
- nginx + tomcat 集群实现负载均衡
- nginx + tomcat 集群实现负载均衡
- nginx + tomcat 集群实现负载均衡
- nginx + tomcat 集群实现负载均衡
- 使用Nginx+集群Tomcat实现负载均衡
- Nginx+tomcat实现集群和负载均衡
- Nginx +tomcat 实现负载均衡集群
- nginx+tomcat集群负载均衡
- nginx+tomcat集群负载均衡
- Nginx+Tomcat负载均衡集群
- nginx+tomcat实现集群负载均衡(实现session复制)
- 集群与负载均衡系列——nginx实现tomcat集群与负载均衡(1)
- nginx+tomcat集群负载均衡(实现session复制)
- nginx+tomcat集群负载均衡(实现session复制)
- nginx+tomcat集群负载均衡(实现session复制)
- nginx+tomcat集群负载均衡(实现session复制)
- nginx+tomcat集群负载均衡(实现session复制)
- 解决python报错 unicode error 'utf-8'
- ASP.NET 登录验证
- Java:BigDecimal的int、string转换
- 图像质量评估算法 SSIM(结构相似性)
- ViewPager之setOffscreenPageLimit()解析和实现懒加载
- Nginx+tomcat实现集群跟负载均衡
- 模块化简单例子
- poj题目分类,很好很有层次感
- 美团 关于Category的讲解
- Android中bootchart的使用
- js读取远程图片成为base64
- 关于自定义DeletableEditText
- Android java 中如何优雅的结束线程
- Windows下Git GUI创建新的仓库出现"no working directory"