Apache(mod_proxy)+Tomcat负载均衡配置

简介:

   要想使用Apache做反向代理,实现Tomcat负载均衡,首先你要知道有几种连接方式,怎样连接的,还有集群方面比较关心的问题,如何保持Session持久化。原来部署过mod_jk方式的,相对http_proxy比较复杂点,这次就部署测试下http_proxy,因为本公司大多数系统都是Ubuntu,所以这次也用Ubuntu系统吧!与CentOS相比配置基本相同,只是apache安装和配置路径不同。那就简单介绍下,让没有搞过Apche+Tomcat集群的博友们心里有个底。

1、Tomcat+Apache实现负载均衡的三种连接方式

  1.1 apache通过mod_proxy(http_proxy)模块,使用HTTP协议与Tomcat连接,并通过route唯一标识关联后端Tomcat

  1.2 apache通过mod_jk模块,使用AJP协议与Tomcat连接,这种方式使用广泛

  1.3 apache通过mod_proxy(ajp_proxy,Apache2.2中才有)模块,只能用AJP协议代理

2、Tomcat SessionID持久化三种方法

  2.1 Session粘性:通过浏览器Cookie绑定SessionID,通过sticky模式将同一Session请求分配到同一Tomcat上

  2.2 Session复制:Tomcat通过广播形式将Session同步到其他Tomcat节点,并且Linux下要手动开启开放广播地址。不易后端节点过多

  2.3 Session保存数据库(memcache、redis):将SessionID保存在共享的数据库中

3、环境说明

wKioL1TJ-YPhqO_xAAEAlXt-Uqs071.jpg

OS:Ubuntu12.04_x64

Apache2.2:192.168.1.100

Tomcat7_node1:192.168.1.111:8080

Tomcat7_node2:192.168.1.112:8090

连接方式采用http_proxy,Session持久化采用Session粘性。

4、安装Apache

# apt-get install apache2

5、开启Apache代理相关模块

# sudo a2enmod proxy

# sudo a2enmod proxy_http

# sudo a2enmod proxy_banancer

# sudo a2enmod proxy_connect

# sudo a2enmod proxy_ftp

6、配置代理(末尾添加)

# vi /etc/apache2/apache2.conf 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<VirtualHost *:80>
     ServerName 192.168.18.113
     ProxyPass  /images  !
     ProxyPass  /css  !
     ProxyPass  /js  !
     ProxyPass / balancer: //cluster/  stickysession=JSESSIONID nofailover=Off
     ProxyPassReverse / balancer: //cluster/    
     ErrorLog  "/var/log/apache2/cluster-error.log"
     CustomLog  "/var/log/apache2/cluster-access.log"  common
     <proxy balancer: //cluster >
         BalancerMember http: //192 .168.18.109:8084 loadfactor=1 route=node1
         BalancerMember http: //192 .168.18.109:80 loadfactor=1 route=node2
     < /proxy
< /VirtualHost >

参数说明:

ProxyPass /images !:图片不交给后端Tomcat处理,也是为了提升对静态文件的处理性能

stickysession:通过Session粘性来Session持久化

nofailove:是否打开失败转移,设置没有session复制情况下,默认Off,如果其中一台故障,那么原来分配这台连接不会自动转移到另外一台上,必须重启浏览器才可以

ProxyPassReverse:#显示由反向代理服务器发送的HTTP回应头的URL,一般与ProxyPass配置相同

loadfactor:请求权重值

route:设置全局唯一标识符,要与Tomcat server.xml配置文件一致

7、配置tomcat_node1和tomcat_node2,node1使用默认8080,node2使用8090端口

# tar zxvf apache-tomcat-7.0.55.tar.gz

# mv apache-tomcat-7.0.55 tomcat_node1

# cd tomcat_node1/webapps/ROOT

# rm ./*

# vi index.jsp   #写一个索引页,输出SessionID,方面看测试效果

1
2
3
4
5
6
7
8
<%@page contentType= "text/html;charset=GB2312" %>
<html>
   < head >  < /head >
   <body>
   <%String s = session.getId();%>
     <p>SessionID: <%=s %>< /p >
   < /body >
< /html >

8、配置Tomcat全局唯一标识符

将原<Engine name="Catalina" defaultHost="localhost">修改为<Engine name="Catalina" defaultHost="localhost" jvmRoute="node1">

将原<Engine name="Catalina" defaultHost="localhost">修改为<Engine name="Catalina" defaultHost="localhost" jvmRoute="node2">

9、Tomcat项目WEB-INF添加distributable元素,告诉servlet/jsp容器,编写的应用将分布式处理

# /root/tomcat_node1/webapps/ROOT/WEB-INF/web.xml #添加到末尾</web-app>上面,两台都要配置

1
2
3
4
5
  <description>
      Welcome to Tomcat
   < /description >
<distributable/>
< /web-app >

10、启动Apache和Tomcat_node1和node2

# /etc/init.d/apache2 start

# cd tomcat_node1/2

# ./bin/startup.sh

11、测试思路

   浏览器访问http://192.168.1.100,按F5刷新就会一直停留在tomcat_node1(SessionID: 7D59B43D2EAA75D15A37886395065AE4.node1),如果不是停留在node1的话,而是轮训访问node1和node2,则说明Session持久化不成功。打开另一个浏览器,这时一般会访问node2(SessionID: 5AFB71ABB3E7FA50067FB4A73CA35F1A.node2),按F5刷新几次也会一直停留在node2上。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
目录
相关文章
|
存储 安全 网络协议
绕过WAF和多个防护软件提权案例
绕过WAF和多个防护软件提权案例
514 0
|
SQL 监控 C#
sqlps.exe白名单的利用(过S60!)
sqlps.exe白名单的利用(过S60!)
761 0
|
11月前
|
安全 网络协议 搜索推荐
远控安全金标准,ToDesk、向日葵、网易UU安全功能盘点,是否能攻破防线
本文对ToDesk、向日葵和网易UU三款主流远程控制软件进行了安全性评测。远程控制技术虽带来便利,但也存在安全隐患。文章从设备授权管理、远程连接与数据传输、隐私安全机制及主动防诈保护四个方面展开分析。ToDesk在二次验证、金融窗口保护等方面表现突出;向日葵基础安全功能完善但缺乏创新;网易UU侧重基础功能,安全机制尚待完善。最终通过星级表对比,ToDesk综合表现最佳,向日葵次之,网易UU适合低风险场景。未来远控软件需向体系化、智能化方向发展以应对不断演变的威胁。
|
Windows
dllhost.exe进程占用CPU很高怎么解决?
全面解析dllhost.exe进程
1993 16
|
机器学习/深度学习 资源调度 算法
特征工程:归一化与标准化
样本特征由于来源以及度量单位不同,它们的尺度(Scale),或者说是取值范围有可能差异很大。如果一个机器学习算法在缩放全部或者部分特征后不影响它的学习和预测,我们就称该算法具有尺度不变性(Scale Invariance)。神经网络从理论上应该具有尺度不变性,可以通过参数的调整来适应不同特征的尺度。
572 0
|
人工智能 并行计算 开发者
【AI系统】从 CUDA 对 AI 芯片思考
本文从技术角度探讨英伟达生态,特别是CUDA与SIMT的关系及其对AI芯片DSA架构的影响。通过分析流水编排、SIMT前端、分支预测及交互方式,指出英伟达CUDA的成功在于其硬件设计与软件易用性的结合,为未来AI芯片的设计提供了宝贵的经验和启示。
447 5
|
存储
[ACTF新生赛2020]SoulLike 题解
[ACTF新生赛2020]SoulLike 题解
431 0
|
缓存 安全 网络安全
Apache服务器配置与优化指南
【5月更文挑战第7天】Apache服务器配置与优化指南包括基础配置和性能优化。安装Apache后,编辑`httpd.conf`配置文件,设置`ServerRoot`、`Listen`、`ServerName`和`DocumentRoot`。启用虚拟主机以托管多个网站。性能优化涉及启用MPM模块(如worker或event),启用压缩功能,优化KeepAlive参数,配置缓存和限制并发连接数。安全配置包括禁用不必要的模块,设置目录权限,启用SSL/TLS及限制IP访问。通过这些措施,提升服务器性能和安全性。
|
机器学习/深度学习 PyTorch 算法框架/工具
Fine-tuning
【7月更文挑战第31天】
406 2