使用mod_jk整合Apache HTTP Server和Tomcat
来源:互联网 发布:猫咪软件 编辑:程序博客网 时间:2024/05/20 06:28
前言
我们的一个新项目是一个RESTful架构风格的程序,服务器端用Java编写,对客户端提供REST Web Service。使用Tomcat作为Servlet Container,Tomcat本身是无状态的(stateless,REST的特点),无需做Session同步。不过为了实现可伸缩性,可用性以及可靠性的非功能性要求,需要做负载均衡,使用Apache HTTP Server作为前置。
Apache HTTP Server(以下简称Apache)整合Tomcat,通过模块来实现。有两个方案,mod_jk和mod_proxy。前者是老牌劲旅,功能强大完备,但是理念有些落后,Apache安装包不包含,需要额外下载;后者是主力新军,有待雕琢和检验,天空才是极限,Apache安装包自带。具体的比较可以参考StackOverflow上的帖子(见参考1)本文只介绍mod_jk的方式。
结构图如下:
具体步骤
1. 安装Apache和Tomcat
我用的操作系统是Windows,选择的都是绿色版本(无需安装,解压缩即可的那种)。 Apache HTTP Server的安装有很多教程,这里不再铺开来说。注意两点,一是设置ServerRoot,如果在Windows系统下,把Apache直接装在所在盘的根目录即可免去配置ServerRoot;而是配置端口,Apache的默认端口是80,有可能80端口已经被已有程序占用,那么得配置。启动有问题的话,请到logs目录下查看日志。
Tomcat安装在多台机器上直接启用即可。如果你向我一样一台机器安装两个Tomcat,那么必须解决端口冲突的问题。我的做法是把两个Tomcat命名为A和B,A端口不变,B端口加1,Server, Connector for http以及Connector for AJP都要修改,涉及5个数字。Tomcat的数量当然不仅限于2个,可以自行发挥,类推即可。
安装好之后需要验证安装。Apache是否成功,单个Tomcat是否成功,两个Tomcat同时运行是否成功。
2. 下载mod_jk,并安装mod_jk
注意下载与Apache版本对应的mod_jk,复制到Apache的modules目录即可。
3. 配置mod_jk
涉及到两个两个文件conf/httpd.conf和conf/workers.properties。具体的配置含义可以自行查询。
conf/httpd.conf需要增加几行配置项(如果是Apache2.4, 记得取消注释LoadModule access_compat_module modules/mod_access_compat.so)。代码如下:
# load mod_jk LoadModule jk_module modules/mod_jk.so# Specify path to worker configuration fileJkWorkersFile conf/workers.properties# Configure logging and memoryJkShmFile logs/mod_jk.shmJkLogFile logs/mod_jk.logJkLogLevel info# Configure monitoringJkMount /jkmanager/* jkstatus<Location /jkmanager>Order deny,allowDeny from allAllow from localhost</Location># Configure applicationsJkMount /* loadbalancer
新建conf/workers.properties文件,专属于于mod_jk。代码如下:
# Define worker namesworker.list=jkstatus, loadbalancer# Create virtual workersworker.jkstatus.type=statusworker.loadbalancer.type=lb# Declare Tomcat server workers 1 through nworker.worker1.type=ajp13worker.worker1.host=localhostworker.worker1.port=8009worker.worker2.type=ajp13worker.worker2.port=8010worker.worker2.host=localhost# Associate real workers with virtual LoadBalancer workerworker.loadbalancer.balance_workers=worker1,worker2
It’s Done,就是那么简单。赶快试试吧。
后记
我们的服务器是无状态的,无需Session同步。如果你的项目需要,那么我的理解与Apache也没有关系,直接使用Tomcat的Cluster功能即可。
我们项目用到了WebSocket,WebSocket的可以做Load balancing。WebSocket的Load balancing与普通http请求相同,这是因为WebSocket是由Http Upgrade而来,初始的URL负载均衡了,WebSocket自然均衡。不过由于WebSocket是长连接,如果Server断掉了,WebSocket客户端必须主动发起重连,也就是客户端需要重连机制。
参考链接:
StackOverflow
MuleSoft
友情链接
书法和国画爱好者请进
- 使用mod_jk整合Apache HTTP Server和Tomcat
- 使用mod_jk 连接apache http server 和 tomcat
- apache+tomcat+mod_jk整合
- apache tomcat 整合 (mod_jk)
- Linux 下Apache 和Tomcat 整合 mod_jk
- Linux 下Apache 和Tomcat 整合 mod_jk
- Linux 下Apache 和Tomcat 整合 mod_jk
- Apache HTTP server 和 Tomcat server 整合
- 整合 Apache Http Server 和 Tomcat
- apache http server 和tomcat整合
- Tomcat与Apache整合(mod_jk)
- Tomcat与Apache整合(mod_jk)
- tomcat与Apache整合(mod_jk)
- FreeBSD 7.2 apache+apache-tomcat+mod_jk 整合,
- Windows平台整合 Apache HTTP Server 和 Tomcat
- 转:apache+tomcat+mod_jk整合配置虚拟主机
- Apache http Server与Tomcat整合 2
- Tomcat与Apache HTTP server 整合
- Tencent login函数登录成功后无法成功回传数据(无法返回回调方法) Android qq授权登录
- 微信公众平台开发教程目录
- SEO专员,如何评估一个外链的价值?
- 在CodeBlocks环境下使用boost库
- Linux I2C设备驱动编写(一)
- 使用mod_jk整合Apache HTTP Server和Tomcat
- android学习之控件的事件监听的四种写法
- 如何清除本地shell历史记录
- Unity学习笔记(4) --- Unity的界面排版:初识GUI
- Java学习笔记----事件驱动程序设计
- 5.2、SSAS-维度-基本知识
- grunt uglify 压缩中文乱码
- oracle删除表操作,10g之前的不适用
- 机器学习技法作业7