常见apache+tomcat应用架构与负载均衡| 学习笔记

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
简介: 快速学习常见apache+tomcat应用架构与负载均衡。

开发者学堂课程【企业Web常用架构LAMP-LNMP实战常见apache+tomcat应用架构与负载均衡】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/385/detail/4830


常见apache+tomcat应用架构与负载均衡

 

目录:

一、常用的LAMT应用架构

二、tomcat 的安装配置以及jk模块的配置  

三、LAMT负载均衡架构的实现

四、具体使用流程

  

一、常用的LAMT应用架构

LAMT 的 T 就是 TomCat 的意思,此结构在传统行业中使用较多,基于 JAVA 环境或 j2e 架构

image.png

企业最常用的架构,Apache 与 Tomcat 结合架构,分为两台机器,A主机上安装Apache,B主机安装 Tomcat ,通过 jk 模块进行通信,部署在一台主机上也可以完成

Apache:

高性能的 http 服务器,或者 web 服务器,主要特殊为出色的处理静态数据,例如图片,视频等,通过 apachec 处理

Tomcat 设计初衷就是去解析 jsp 动态程序,虽然也可以解析处理静态数据,性能会差

apache +jk+tomcat 优点:
apache 处理静态请求性能出色

tomcat 处理动态请求更为专业
apache +tomcat 的目的是为了实现网页动、静分离。完整处理web资源,通过Apache 代理工作实现

jk 模块实现 Apache 与 Tomcat 交互,连接作用

为什么整合 tomcat 和 apache ?

Tomcat  处理静态比较好,apache 处理静态比较好,静态和动态结合处理 web 服务器资源

结合方式:apache 代理功能实现和jk模块

 

二、tomcat的安装配置以及jk模块的配置

JK 模块:  Apache  和 Tomcat 连接器
实现连接器模式很多, jk2 开发人员停止更新
两个模块可供选择: mod_ jk2 和 mod_ jk, mod. jk2 模块是比较早的一种连接器,在静页面过滤上可以使用正则表达式,因此使用配置灵活,但是 mod_jk2 模块现在已经没发人员支持了。因此推荐 mod.jk 模块,最新 mod_jk 版本为1.2.41.
1.JK模块安装

http://archive.apache.org/dist/tomcat/tomcat-connectors/

image.png

安装 jk 模块需提前安装 apache

源码安装:

#解压安装包
[root@webserverlocal]#tar zxvf

tomcat-connectors-1.2.40-src.tar.gz
#到源码目录下 native,buildconf.sh 是配置环境的文件
[root@webserverlocal]#cdtomcat-connectors-1.2.40src/native

#赋权给 buildconf.sh
[root@webservernative]#chmod755buildconf.sh

#输出可执行脚本文件
[root@webservernative]#./buildconf.sh

#这里指定的是 apache 安装目录中 apxs 的位置
[root@webservernative]#/configure --with-apxs=/usr/local/apache2/bin/apxs

#make编译
[root@websevernative]#make
[root@webservernative]#makeinstall

实现JK模块添加到 Apache 下

#查看

[root@hadoopnative]#cd_/usr/1oca1/apache2/modu7

#所需文件 mod_jk.so

[root@hadoop moduTes]#ll mod_jk.so

-rwxr-xr-x i root root 1140556~Mar3 16:43 mod_jk.so 

把mod_jk.so动态加载到Apache配置文件中

加载方式:

LoadMoule jk_module modules/mod_jk.so

加载完成后实现 jk 模块与 tomcat 通信

2. Tomecat安装

下载 Tomcat

1)打开上面的地址,进入官网

2)选择需要的版本进行加载

3)下载之后直接解压,事实上 tomcat 不需要安装,但需要配置

4)打开文件夹,可以先了解一下各个子文件夹的作用
bin:放一些可执行的脚本文件,比如我们要启动和关闭 tomcat 的可执行文件也在里面
conf:放一些配置文件
lib:tomcat 的依赖 jar 包
logs:存放日志
temp:存放临时文件
webapps:存放我们的网站的

5)然后启动我们的 tomcat,打开 bin 文件夹,找到 startup.bat 文件并打开

6)启动之后,访问我们的本机的8080端口

在浏览器的网址栏中输入 localhost:8080

注意:Tomcat 需要配置 java 环境变量,写入文件中,不受系统环境变量影响

在启动 tomcat 文件中,写入:

Export JAVA_HOME=jdk 安装路径

部署完毕启动 tomcat:

[root@hadoop bin]# ./startup.sh

查看启动状态,切换到 tomcat/logs 目录下

[root@hadoop logs]# vim catalina.out

image.png


三、LAMT负载均衡架构的实现

负载均衡常用架构模式的使用

配置实现图例架构:

image.png

最后端有很多个 tomcat ,后端调度多个 tomcat 的环境架构

具体实现:

心跳机制:

服务端定时主动的去与要监控状态的客户端(或者叫其他系统)通信,询问当前的某种状态,客户端返回状态信息,客户端没有返回或返回错误、失效信息、则认为客户端已经宕机

实现 Apache+JK 模块,后端调用多个 Tomcat 方式生产

apache 下增加:
#核心配置文件,单机和负载均衡配置
[root@hadoop ]#JkWorkersFile/usr/local/apache2/conf/workers.properties

workers.properties文件:

#server列表,工作列表,有多少个后端节点在运行

worker.list = controller,tomcat1,tomcat2

========tomcat============

#ajp13端口号,在tomcat 下server.xml配置,默认8009

#tomcat1的定义,端口属性

worker.tomcat1.port=8009

#tomcat的主机地址,如不为本机,请填写ip地址

worker.tomcat1.host=localhost  

//type类型有两种,ajp12和ajp13,实现通信

worker.tomcat1.type=ajp13

#server的加权比重,值越高,分得的请求越多

worker.tomcat1.lbfactor=1  

========tomcat2=============

worker.tomcat2.port=8109

#ajp13 端口号,在 tomcat 下 server.xml 配置,默认8009

#tomcat 的主机地址,如不为本机,请填写ip地址

worker.tomcat2.host=localhost

worker.tomcat2.type=ajp13 

#server 的加权比重,值越高,分得的请求越多,有负载均衡功能权重才生效

worker.tomcat2.lbfactor=1 

#========controller,负载均衡控制器========

#lb 定义负载均衡

worker.controller.type=lb 

#指定分担请求的 tomcat

worker.controller.sticky_session=1

#指定 balance 节点个数参与负载均衡,使用逗号分割

worker.controller.balanced_workers=tomcat1,tomcat2

#指定 session 的负载均衡

Worker.controller.sticky_session=1
JkMountFile /usr/local/apache2/conf/uriworkermap.propertis JkLogFile/usr/local/apache2/logs/mod_jk.logJkLogLevelinfoJkLogStampformat"[%a%b%d%H:%M:%S%Y]"

uriworkermap.properties 文件

#主要作用:实现动静分离,通过正则表达式实现

#以.jsp文件分配给控制器

/*.jsp=controller

#所有以*.jsp文件全部交给 tomcat1 或2

#不是.jpg等结尾,不交给 tomcat 处理,最终交给 Apache 处理

通过此匹配规则实现动静分离,最终加载到列表中去,映射文件实现交给负载均衡器
!/*.jpg=controller

!/*.gi=controller

!/*.png=controller

!/*.bmp=controller

!/*.html=controller

!/*.htm=controller

!/*.swf=controller

!/*.css=controller

!/*.js=controller

 

四、具体使用

检查配置文件:

1. workers.properties 

2.Httpd.conf

[root@hadoop bin]# vim httpd.conf

JkworkersFile kusr/loca1/apache2/conf/workers.properties

JkMountFi1eusr/1oca1/apache2/conf/uriworkermap.propertieskLogFile /usr/loca1/apache2/logs/mod_jk.1og

JkLogLeve7info

JkLogstampformat "[%a %b %d %H:%M:%S %Y]“

定义日志文件和work文件

3.Uriworkermap.properties

映射文件,负载均衡器处理文件

在本机启动 tomcat 端口

[root@hadoop conf]# ps =ef|grep java

查看到 tomcat 路径

第二台机器启动 tomacat

[root@hadoop conf]# ps =ef|grep java

第二台机器命令为 tomcat81 ,区分负载均衡在那一台机器

测试:

1. 制作一个 info.jsp 文件,放置到 tomcat 默认目录下 /webapps/ROOT ,探测性质文件,探测本机 IP 和路径信息

在 tomcat1,tomcat2 或其他机器上也放置相同的文件

2.访问

Ip 地址 /info.jsp

探测文件可以访问,查看访问的机器,找到 tomcat 路径

Jsp 交给 tomcat 处理,若文件不存在,tomcat 将会保存

image.png

服务器端口80

客户端端口5O605

客户端IP 10.1.0.10

web服务器 Aache Tomcatf8.0.32

操作系统 Linuxunknown Ver : 2.6.32-279.el6. x86_64

服务器时间 mar 3,2016 10: 16:25 PM

CPU信息 am dB4

磁盘分区 /

用户当前工作目录 usr/localf/tomcat8/logs

本文件路径/usri/local/tomcat8/weLpps/R00T/info.jsp

Jara相关信息

JDK版本 1.7.0_45

Serrlet版本 3.1

JDK安装路径/usr/ java/ jdk1.7.0_45/jre

编码 UTF-8

JAVA类路径/usr/local/tomcat8/bin/bootstrap.jar:/ usr/local/tomcat8/bin/ tomcat-juli.jar

不断刷新页面,测试动静分离

测试图片:

apache_pb22.png

image.png图片是 Apachech 处理,jsp文件是 tomcat 处理,实现负载均衡随机 tomcat1 2节点中实现负载均衡

172.16.212.232/apache_pb221.png

更改文件名,查看输出报错,即可观察到文件是 apache 处理还是 tomcat 处理

image.png

通过此类方式判断 apache 和 tomcat 动静分离,不停刷新 jsp 文件实现负载均衡功能

J2e 架构通过此架构比较稳定

反向代理功能做不到严格匹配,没做到细化文件后缀。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
1月前
|
Dubbo Java 应用服务中间件
Apache ShenYu 架构学习指南
Apache ShenYu 是一款高性能、插件化的微服务API网关,基于Spring WebFlux + Reactor 构建,支持多协议、动态配置与实时数据同步。本指南以通俗类比和实战路径,带你深入理解其架构设计、核心流程与源码实现,助力快速掌握并参与贡献。
300 12
|
1月前
|
存储 消息中间件 Kafka
Confluent 首席架构师万字剖析 Apache Fluss(二):核心架构
原文:https://jack-vanlightly.com/blog/2025/9/2/understanding-apache-fluss 作者:Jack Vanlightly 翻译:Wayne Wang@腾讯 译注:Jack Vanlightly 是一位专注于数据系统底层架构的知名技术博主,他的文章以篇幅长、细节丰富而闻名。目前 Jack 就职于 Confluent,担任首席技术架构师,因此这篇 Fluss 深度分析文章,具备一定的客观参考意义。译文拆成了三篇文章,本文是第二篇。
275 19
|
1月前
|
人工智能 JavaScript 前端开发
GenSX (不一样的AI应用框架)架构学习指南
GenSX 是一个基于 TypeScript 的函数式 AI 工作流框架,以“函数组合替代图编排”为核心理念。它通过纯函数组件、自动追踪与断点恢复等特性,让开发者用自然代码构建可追溯、易测试的 LLM 应用。支持多模型集成与插件化扩展,兼具灵活性与工程化优势。
196 6
|
2月前
|
人工智能 Cloud Native 中间件
划重点|云栖大会「AI 原生应用架构论坛」看点梳理
本场论坛将系统性阐述 AI 原生应用架构的新范式、演进趋势与技术突破,并分享来自真实生产环境下的一线实践经验与思考。
|
2月前
|
机器学习/深度学习 人工智能 vr&ar
H4H:面向AR/VR应用的NPU-CIM异构系统混合卷积-Transformer架构搜索——论文阅读
H4H是一种面向AR/VR应用的混合卷积-Transformer架构,基于NPU-CIM异构系统,通过神经架构搜索实现高效模型设计。该架构结合卷积神经网络(CNN)的局部特征提取与视觉Transformer(ViT)的全局信息处理能力,提升模型性能与效率。通过两阶段增量训练策略,缓解混合模型训练中的梯度冲突问题,并利用异构计算资源优化推理延迟与能耗。实验表明,H4H在相同准确率下显著降低延迟和功耗,为AR/VR设备上的边缘AI推理提供了高效解决方案。
403 0
|
1月前
|
机器学习/深度学习 自然语言处理 算法
48_动态架构模型:NAS在LLM中的应用
大型语言模型(LLM)在自然语言处理领域的突破性进展,很大程度上归功于其庞大的参数量和复杂的网络架构。然而,随着模型规模的不断增长,计算资源消耗、推理延迟和部署成本等问题日益凸显。如何在保持模型性能的同时,优化模型架构以提高效率,成为2025年大模型研究的核心方向之一。神经架构搜索(Neural Architecture Search, NAS)作为一种自动化的网络设计方法,正在为这一挑战提供创新性解决方案。本文将深入探讨NAS技术如何应用于LLM的架构优化,特别是在层数与维度调整方面的最新进展,并通过代码实现展示简单的NAS实验。
|
1月前
|
人工智能 数据处理 API
阿里云、Ververica、Confluent 与 LinkedIn 携手推进流式创新,共筑基于 Apache Flink Agents 的智能体 AI 未来
Apache Flink Agents 是由阿里云、Ververica、Confluent 与 LinkedIn 联合推出的开源子项目,旨在基于 Flink 构建可扩展、事件驱动的生产级 AI 智能体框架,实现数据与智能的实时融合。
333 6
阿里云、Ververica、Confluent 与 LinkedIn 携手推进流式创新,共筑基于 Apache Flink Agents 的智能体 AI 未来
|
存储 Cloud Native 数据处理
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
本文整理自阿里云资深技术专家、Apache Flink PMC 成员梅源在 Flink Forward Asia 新加坡 2025上的分享,深入解析 Flink 状态管理系统的发展历程,从核心设计到 Flink 2.0 存算分离架构,并展望未来基于流批一体的通用增量计算方向。
288 0
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
|
3月前
|
SQL 人工智能 数据挖掘
Apache Flink:从实时数据分析到实时AI
Apache Flink 是实时数据处理领域的核心技术,历经十年发展,已从学术项目成长为实时计算的事实标准。它在现代数据架构中发挥着关键作用,支持实时数据分析、湖仓集成及实时 AI 应用。随着 Flink 2.0 的发布,其在流式湖仓、AI 驱动决策等方面展现出强大潜力,正推动企业迈向智能化、实时化的新阶段。
500 9
Apache Flink:从实时数据分析到实时AI
|
3月前
|
SQL 人工智能 API
Apache Flink 2.1.0: 面向实时 Data + AI 全面升级,开启智能流处理新纪元
Apache Flink 2.1.0 正式发布,标志着实时数据处理引擎向统一 Data + AI 平台迈进。新版本强化了实时 AI 能力,支持通过 Flink SQL 和 Table API 创建及调用 AI 模型,新增 Model DDL、ML_PREDICT 表值函数等功能,实现端到端的实时 AI 工作流。同时增强了 Flink SQL 的流处理能力,引入 Process Table Functions(PTFs)、Variant 数据类型,优化流式 Join 及状态管理,显著提升作业稳定性与资源利用率。
447 0

热门文章

最新文章

推荐镜像

更多