Apache反向代理

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反向代理_第1张图片

 

 

 

 

 

 

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 [email protected]

     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反向代理_第2张图片

其中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 [email protected]

     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)