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

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: 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  

<VirtualHost *:80>
    ServerName 192.168.18.113
    ProxyPass /images !
    ProxyPass /css !
    ProxyPass /js !
    ProxyPass / balancer://cluster/ stickysession=JSESSIONID nofailover=Off
    ProxyPa***everse / 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,如果其中一台故障,那么原来分配这台连接不会自动转移到另外一台上,必须重启浏览器才可以

ProxyPa***everse:#显示由反向代理服务器发送的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,方面看测试效果

<%@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>上面,两台都要配置

 <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上。


相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
3天前
|
网络协议 Java 应用服务中间件
centos7环境下tomcat8的安装与配置
本文介绍了在Linux环境下安装和配置Tomcat 8的详细步骤。首先,通过无网络条件下的文件交互软件(如Xftp 6或MobaXterm)下载并解压Tomcat安装包至指定路径,启动Tomcat服务并测试访问。接着,修改Tomcat端口号以避免冲突,并部署Java Web应用项目至Tomcat服务器。最后,调整Linux防火墙规则,确保外部可以正常访问部署的应用。关键步骤包括关闭或配置防火墙、添加必要的端口规则,确保Tomcat服务稳定运行。
|
3月前
|
Java Shell 应用服务中间件
Mac系统下配置环境变量:Javajdk、maven、tomcat 环境变量配置及对应配置文件
这篇文章介绍了如何在Mac系统下配置Java JDK、Maven和Tomcat的环境变量,包括配置文件的选择、解决环境变量在zsh shell中无效的问题、查看和设置系统环境变量的方法,以及JDK和Maven的下载、配置和测试步骤。
1732 1
Mac系统下配置环境变量:Javajdk、maven、tomcat 环境变量配置及对应配置文件
|
3月前
|
存储 分布式计算 druid
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(一)
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(一)
60 1
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(一)
|
3月前
|
缓存 前端开发 应用服务中间件
CORS跨域+Nginx配置、Apache配置
CORS跨域+Nginx配置、Apache配置
309 7
|
3月前
|
消息中间件 分布式计算 druid
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(二)
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(二)
55 2
|
3月前
|
存储 消息中间件 druid
大数据-151 Apache Druid 集群模式 配置启动【上篇】 超详细!
大数据-151 Apache Druid 集群模式 配置启动【上篇】 超详细!
112 1
|
3月前
|
负载均衡 应用服务中间件 Apache
Tomcat负载均衡原理详解及配置Apache2.2.22+Tomcat7
Tomcat负载均衡原理详解及配置Apache2.2.22+Tomcat7
73 3
|
8月前
|
负载均衡 前端开发 应用服务中间件
Nginx+Tomcat负载均衡配置_nginx做tomcat的负载均衡成功,但tomcat的css文件400
Nginx+Tomcat负载均衡配置_nginx做tomcat的负载均衡成功,但tomcat的css文件400
|
8月前
|
负载均衡 前端开发 应用服务中间件
Nginx+Tomcat负载均衡配置_nginx做tomcat的负载均衡成功,但tomcat的css文件400(2)
Nginx+Tomcat负载均衡配置_nginx做tomcat的负载均衡成功,但tomcat的css文件400(2)
|
缓存 负载均衡 应用服务中间件
Nginx+Tomcat 反向代理负载均衡 配置 学习(1)
Nginx+Tomcat 反向代理负载均衡 配置学习 #user nobody; worker_processes 1;
152 0

相关实验场景

更多

推荐镜像

更多