1 / 13
文档名称:

nginx tomcat负载均衡之文件上传访问策略.doc

格式:doc   大小:16KB   页数:13页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

nginx tomcat负载均衡之文件上传访问策略.doc

上传人:学习的一点 2021/8/2 文件大小:16 KB

下载得到文件列表

nginx tomcat负载均衡之文件上传访问策略.doc

文档介绍

文档介绍:nginx tomcat负载均衡之文件上传访问策略
多服务器负载均衡的策略有多种,其中为目前大多数大型网站所采用的就是nginx做前端代理,后端链接多台jsp,php,cgi等网站服务器;
近来一个项目可能会存在较大大访问量(预期日均用户量50万,最大并发数5万),项目开发采用的语言是java,有一个网站管理后台(系统管理员用的,访问量不大),另外有50多个接口向外提供ios,android客户端访问,预设服务器运行环境是tomcat,为了适应大规模并发,需要在tomcat前端增加***,来做负载均衡,于是就开始采用nginx作为前端***。

测试时,部署了3台tomcat服务器,1台nginx服务器,其中一台tomcat服务器与nginx在同一机器上;(nginx+tomcat)、redhat enterprise (tomcat+mysql)、window xp(tomcat);

一开始按照官方推荐配置,配置了upstream模块,采用webbench测试并发一个动态的jsp(参数校验,数据库访问),3万个并发被平均的分配至三个tomcat服务器中处理,失败率是0;但当采用真实环境测试时问题来了:登录时总是提示验证码输入不正确,看下三台服务器控制台输出,然来生成验证码和验证验证码的tomcat经常不一致,而又没有配置session共享策略,所以必然会造成无法登录,这个问题通过设置nginx转发登录模块至同一台服务器解决;另外一个非常棘手的问题,那就是客户端文件上传问题(客户端接口中有两个文件上传接口),文件上传一开始也是动态的均衡到每台服务器,但是会发现可能上传的时候使用的是a服务器,下载的时候使用的是b服务器,这就经常的导致客户端无法正常的下载文件。

关于文件上传问题我想详细描述下:

文件的上传只能由tomcat服务器做处理,包括创建缩略图,写入路径至数据库,所以无法采用nginx自带的文件上传模块;
文件需要能被接口直接访问,路径需要写入数据库

考虑到的几种解决方案;

,文件上传动态的分配至tomcat服务器处理,数据库中文件路径填写nginx服务器上的文件文件路径,然后每台服务器定时和nginx服务器做文件同步,最终文件下载时使用nginx直接处理;

,文件上传动态的分配至tomcat服务器处理,数据库中文件路径填写tomcat服务器文件路径,并加上特殊前缀(唯一对应此台tomcat服务器);文件下载时,nginx配置一个前缀转发规则,不同的前缀转发至具体tomcat服务器;

,文件上传动态的分配至tomcat服务器处理,数据库中文件路径填写tomcat服务器上的文件文件路径,然后每台tomcat服务器定时互相文件同步,最终文件下载时使用nginx动态分配至tomcat直接处理;

,下载使用nginx处理;



优劣暂时就不写了,理解下,后期再给出吧;最终采用的策略是4(最简单)


另外附上nginx配置文件:



Xml代码 user root; worker_processes 2; error_log logs/; #error_log logs/ notice; #error_log logs/ info; pid logs/; events { worker_connections 4048; } http { include ; 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/ main; sendfile on;