常见apache+tomcat应用架构与负载均衡
目录:
一、常用的LAMT应用架构
二、tomcat 的安装配置以及jk模块的配置
三、LAMT负载均衡架构的实现
四、具体使用流程
一、常用的LAMT应用架构
LAMT的T就是TomCat的意思,此结构在传统行业中使用较多,基于JAVA环境或j2e架构
企业最常用的架构,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/
安装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
三、LAMT负载均衡架构的实现
负载均衡常用架构模式的使用
配置实现图例架构:
最后端有很多个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.log
JkLogLevelinfo
JkLogStampformat"[%a%b%d%H:%M:%S%Y]"
uriworkermap.properties 文件
#主要作用:实现动静分离,通过正则表达式实现
#以.jsp文件分配给控制器
/*.jsp=controller
#所有以*.jsp文件全部交给tomcat1或2
#不是.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将会保存
服务器端口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
图片是Apachech处理,jsp文件是tomcat处理,实现负载均衡随机tomcat1 2节点中实现负载均衡
172.16.212.232/apache_pb221.png
更改文件名,查看输出报错,即可观察到文件是apache处理还是tomcat处理
通过此类方式判断apache和tomcat动静分离,不停刷新jsp文件实现负载均衡功能
J2e架构通过此架构比较稳定
反向代理功能做不到严格匹配,没做到细化文件后缀。