Httpd实现后端tomcat的负载均衡调度
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | 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故障可以转移 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | 实验: 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 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类