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

简介: 一、常用的LAMT应用架构二、tomcat 的安装配置以及jk模块的配置三、LAMT负载均衡架构的实现四、具体使用流程

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

 

目录:

一、常用的LAMT应用架构

二、tomcat 的安装配置以及jk模块的配置
三、LAMT负载均衡架构的实现

四、具体使用流程

 

 

一、常用的LAMT应用架构

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

image.png

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

Apache

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

 

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

 

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

tomcat处理动态请求更为专业

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

jk模块实现ApacheTomcat交互,连接作用

 

为什么整合tomcatapache

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
:放一些可执行的脚本文件,比如我们要启动和关闭tomca的可执行文件也在里面
     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类型有两种,ajp12ajp13,实现通信

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.log
JkLogLevelinfo
JkLogStampformat"[%a%b%d%H:%M:%S%Y]"

uriworkermap.properties 文件

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

 

#.jsp文件分配给控制器

/*.jsp=controller

#所有以*.jsp文件全部交给tomcat12

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

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


!/*.jpg=controller
!/*.gif=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 32016 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

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

 

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

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

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
网络协议 Java 应用服务中间件
框架源码私享笔记(01)Tomcat核心架构功能 | 配置详解
本文首先分享了《活出意义来》一书序言中的感悟,强调成功如同幸福,不是刻意追求就能得到,而是全心投入时的副产品。接着探讨了Tomcat的核心功能与架构解析,包括网络连接器(Connector)和Servlet容器(Container),并介绍了其处理HTTP请求的工作流程。文章还详细解释了Tomcat的server.xml配置文件,涵盖了从顶级容器Server到子组件Connector、Engine、Host、Context等的配置参数及作用,帮助读者理解Tomcat的内部机制和配置方法。
|
消息中间件 数据挖掘 Kafka
Apache Kafka流处理实战:构建实时数据分析应用
【10月更文挑战第24天】在当今这个数据爆炸的时代,能够快速准确地处理实时数据变得尤为重要。无论是金融交易监控、网络行为分析还是物联网设备的数据收集,实时数据处理技术都是不可或缺的一部分。Apache Kafka作为一款高性能的消息队列系统,不仅支持传统的消息传递模式,还提供了强大的流处理能力,能够帮助开发者构建高效、可扩展的实时数据分析应用。
1173 5
|
监控 网络协议 Java
Tomcat源码解析】整体架构组成及核心组件
Tomcat,原名Catalina,是一款优雅轻盈的Web服务器,自4.x版本起扩展了JSP、EL等功能,超越了单纯的Servlet容器范畴。Servlet是Sun公司为Java编程Web应用制定的规范,Tomcat作为Servlet容器,负责构建Request与Response对象,并执行业务逻辑。
Tomcat源码解析】整体架构组成及核心组件
|
安全 网络协议 应用服务中间件
AJP Connector:深入解析及在Apache HTTP Server中的应用
【9月更文挑战第6天】在Java Web应用开发中,Tomcat作为广泛使用的Servlet容器,经常与Apache HTTP Server结合使用,以提供高效、稳定的Web服务。而AJP Connector(Apache JServ Protocol Connector)作为连接Tomcat和Apache HTTP Server的重要桥梁,扮演着至关重要的角色
823 2
|
负载均衡 前端开发 应用服务中间件
Tomcat的负载均衡和动静分离(与nginx联动)
总的来说,负载均衡和动静分离是提高Web应用性能的两个重要手段。通过合理的配置和使用,我们可以让Web应用更好地服务于用户。
434 21
|
负载均衡 Java 应用服务中间件
Tomcat与Nginx的负载均衡与动静分离技巧
总的来说,Tomcat和Nginx各有各的优点,在负载均衡和动静分离这两方面它们都有很好的应用。灵活使用这两个工具能够让Web应用具有更好的扩展性和用户体验。
420 14
|
负载均衡 前端开发 JavaScript
LVS-DR模式、keepalived、Nginx与Tomcat合作,打造动静分离,高效负载均衡与高可用性
为了采用这样的架构,你需要对LVS-DR、Keepalived、Nginx与Tomcat有一定的理解和掌握,同时也需要投入一些时间去研究和配置,但是一旦你把它运行起来,你将会发现,这一切都是值得的。
522 11
|
Java 网络安全 Apache
SshClient应用指南:使用org.apache.sshd库在服务器中执行命令。
总结起来,Apache SSHD库是一个强大的工具,甚至可以用于创建你自己的SSH Server。当你需要在服务器中执行命令时,这无疑是非常有用的。希望这个指南能对你有所帮助,并祝你在使用Apache SSHD库中有一个愉快的旅程!
1037 29
|
存储 分布式计算 druid
大数据-149 Apache Druid 基本介绍 技术特点 应用场景
大数据-149 Apache Druid 基本介绍 技术特点 应用场景
547 1
大数据-149 Apache Druid 基本介绍 技术特点 应用场景
|
消息中间件 Java Kafka
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
888 1

相关实验场景

更多

推荐镜像

更多