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通过反向代理实现负载均衡(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文件,增加如下内容
其中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