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

  

posted @   yuanbangchen  阅读(103)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
点击右上角即可分享
微信分享提示