maxThreads="150" cOnnectionTimeout="20000"
redirectPort="8443" />
两个 Service 的 ajp/1.3 的端口分别为: 8060 , 8070
2.2.4. 配置 Engine
Engine 主要是配置 jvmRoute 属性,找到:
改为:
两个实例分别为: tomcat6 和 tomcat5.
2.2.5. 配置公用性 Context
如果有 Context 是多个系统公用的,比如图片等的存放地,可以做个配置:
在 Host 中增加:
2.2.6. 屏蔽文件列表
打开 tomcat 目录下的 conf/web.xml ,
找到:
default
org.apache.catalina.servlets.DefaultServlet
debug
0
listings
true
1
将 listings 参数改为 false;
2.3. 配置应用 (web.xml)
对系统应用做些控制。
配置 session 过期时间,大多数网站用户都只是做些浏览性的操作,为了减轻服务器负载压力,我们将 session
超时时间从默认的 30 分钟变为 5 分钟。
在 web 应用程序的 web.xml 中 servlet-mapping 之后增加如下一段:
5
3.1. 下载、安装 Apache
下载地址 http://httpd.apache.org/download.cgi
下载后点击安装 msi 文件。
安装的时候没有什么特别需要注意的地方,按照默认就行了。是否安装为 service 看具体情况而定。
3.2. 下载、安装 Apache 、 tomcat 的 Connector
http://tomcat.apache.org/download-connectors.cgi
注意,很多网站上都介绍是 JK2 ,可能是觉得 JK2 比 JK 要新吧,其实 JK2 已经停止研发了,建议使用 jk1.2
。
下载压缩包,之后将 module 目录中的 mod_jk-apache****.so 文件放入 /module/
目录下。
3.3. 配置 Apache ( httpd.conf ) 3.3.1.
配置端口:
找到
Listen 80
改为
Listen **
当然如果不需要改的话,就不用改了。正常情况无须更改。
3.3.2. 配置 DocumentRoot
找到 DocumentRoot 段,将其改为:
DocumentRoot "E:/MyWebsite"
这里的 "E:/MyWebsite" 指的是你的 web 程序的根路径,视具体应用而定。
3.3.3. 配置 serverName
找到 serverName 这个段,将其配置为你的 ServerName
如果没有配置为域名,配为 IP 也可以,此处还不是很清楚,多虚拟主机的情况的配置。
3.3.4. 配置虚拟主机
ServerAdmin flyffa@gmail.com
DocumentRoot E:/MyWebsite
ServerName localhost
DirectoryIndex index.html index.htm
index.jsp
ErrorLog logs/error_log
CustomLog logs/access_log common
ErrorDocument 404 /sys/logon.jsp
3.4. 配置 JK 方式的负载均衡 3.4.1. 配置
module
我们需要与 tomcat 做连接,所以要把 tomcat 的 connector 的模块配置进去。
在 LoadModule 部分加入:
LoadModule jk_module modules/mod_jk-apache-2.0.55.so -加载模块
这个 so 是我下载的版本,个人可以根据自己下载的文件名加以配置
JkWorkersFile conf/workers.properties -指定 connector 的配置文件名称
JkLogFile logs/mod_jk.log -指定 connector 的日志文件名称
JkLogLevel info -指定 connector 的日志等级
3.4.2. 配置 worker 列表
(conf/workers.properties)
定义列表
worker.list=tomcat6,tomcat5,loadbalancer
定义一个名为 “loadbalancer” 的
worker
其作为对多个 Tomcat 进程的负载平衡使用:
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=tomcat5, tomcat6
( 负载平衡类型的 worker 并不与 Tomcat worker 通讯,它负责管理这些 Tomcat worker 。
)
定义多个 worker 列表
# Set properties for tomcat6 (ajp13)
worker.tomcat6.type=ajp13
worker.tomcat6.host=localhost
worker.tomcat6.port=8019
worker.tomcat6.lbfactor=50
worker.tomcat6.cachesize=10
worker.tomcat6.cache_timeout=600
worker.tomcat6.socket_keepalive=1
worker.tomcat6.reclycle_timeout=300
# Set properties for tomcat5 (ajp13)
worker.tomcat5.type=ajp13
worker.tomcat5.host=localhost
worker.tomcat5.port=8029
worker.tomcat5.lbfactor=50
worker.tomcat5.cachesize=10
worker.tomcat5.cache_timeout=600
worker.tomcat5.socket_keepalive=1
worker.tomcat5.reclycle_timeout=300
注意: lbfactor= 50 ( 当此 Tomcat
worker 被用于一个负载平衡 worker 使用时,此属性将被使用。它定义了此 worker 的负载平衡权值。 )
cachesize= 10 ( 当在多线程的 web
server (例如 apache2.0 、 IIS 、 Netscape )中使用 JK 时,此属性是有效的。如果将
cachesize 的值设置为较高的值,这些支持多线程的 web server 将获得很好的处理能力。如果此属性不被设置,则连接
cache 特性将失效。 )
3.4.3. 配置 Apache 到 tomcat 的桥接
在 DocumnetRoot 片段下加入
JkMount /*.jsp tomcat6
JkMount /*.do tomcat6
JkMount /*Servlet tomcat6
这里只是简单的将 apache 的请求转到其中的一个 tomcat
中,形成桥接,至于负载均衡的时候,就无须进行这步操作,直接启动负载均衡。启动负载均衡见下一节。
3.4.4. 启动负载均衡
在 DocumnetRoot 片段下加入
JkMount /*.jsp loadbalancer
JkMount /*.do loadbalancer
JkMount /*Servlet loadbalancer
-指定对所有的请求启动负载均衡,这里的 loadbalancer 是定义的 worker 的名字
这里我在配置的时候犯了两个错误:
第一是没有配置 JkWorkersFile conf/workers.properties ,以为 Apache
会自动认识(其实 apache 是自动产生了一个叫做 ajp13 的 worker ,指向本机的 8009 端口)。
第二是以为 JkMount 语句中出现 loadbalancer,ajp13 之类的是系统设定的东西,其实都是在
workers.properties 文件中定义的,结果出现名字不匹配的情况。后来配置了 JkLogFile
logs/mod_jk.log 之后看到错误日志才明白。
3.5. 配置 Proxy 方式的负载均衡
使用 Apache2.1 以上的版本,就可以用 mod_proxy_ajp 来完成负载均衡的配置,不过到目前为止,没有看到如何让
Apache 负责静态部分, tomcat 负责动态部分的配置方式,只能用 path
进行区分分发请求。如:在虚拟主机的配置中增加:
ProxyPass / ajp://localhost:8019/
ProxyPassReverse / ajp://localhost:8019/
而形如:
ProxyPass /*.jsp ajp://localhost:8019/
ProxyPassReverse /*.jsp ajp://localhost:8019/
这样的配置是不能通过的。