Apache通过mod_jk整合Tomcat
2018-10-16 16:06
836 查看
Apache通过mod_jk整合Tomcat
- Apache整合Tomcat的三种方法
- 实验环境
- 安装tomcat-connectors
- 修改mod_Jk配置文件
- 重启测试
Apache结合Tomcat原因
通常,将Apache与tomcat结合主要出于以下几个原因:
1 .提升对静态文件的处理性能,所有静态文件均由前段apache响应,其它JSP相关的请求分发给后端的Tomcat处理; 2 .利用tomcat服务器来做负载均衡以及容错,前端的apache可作为一个负载均衡,将请求分发给后端的多台tomcat,当一台tomcat宕机是,可以将其暂时移除集群; 3 .无缝的升级应用程序,在对后端的多台tomcat进行升级部署时,将其暂时移除集群来实现平滑升级
Apache整合Tomccat的三种方法
mod_jk
简称JK,这是最常见的方式,JK本身有两个版本分别是1和2,目前1最新版本是tomcat-connectors-1.2.43-src.tar.gz,而版本2早已废弃了,以后也不会有新 版本推出;JK是通过AJP协议与Tomcat服务器进行通讯的,Tomcat默认的AJP Connector端口是8009,JK本身提供了一个监控以及管理的页面jkstatus,通过 jkstatus可以监控JK目前的工作状态以及对tomcat的连接数进行设置
http_proxy
这是利用Apache自带的mod_proxy模块使用代理技术来连接Tomcat。在配置之前请确保是否使用的是2.2版本以上的apache服务器,因为2.2以上的版本对这个 某爱进行了重写,大大的增强了其功能和稳定性,http_proxy模式是基于HTTP协议的代理,因此它要求Tomcat必须提供HTTP,也就是说必须启用Tomcat的 HTTP Connector
ajp_proxy
ajp_proxy连接方式其实跟http_proxy方式一样,也是由mod_proxy所提供的功能,但是通过AJP协议与Tomcat服务器进行通讯的,这一点有与mod_jk相同
系统环境
[root@Zabbix_Client_56 /]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) [root@Zabbix_Client_56 /]# uname -r 3.10.0-862.el7.x86_64 [root@Zabbix_Client_56 /]# hostname Zabbix_Client_56.8 [root@Zabbix_Client_56 /]# ip a|grep 192.168. inet 192.168.56.8/24 brd 192.168.56.255 scope global noprefixroute dynamic eth0
安装tomccat-connectors
注:安装apache和tomcat环境这里不在叙述,请查看网站内的apache和tomcat编译安装配置
下载jk软件包用来和tomcat连接 wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.46-src.tar.gz [root@Zabbix_Client_56 src]# tar xf tomcat-connectors-1.2.46-src.tar.gz [root@Zabbix_Client_56 src]# cd tomcat-connectors-1.2.46-src [root@Zabbix_Client_56 tomcat-connectors-1.2.46-src]# cd native/ [root@Zabbix_Client_56 native]# ./configure --prefix=/usr/local/tomcat-connectors --with-apxs=/usr/local/apache/bin/apxs [root@Zabbix_Client_56 native]# make && make install
查看mod_jk模块是否安装
[root@Zabbix_Client_56 native]# ls /usr/local/apache/modules/ | grep mod_jk.so mod_jk.so
修改mod_JK配置文件
JK最关键的三个文件分别是:
httpd.conf:Apache服务器的配置文件,用来加载JK模块以及指定JK配置文件信息 worker.properties:到Tomcat服务器的连接定义文件 uriworkermap.properties:URL映射文件,用来哪些URL b68 由Tomcat处理,也可以指定哪些URL不让Tomcat处理,取反使用 !号
配置httpd.conf文件
[root@Zabbix_Client_56 native]# echo "Include conf/extra/httpd-jk.conf" >> /usr/local/apache/conf/httpd.conf [root@Zabbix_Client_56 native]# cd /usr/local/apache/conf/extra/ [root@Zabbix_Client_56 extra]# vim httpd-jk.conf #把该文件名称定义为httpd-jk.conf是为了好辨认是jk模式 LoadModule jk_module modules/mod_jk.so #开启jk模块,并指定模块位置 JkWorkersFile conf/extra/httpd-jk-workers.properties #指定tomcat服务器的连接定义文件 JkMountFile conf/extra/httpd-jk-uriworkermap.properties #指定URL映射文件 JkLogFile logs/httpd-jk.log #指定mod_jk模式所产生的日志数据路径 JklogLevel info #指定日志级别为info
配置worker.properties文件
[root@Zabbix_Client_56 extra]# vim httpd-jk-workers.properties 注意:这里可以配置任意多个Tomcat,此处配置了2个Tomat服务器,而且注释一个 注意:host和port根据自己实际配置,如果本机有两个tomcat,建议分别使用不同AJP的端口.避免冲突 注意:如果是两台不同的机器上跑得tomcat那就没有必要去修改ajp端口,因为jk会通过host来区分 #server列表 worker.list=connect,status,tomcat1,tomcat2 #定义worker列表 #==========tomcat1============ worker.tomcat1.port=8009 #ajp13端口号,在tomcat下server.xml中配置,默认为8009,如果server.xml文件中修改过,那这里也要跟server.xml内的一致 worker.tomcat1.host=127.0.0.1 #tomcat的主机地址,如不为本机,请填写ip地址 worker.tomcat1.type=ajp13 #采用AJP协议进行通道 worker.tomcat1.lbfactor=1 #负载的权重值,权重值越大,接收的请求越多 #==========tomcat2============ #worker.tomcat2.port=8809 #worker.tomcat2.host=127.0.0.1 #worker.tomcat2.type=ajp13 #worker.tomcat2.lbfactor=1 #=========controller========== #负载均衡器 worker.controller.type=lb #采用类型为lb负载均衡类型 worker.connect.balanced_workers=tomcat1,tomcat2 #指定负载列表,逗号分隔 worker.connect.sticky_session=false ##此处指定集群是否需要会话复制,如果设为true,则表明为会话粘性,不进行会话复制,当某用户的请求第一次分发到哪台Tomcat后,后继的请求会一直分发到此Tomcat服务器上处理;如果设为false,则表明需求会话复制 worker.connect.sticky_session_force=1 1114 #这样负载均衡器lb就会尽量保持一个session,也就是使用户在一次会话中跟同一个Tomcat进行交互 #===========status============ worker.status.type=status #用于httpd自身状态监控的status
创建mod_jk URL映射文件
[root@Zabbix_Client_56 extra]# vim httpd-jk-uriworkermap.properties /*=connect #主机上的所有请求都转发给connect /jkstatus=status #在/jkstatus页面中监控status集群状态 /*.gif=connect #!取反,前面加上!号就是不把这类文件转发给connect处理,本地处理,相当于动静分离,图片和html等静态文件在本地处理,动态文件由tomcat处理,但是本地因测试环境没有放置静态文件和图片,所以这里就不取反了 /*.jpg=connect /*.png=connect /*.css=connect /*.js=connect /*.htm=connect /*.html=connect
重启测试
测试mod_jk模块请求转发
[root@Zabbix_Client_56 extra]# /usr/local/apache/bin/apachectl restart [root@Zabbix_Client_56 extra]# curl http://127.0.0.1 -I HTTP/1.1 200 200 Date: Tue, 16 Oct 2018 04:40:13 GMT Server: Apache/2.4.35 (Unix) mod_jk/1.2.46 Content-Type: text/html;charset=UTF-8 以下访问的此机器的80端口,Apache通过mod_Jk模块使用AJP协议通过转发到了tomcat的8009端口进行处理
测试mod_jk监控集群状态
[root@Zabbix_Client_56 bin]# curl http://127.0.0.1/jkstatus -I HTTP/1.1 200 OK Date: Tue, 16 Oct 2018 07:47:44 GMT Server: Apache/2.4.35 (Unix) mod_jk/1.2.46 Cache-Control: no-cache Pragma: no-cache Content-Type: text/html
相关文章推荐
- 在windows 2000,XP 下通过mod_jk2.so整合Tomcat5.0 和 Apache2.0
- apache与tomcat通过mod_jk模块整合
- 在windows 2000,XP 下通过mod_jk2.so整合Tomcat5.0 和 Apache2.0
- apache+tomcat+mod_jk整合
- linux下apache+mod_jk.so+tomcat整合(基础版)
- ubuntu 下 apache+tomcat整合_(mod-jk方法)[转]
- Linux 下Apache 和Tomcat 整合 mod_jk
- Apache Httpd通过mod_jk连接多个Tomcat
- 如何整合Apache和Tomcat (两种方式1.Apache自带的proxy 2.mod_jk 1.21(mod_jk-apache-2.2.4.so))
- Linux 下Apache 和Tomcat 整合 mod_jk
- 使用mod_jk整合Apache HTTP Server和Tomcat
- Apache与Tomcat整合(apache+tomcat+mod_jk)
- WINDOW环境下Apache-2.0.58+mod_ssl+mod_jk-2.0.55+Tomcat-5.5.16的整合
- Tomcat与Apache整合(mod_jk)
- CentOS5.3 编译 mod_jk 1.2.15 链接器 整合apache httpd 和 tomcat
- tomcat集群--整合Apache服务器,采用mod_JK连接模式
- CentOS5.3编译安装mod_jk_1.2.15_链接器_整合apache_httpd和tomcat
- ubuntu下整合apache+tomcat+mod_jk
- CentOS-6.4-minimal版中通过JK-1.2.40整合Apache-2.2.29与Tomcat-6.0.41
- CentOS5.3 编译 mod_jk 1.2.15 链接器 整合apache httpd 和 tomcat