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