标签:实现 share request 一个 负载均衡。 and ajp 技术 ssi
当httpd端采用mod_proxy和tomcat连接时,可以采用ajp或http协议进行连接。
要使用mod_proxy与Tomcat连接,需要apache已经装载mod_proxy、mod_proxy_http、mod_proxy_ajp和proxy_balancer_module(实现Tomcat负载均衡时用到)等模块。使用rpm包安装的httpd一般默认已经启用它们,如果是编译httpd,则在编译选项中加上以下对应几项:
--enable-proxy --enable-proxy-http --enable-proxy-ajp --enable-proxy-balancer
如果是已经编译好的Httpd,则可以使用apxs工具,向httpd中添加这几个新模块。添加方法见:httpd添加新模块。
确保proxy相关的模块已经加载了。
[root@xuexi ~]# httpd -M | grep proxy
Syntax OK
proxy_module (shared)
proxy_balancer_module (shared)
proxy_ftp_module (shared)
proxy_http_module (shared)
proxy_ajp_module (shared)
proxy_connect_module (shared)
5.1 配置httpd代理到tomcat
基于ajp连接协议和tomcat连接时,向httpd添加以下配置文件。如果要基于http协议连接tomcat,将上面配置文件的ajp协议改为http协议,并修改端口即可。
[root@xuexi ~]# cat /etc/httpd/conf.d/ajp.conf
<Location /status>
SetHandler balancer-manager
Proxypass ! # 表示此Location的URL不进行反向代理
Require ip 192.168.100
</Location>
ProxyVia Off
ProxyRequests Off
ProxyPreserveHost Off
ProxyPassMatch "^/(.*\.jsp)$" ajp://192.168.100.22:8009/$1
ProxyPassReverse "^/(.*\.jsp)$" ajp://192.168.100.22:8009/$1
<Proxy *>
Require all granted
</Proxy>
重启httpd。注意,重启前将前面mod_jk实验的配置文件删除掉。
关于如上apache配置的几个指令,解释如下。httpd反向代理的详细内容,可参见:详细分析apache httpd反向代理的用法。
5.2 通过mod_proxy负载均衡tomcat
关于httpd反向代理的负载均衡配置方式,参见详细分析apache httpd反向代理的用法。
在httpd.conf中配置如下内容:
<proxy balancer://TomcatLB>
BalancerMember ajp://192.168.100.38:8009 loadfactor=5
BalancerMember ajp://192.168.100.36:8009 loadfactor=10
</proxy>
ProxyVia Off
ProxyRequests Off
ProxyPreserveHost Off
ProxyPassMatch "^/(.*\.jsp)$" balancer://TomcatLB/$1
ProxyPassReverse "^/(.*\.jsp)$" balancer://TomcatLB/$1
<Proxy *>
Require all granted
</Proxy>
<Location /status>
SetHandler balancer-manager
Proxypass !
Require ip 192.168.100
</Location>
重启httpd并在浏览器中输入192.168.100.17/test/index.jsp测试,测试时会轮调两次tomcatB再轮调一次tomcatA。
如果要实现session粘滞(绑定),则修改httpd配置文件如下:
<proxy balancer://TomcatLB>
BalancerMember ajp://192.168.100.22:8009 loadfactor=5 route=TomcatA
BalancerMember ajp://192.168.100.23:8009 loadfactor=10 route=TomcatB
ProxySet lbmethod=byrequets
</proxy>
ProxyVia Off
ProxyRequests Off
ProxyPreserveHost Off
ProxyPassMatch "^/(.*\.jsp)$" balancer://TomcatLB/$1 stickysession=JSESSIONID
ProxyPassReverse "^/(.*\.jsp)$" balancer://TomcatLB/$1 stickysession=JSESSIONID
<Proxy *>
Require all granted
</Proxy>
<Location /status>
SetHandler balancer-manager
Proxypass !
Require ip 192.168.100
</Location>
然后分别配置tomcatA和tomcatB的engine组件,分别加上jvmRoute="TomcatA"和jvmRoute="TomcatB"属性。
<Engine name="Catalina" defaultHost="localhost" jvmRoute="TomcatA">
<Engine name="Catalina" defaultHost="localhost" jvmRoute="TomcatB">
重启httpd和tomcatA、tomcatB,然后测试结果,再测试时同一客户端将总是得到同一个结果,不会出现负载均衡。
转载请注明出处:http://www.cnblogs.com/f-ck-need-u/p/8414043.html
6,Tomcat 的负载均衡---Tomcat + httpd(mod_proxy)
标签:实现 share request 一个 负载均衡。 and ajp 技术 ssi
原文地址:https://www.cnblogs.com/k8s-pod/p/13648367.html