日期:2014-05-16  浏览次数:20950 次

利用Apache实现图片服务器的分离
缘由:
起步阶段的应用,都可能部署在一台服务器上(费用上的原因)
第一个优先分离的,肯定是数据库和应用服务器。
第二个分离的,会是什么呢?各有各的考虑,我所在的项目组重点考虑的节约带宽,服务器性能再好,带宽再高,并发来了,也容易撑不住。因此,我这篇文章的重点在这里。这里重点是介绍实践,不一定符合所有情况,供看者参考吧,
环境介绍:
WEB应用服务器:4CPU双核2G, 内存4G
  部署:Win2003/Apache Http Server 2.1/Tomcat6
数据库服务器:4CPU双核2G, 内存4G
  部署:Win2003/MSSQL2000
步骤:
步骤一:增加2台配置为:2CPU双核2G,内存2G普通服务器,做资源服务器
  部署:Tomcat6,跑了一个图片上传的简单应用,(记得指定web.xml的<distributable/>),并指定域名为res1.***.com,res2.***.com,采用ajp协议
步骤二:修改Apache httpd.conf配置
  原来应用的文件上传功能网址为:
   1、/fileupload.html
   2、/otherupload.html
  在httpd.conf中增加如下配置
 
<VirtualHost *:80>
  ServerAdmin webmaster@***.com
  ProxyPass /fileupload.html balancer://rescluster/fileupload lbmethod=byrequests stickysession=JSESSIONID nofailover=Off timeout=5 maxattempts=3   
  ProxyPass /otherupload.html balancer://rescluster/otherupload.html lbmethod=byrequests stickysession=JSESSIONID nofailover=Off timeout=5 maxattempts=3   
  #<!--负载均衡-->
  <Proxy balancer://rescluster/>
    BalancerMember ajp://res1.***.com:8009 smax=5 max=500 ttl=120 retry=300 loadfactor=100 route=tomcat1
    BalancerMember ajp://res2.***.com:8009 smax=5 max=500 ttl=120 retry=300 loadfactor=100 route=tomcat2
  </Proxy>

</VirtualHost>

  

步骤三,修改业务逻辑:
  所有上传文件在数据库中均采用全url的方式保存,例如产品图片路径存成:http://res1.***.com/upload/20090101/product120302005.jpg

现在,你可以高枕无忧了,带宽不够时,增加个几十台图片服务器,只需要稍微修改一下apache的配置文件,即可。
1 楼 uclnn 2009-02-18  
是不错的选择
2 楼 titanfoot 2009-02-18  
小孩过家家!呵呵
3 楼 ws715 2009-03-03  
请问楼主可否整理一份详细的文档出来。我也很想了解这方面的知识

并指定域名为res1.***.com,res2.***.com 这些步骤不是很了解

楼主能否详细讲解下。非常的感谢
4 楼 buaalijie 2010-01-15  
这种情况服务器迁移,域名换了之类的事情发生时候,数据库里面需要更新的数据量不小吧?