欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Apache反向代理 博客分类: WEB服务器架构研究

程序员文章站 2024-03-23 18:50:46
...

Apache使用mod_jk和mod_proxy反向代理tomcat

 

 

httpd通过mod_proxy或者mod_jk模块来对tomcat进行反向代理,而且其比Nginx的强大,Nginx的反向代理只能通过http协议进行代理,而apache既可以代理http协议,还可以代理ajp协议,而且mod_proxy 还可以实现session会话的绑定。mod_jk其开发就是对tomcat做反向代理的。

 

mod_jk与mod_proxy区别,请看文章:http://elf8848.iteye.com/blog/2166011

 

Apache反向代理
            
    
    博客分类: WEB服务器架构研究

 

 

 

 

 

 

apache通过反向代理实现负载均衡(mod_proxy http协议)

 

关键需要加载下面三个模块

LoadModule proxy_module modules/mod_proxy.so   

LoadModule proxy_balancer_module modules/mod_proxy_balancer.so   

LoadModule proxy_http_module modules/mod_proxy_http.so 

 

同理建立一个虚拟主机来作为负载均衡

vi /etc/apache2/sites_available/balancer

配置如下

Listen 202.x.xx.xxx:80        (别人访问的IP和端口)

<VirtualHost 202.x.xx.xxx:80>

     ServerAdmin admin@bit.com

     ProxyRequests Off    (说明开启的是反向代理)

     Proxypass / balancer://proxy/ (这里也可以直接写目标地址http://10.x.xx.xxx/,实现只做反向代理不实现负载均衡,下面的balancer://proxy就可以不要了)

     <Proxy balancer://proxy>

         Order Deny,Allow    (访问的控制)

         Allow from all

         BalancerMember http://10.0.0.1

         BalancerMember http://10.0.0.2

     </Proxy>

</VirtualHost>

 

Apache配置tomcat负载(mod_proxy)和session粘连(stickysession)

http://wwwcomy.iteye.com/blog/1909211

 

apache通过反向代理实现负载均衡(mod_proxy ajp协议)(粘性Session)

 

首先,修改War包程序的web.xml文件,增加<distributable/>标识。

其次,修改每个Tomcat服务器的server.xml,配置jvmRoute    

<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">

最后,修改apache的httpd.conf文件,增加如下内容

Apache反向代理
            
    
    博客分类: WEB服务器架构研究

其中ProxyPass /images ! 表示/images开头的请求不会转发给Tomcat,而是作为静态资源在Apache的images目录下寻找资源文件。

而反向代理将所有的/Test请求都转发给名叫mycluster的balancer。

而这个balancer有两个Tomcat成员。

stickySession=JSESSIONID表示开启粘性Session。他的意思是如果第一次请求分到了worker1的Tomcat,那么这个用户的后续请求,都会分配给worker1的这个Tomcat。

然后在Apache配置故障转移(nofailover=Off)

配置了集群之后,请求从前端过来,假如分配到了worker1,那么因为粘性Session,他会一直访问worker1.

如果worker1宕机,这个用户的后续请求会自动转移到worker2.

由于Tomcat可配置Session复制,所以Session信息没有丢失。要重新登录 。

Session复制的配置请查阅其它资料,要配置的东西不少

 

 

 

负载分配算法

当然你可能想通过不同的算法实现负载均衡,比方说按照请求次数,或者按照流量均衡,这里用到的指令是lbmethod

lbmethod可能的取值有: 

lbmethod=byrequests 按照请求次数均衡(默认) 

lbmethod=bytraffic 按照流量均衡 

lbmethod=bybusyness 按照繁忙程度均衡(总是分配给活跃请求数最少的服务器)

按照流量的均衡配置如下

Listen 202.x.xx.xxx:80        (别人访问的IP和端口)

<VirtualHost 202.x.xx.xxx:80>

     ServerAdmin admin@bit.com

     ProxyRequests Off

     Proxypass / balancer://proxy/  

     ProxySet lbmethod=bytraffic   (加上这句,若使用默认值,这句可不加)

     <Proxy balancer://proxy>

         Order Deny,Allow

         Allow from all

         BalancerMember http://10.0.0.1   loadfactor= 3

         BalancerMember http://10.0.0.2   loadfactor= 1

     </Proxy>

</VirtualHost>

这样你的负载均衡就可以按照流量均衡了 

 

 

 apache通过反向代理实现负载均衡(mod_jk ajp协议)

请参考:http://blog.csdn.net/hobbypei/article/details/8234933

 

 

 

 

  • Apache反向代理
            
    
    博客分类: WEB服务器架构研究
  • 大小: 32.8 KB