Httpd实现后端tomcat的负载均衡调度

24.proxy_balancer_module,用它来实现负载均衡。类似nginx upstream模块
	
http负载均衡依赖模块	httpd  -M
	mod_proxy
	mod_proxy_http
	mod_proxy_balancer
ajp负载均衡依赖模块	
	mod_proxy
	mod_proxy_ajp
	mod_proxy_balancer
	
负载均衡参数说明

配置代理到balancer
ProxyPass [path] !|url [key=value [key=value ...]]

Balancer成员
BalancerMember [balancerurl] url [key=value [key=value ...]]
	min	0	    连接池最小容量
	max	1 – n	连接池最大容量
	retry	60	apache请求发送到后端服务器错误后等待的时间秒数。0表示立即重试

设置Balancer或参数
ProxySet url key=value [key=value ...]
	stickysession		调度器的sticky session名字,根据web后台编程语言不同,可以设置为JSESSIONID或PHPSESSIONID
loadfactor		定义负载均衡后端服务器权重,取值范围1 – 100
lbmethod		负载均衡调度方法。
	byrequests 		基于权重的统计请求个数进行调度(默认)
	bytrafficz 		执行基于权重的流量计数调度
	bybusyness 		通过考量每个后端服务器当前负载进行调度
maxattempts	1		放弃请求前实现故障转移的次数,默认为1,其最大值不应该大于总的节点数
nofailover	Off		如果后端服务器没有Session副本,可以设置为On不允许故障转移。Off故障可以转移

  

实验: Httpd实现后端tomcat的负载均衡调度

负载均衡 + 会话保持方式 + session sticky会话黏性
1.规划
192.168.80.120 t0 调度器 Nginx、HTTPD
192.168.80.100 t1 tomcat1 JDK8、Tomcat8
192.168.80.110 t2 tomcat2 JDK8、Tomcat8


四台主机的域名解析
192.168.80.120 t0.magedu.com t0
192.168.80.100 t1.magedu.com t1
192.168.80.110 t2.magedu.com t2

启用模块
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so


2.Tomcatt1和t2节点  /data/webapps/ROOT/index.jsp测试用jsp
<%@ page import="java.util.*" %>
<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>lbjsptest</title>
</head>
<body>
<div>On <%=request.getServerName() %></div>
<div><%=request.getLocalAddr() + ":" + request.getLocalPort() %></div>
<div>SessionID = <span style="color:blue"><%=session.getId() %></span></div>
<%=new Date()%>
</body>
</html>

3.Tomcat两台主机设置 
t1虚拟主机配置
<Engine name="Catalina" defaultHost="t1.magedu.com" jvmRoute="Tomcat1">
 <Host name="t1.magedu.com" appBase="/data/webapps" autoDeploy="true" />
</Engine>
t2虚拟主机配置
<Engine name="Catalina" defaultHost="t2.magedu.com" jvmRoute="Tomcat2">
 <Host name="t2.magedu.com" appBase="/data/webapps" autoDeploy="true" />
</Engine>

4.http设置
cat  /etc/httpd/conf.d/www.conf
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED  #
<VirtualHost *:80>
	 ServerName t0.magedu.net
	 ProxyRequests Off
	 ProxyVia On
	 ProxyPreserveHost off
	 proxypass / balancer://tomcat-server/
	 ProxyPassReverse  / balancer://tomcat-server/
</VirtualHost>

<Proxy balancer://tomcat-server>
    BalancerMember http://t1.magedu.net:8080 loadfactor=1  route=Tomcat1    #名称要跟jvmRoute的值一样。
    BalancerMember http://t2.magedu.net:8080 loadfactor=2  route=Tomcat2
    ProxySet stickysession=ROUTEID        #启用会话黏性
</Proxy>



总结:同后端主机和同一浏览器 SessionID 不变
	  同后端主机和不同浏览器 SessionID 变
	  不同后端主机SessionID 都变。


AJP协议设置部分
在上面基础上修改httpd的配置文件
#cat  /etc/httpd/conf.d/www.conf
<VirtualHost *:80>
    ServerName        t0.magedu.org
    ProxyRequests     Off
    ProxyVia          On
    ProxyPreserveHost On
    ProxyPass        / balancer://tomcat-server/
    ProxyPassReverse / balancer://tomcat-server/
</VirtualHost>

<Proxy balancer://tomcat-server>
    BalancerMember ajp://t1.magedu.net:8009 loadfactor=1 route=Tomcat1
    BalancerMember ajp://t2.magedu.net:8009 loadfactor=2 route=Tomcat2
    ProxySet stickysession=ROUTEID
</Proxy>

tomcat配置文件AJP协议启用
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />  
启用模块
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

  

posted @ 2022-08-06 19:32  yuanbangchen  阅读(94)  评论(0编辑  收藏  举报