2. apache整合tomcat部署集群
apache只有处理静态事物的能力, 而tomcat的强项就是处理动态的请求,所以apache和tomcat整合相互取长补短,由apache作为入口,如果是请求静态页面或者是静态文件,由apache直接提供,如果是请求动态页面,则让apache分发到tomcat,由tomcat处理以后再响应给客户端。
apache和tomcat的整合需要准备的一些软件列表:
图1
说明:
1.首先安装apache服务(httpd-2.2.25-win32-x86-no_ssl.msi),默认是80端口的,如果80端口被占用,则无法安装成功;
用一下命令可以查询80端口被哪个进程id占用,netstat -aon|findstr "80"
再用一下命令查询该进程id是代表哪个进程,tasklist|findstr "2016"
apache检查错误方法:进入cmd 然后进入 Apache安装目录(具体为你自己的安装目录)\bin> httpd.exe -w -n "Apache2" -k start
2.打开apache的安装目录下面的modules文件夹,把图1中的mod_jk.so文件放入
3.在apache安装目录的conf文件夹下面配置mod_jk.conf文件,如果没有则新增一个,内容为:
图2
图2中的第一行,指定mod_jk的配置文件,配置tomcat以及负载均衡
图2中的第二行和第三行表示,当请求后缀我jsp或者是do的时候,apache把请求转发给tomcat来处理
3.配置完上面的配置文件以后,在apache的安装目录下的httpd.conf文件的末尾,把mod_jk.so模块以及mod_jk.conf配置文件加载进去
图3
4.配置apache的安装目录下的workers.properties文件,如果该文件不存在,自己新增一个即可
图4
介绍下图4中的各个参数:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#server worker.list = controller #控制器名称 #========tomcat1======== worker.tomcat1.port= 8009 #ajp协议的端口,如果 2 个tomcat部署在同一个服务器中,那个ajp端口需要不同 worker.tomcat1.host= 127.0 . 0.1 #tomcat的所在主机的ip,如果是本机,则写本机的ip即可 worker.tomcat1.type=ajp13 #协议类型 worker.tomcat1.lbfactor= 1 #负载因子 #========tomcat2======== worker.tomcat2.port= 9009 worker.tomcat2.host= 127.0 . 0.1 worker.tomcat2.type=ajp13 worker.tomcat2.lbfactor= 1 #如果 2 个tomcat,该参数相同,表示等比例,如果想tomcat负载多一点,只要把这个参数改的大一点即可,具体多少还是得看情况 #========controller,负载均衡控制器======== worker.controller.type=lb worker.controller.retries= 3 #请求失败以后重试次数 worker.controller.balance_workers=tomcat1,tomcat2 #controller控制的tomcat的名称,分别为tomcat1和tomcat2,由tomcat中的server.xml中设值 worker.controller.sticky_session= false #回话是否有粘性, false 表示无粘性,同一个回话的请求会到不同的tomcat中处理 worker.controller.sticky_session_force= false #当一个节点蹦了,如果设值为 true ,那么服务器返回 500 错误给客户端,如果设值为 false ,则转发给其他的tomcat,但是会丢失回话信息 #更详细的参数说明:http: //tomcat.apache.org/connectors-doc/reference/workers.html |
5.安装好apache服务以后再准备好tomcat(两个tomcat作为例子)
图5
tomcat需要配置server.xml文件
|
另外就是在web项目的web.xml中添加属性<distributable/>,用于告诉web容器,该项目属于分布式项目,不然无法session replication
6. 静态文件直接由apache响应,所需需要把部署的项目中的静态文件放在apache的安装目录下的htdocs文件夹下,偷懒的方法就是直接把tomcat的webapps中的项目拷贝一份放到htdocs中,所以htdocs的作用与tomcat的webapps类似
7.部署的时候经常会出现一些错误,当遇到错误的时候我经常需要查看日志文件,我经常查看的日志有apache的日志以及tomcat的日志
图6
apache安装目录下的logs文件夹下就存放这apache的相关日志
access.log文件用于记录apache接收到请求以及响应状态的日志
error.log文件用于记录apache的运行错误
httpd.pid文件用于记录进程pid
mod_jk.log文件用于记录请求转发给tomcat的日志
图7
tomcat的日志:
localhost_access_log.日期.txt文件用于记录tomcat接收到的请求以及响应的状态等,作用于apache的access.log类似
catalina.日期.txt文件用于记录tomcat启动时候控制台的一些信息以及服务端错误信息
localhost.日期.txt文件用于记录站点访问信息,Tomcat下内部代码丢出的日志,文件名localhost.日期.log(jsp页面内部错误的异常,org.apache.jasper.runtime.HttpJspBase.service类丢出的,日志信息就在该文件!)
8.官方文档中对于集群中session repliction的要求:
图8
总共8点:
1).session中的属性必须全部为实现Serializable
2).tomcat的server.xml配置文件中的<Cluster>节点的注释去掉
3).就是用于用于检测当前的响应是否涉及Session数据的更新,如果是则启动Session拷贝操作,这个属性后面会有一个filter属性,filter即过滤不需要Session拷贝操作的内容
4).如果tomcat在同一个机器上的,那么确保tcpListenerPort端口的唯一性
5).web.xml中必须添加<distributable/>属性
6).如果使用mod_jk,那么需要在server.xml中的<Engine/>节点中添加jvmRoute=“tomcat1”属性,事实证明在ajp端口那边添加也是可行的
7).确保所有的tomcat时钟同步,使用ntp服务器来达成
8).确保负载均衡器的sticky_session=false已经设置,即设置为非粘性
参考:
1.https://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html
2.http://www.cnblogs.com/dennisit/p/3370220.html
3.http://502245466.blog.51cto.com/7559397/1280152
2. apache整合tomcat部署集群的更多相关文章
- apache整合tomcat部署集群
近日,由于公司项目需要,所以学习了apache整合tomcat以及集群的一些知识. 所以做下笔记日后回顾可以用到. apache只有处理静态事物的能力, 而tomcat的强项就是处理动态的请求,所以a ...
- 结合Apache和Tomcat实现集群和负载均衡 JK 方式 2 (转)
本文Apache+Tomcat集群配置 基于最新的Apache和Tomcat,具体是2011年4月20日最新的Tomcat和Apache集群和负载均衡配置. 准备环境 Apache Apa ...
- 结合Apache和Tomcat实现集群和负载均衡 JK 方式
本文基本参考自 轻松实现Apache,Tomcat集群和负载均衡,经由实操经历记录而成,碰到些出入,以及个别地方依据个人的习惯,所以在一定程度上未能保持原文的完整性,还望原著者海涵. 因原文中有较多的 ...
- 结合Apache和Tomcat实现集群和负载均衡
http://fableking.iteye.com/blog/360870 TomcatApacheJSP应用服务器Web 本文基本参考自 轻松实现Apache,Tomcat集群和负载均衡,经由实 ...
- apache与tomcat负载集群的3种方法
花了两天时间学习apache与tomcat的集成方法,现在把学习成果记录下来. apache与tomcat负载集群集成方法有3种jk.jk_proxy.http_proxy 本次集成使用的软件版本: ...
- 用apache和tomcat搭建集群,实现负载均衡
型的企业应用每天都需要承受巨大的访问量,在着巨大访问量的背后有数台服务器支撑着,如果一台服务器崩溃了,那么其他服务器可以使企业应用继续运行,用户对服务器的运作是透明化的,如何实现这种透明化呢?由如下问 ...
- apache和tomcat搭建集群
最近在学习简单的apache服务器和两个tomcat一起搭建集群,这里简单记录一下 1.准备工作 ①搭建一个可以运行的web项目 用maven搭建springmvc项目 ,只要将这里面的web.xml ...
- 云服务器 nginx + tomcat 部署集群 配置
nginx.conf #user nobody; worker_processes ; #error_log logs/error.log; #error_log logs/error.log not ...
- apache配置weblogic部署集群,多节点的项目和单节点项目并存 负载均衡
开启模块如下: LoadModule weblogic_module modules/mod_wl_22.so LoadModule lbmethod_byrequests_module module ...
随机推荐
- 如何在Java中获取键盘输入值
程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值的现成函数!Java没有提供这样的函数也不代表遇到这 ...
- 黄聪:微信公众平台开发OAuth2.0网页授权(转)
微信公众平台开发 OAuth2.0网页授权认证 网页授权获取用户基本信息 作者:方倍工作室 微信公众平台最近新推出微信认证,认证后可以获得高级接口权限,其中一个是OAuth2.0网页授权,很多朋友在使 ...
- LaTex与数学公式
w(t) \longrightarrow \bigg[\frac{\sqrt{2\sigma ^2\beta}}{s+\beta}\bigg] \longrightarrow \bigg[\frac ...
- 在windows 7中vagrant up 无反应,没任何信息输出
本文转载自:https://blog.csdn.net/cow66/article/details/77993908 我的系统是windows 7 安装了vagrant,当运行vagrant up时, ...
- OpenStack 创建虚机过程简要汇总
1. 总体流程 翻译自原文(英文):https://ilearnstack.com/2013/04/26/request-flow-for-provisioning-instance-in-opens ...
- 找出N个无序数中第K大的数
使用类似快速排序,执行一次快速排序后,每次只选择一部分继续执行快速排序,直到找到第K个大元素为止,此时这个元素在数组位置后面的元素即所求 时间复杂度: 1.若随机选取枢纽,线性期望时间O(N) 2.若 ...
- windows10如何查看wifi密码
1.首先,在你的电脑的右下角的WiFi的图标,右击它,选择"网络和internet设置"或者选择打开设置 :如下图 点击"更改适配器选项" 选择 WLAN选项, ...
- Jmeter(四十三)WebSocket Sampler 和 Ajax Request
权利被放出牢笼,就很难再被关入笼中:奴性被唤出来,腰杆和膝盖很难再直起来. ----宅猪<牧神记> websocket: 参考:https://blog.csdn.net/minmint ...
- [UE4]游戏主循环
游戏的运行模型 理解游戏的运行模型,对处理很多游戏错误有非常大的帮助. 游戏是有一个主循环的.那么游戏主循环做了什么事情呢? 游戏主循环一次就表示一帧,游戏主循环包括:接受输入.处理游戏逻辑.渲染.S ...
- 00004 - CentOS 7下安装pptp服务端
主要配置步骤 1. 安装前检查系统支持 a. 在安装之前查看系统是否支持PPTP modprobe ppp-compress-18 && echo success 应该输出:succe ...