声明
该文章由大牛 马哥 的相关linux视频资料整理而来。若认为内容侵权请及时通知本人。
相关文章
[TOC]
说明
最终结果
- 反向代理和后端tomcat之间的通信协议有两种
- http
- ajp(Apache Jserv Protocol)
- 反向代理和后端tomcat之间的模块也有两种
- mod_proxy
- mod_jk
所以配置方式也就<kbd>四</kbd>种了。
这里只说明使用mod_proxy的方式。
tomcat配置文件
c2:192.168.1.103-server.xml
<Engine name="Catalina" defaultHost="c2" jvmRoute="tomcatA">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<!-- ........ -->
<Host name="c2" appBase="/web" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="webapps/test-1" reLoadable="true"/>
</Host>
</Engine>
c3:192.168.1.163-server.xml
<Engine name="Catalina" defaultHost="c3" jvmRoute="tomcatB">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<!-- ... -->
<Host name="c3" appBase="/web" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="webapps/test-1" reLoadable="true"/>
</Host>
</Engine>
mod_proxy方式
环境准备
请确保httpd加载了相关的代理模块
[root@c2 httpd]# service httpd -D DUMP_MODULES | grep proxy
proxy_module (shared)
proxy_connect_module (shared)
proxy_ftp_module (shared)
proxy_http_module (shared)
proxy_fcgi_module (shared)
proxy_scgi_module (shared)
proxy_ajp_module (shared)
proxy_balancer_module (shared)
proxy_express_module (shared)
httpd配置文件
ProxyRequests Off
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<proxy balancer://lb_cluster_1>
BalancerMember ajp://c2:8009 loadfactor=1 route=tomcatA
BalancerMember ajp://c3:8009 loadfactor=1 route=tomcatB
#BalancerMember http://c2:8080 loadfactor=1 route=tomcatA
#BalancerMember http://c3:8080 loadfactor=1 route=tomcatB
#ProxySet lbmethod=bybusyness|bytraffic|byrequests
ProxySet stickysession=ROUTEID
</proxy>
<VirtualHost *:80>
#ServerName my-proxy-host
ProxyVia Off
ProxyPass / balancer://lb_cluster_1/ nofailover=Off
ProxyPassReverse / balancer://lb_cluster_1/
<Proxy *>
Require all granted
</Proxy>
<Location />
Require all granted
</Location>
</VirtualHost>
参数说明
- lbmethod:apache实现负载均衡的调度方法,
- 默认是byrequests,即基于权重将统计请求个数进行调度
- bytraffic则执行基于权重的流量计数调度
- bybusyness通过考量每个后端服务器的当前负载进行调度
- maxattempts:放弃请求之前实现故障转移的次数,默认为1,其最大值不应该大于总的节点数
- nofailover:取值为On或Off,设置为On时表示后端服务器故障时,用户的session将损坏;因此,在后端服务器不支持session复制时可将其设置为On
- stickysession:调度器的sticky session的名字,根据web程序语言的不同,其值为JSESSIONID或PHPSESSIONID
- 其他参数请参考 httpd系列-02-反向代理tomcat-standalone