Apache+JK+Tomcat配置
Apache+Tomcat实现负载均衡有3中方式,分别是:ajp_proxy、http_proxy和jk,这里选用apache+jk+tomcat的方式(此种方式网上对其的稳定性评价相对较高)。
下载:
1. Apache安装文件httpd-2.2.22-win32-x86-openssl-0.9.8t.msi
2. Windows环境下Tomcat免安装64bit版apache-tomcat-7.0.27-windows-x64
3. JK文件压缩包tomcat-connectors-1.2.37-windows-i386-httpd-2.2.x.zip这里要注意的是JK的版本要与Apache的版本相匹配
4. 官网地址http://www.apache.org/
安装:
1. 选定3台服务器,此处假设有ip分别为:192.168.1.11、192.168.1.12、192.168.1.13的3台服务器可用,分配如下:192.168.1.11安装Apache,192.168.1.12和192.168.1.13安装Tomcat,每台安装两个,即是Apache+4Tomcat的模式实现负载均衡。
2. 安装Apache,安装过程简单,略过。
3. 解压tomcat-connectors-1.2.37-windows-i386-httpd-2.2.x.zip得到mod_jk.so文件,将其放入Apache安装目录下的modules目录。
4. 安装Tomcat,每台服务器上各安装两个,此处用的是免安装版,安装过程简单,略过。
配置:
1. 修改Apache配置文件httpd.conf
1)修改监听端口,搜索Listen 80(默认是80端口),修改为相应需要监听的端口即可。
2)在httpd.conf的最后写入:Include conf/mod_jk.conf
2. 在httpd.conf 文件同目录下新建mod_jk.conf文件,写入如下内容:
# 加载mod_jk模块
LoadModule jk_module modules/mod_jk.so
# 指定 workers.properties文件路径
JkWorkersFile conf/workers.properties
# 设置日志存放路径
JkLogFile logs/mod_jk.log
# 设置日志级别 [debug/error/info]
JkLogLevel info
#指定哪些请求交给Tomcat处理
JkMount / * router
JkMount /jkmanager* jkstatus
# 关掉主机Lookup
HostnameLookups Off
3. 在httpd.conf 文件同目录下新建workers.properties文件,写入如下内容:
#设定工作的负载平衡器
worker.list=router,jkstatus
worker.router.type=lb
#指定负载平衡器的Tomcat节点(此处有4个Tomcat节点)
worker.router.balance_workers=worker1,worker2,worker3,worker4
#类型
worker.worker1.type=ajp13
#Tomcat服务器的ip地址
worker.worker1.host=192.168.1.12
# 工作端口
worker.worker1.port=8109
#负载平衡的权重,权重越大,则分配到此节点的请求越多
worker.worker1.lbfactor=2
worker.worker1.socket_keepalive=1
#以下3个配置类推
worker.worker2.type=ajp13
worker.worker2.host=192.168.1.12
worker.worker2.port=8209
worker.worker2.lbfactor=2
worker.worker2.socket_keepalive=1
worker.worker3.type=ajp13
worker.worker3.host=192.168.1.13
worker.worker3.port=8109
worker.worker3.lbfactor=2
worker.worker3.socket_keepalive=1
worker.worker4.type=ajp13
worker.worker4.host=192.168.1.13
worker.worker4.port=8209
worker.worker4.lbfactor=2
worker.worker4.socket_keepalive=1
worker.jkstatus.type=status
worker.loadbalancer.sticky_session=true
worker.loadbalancer.sticky_session_force=true
4. 修改每个Tomcat的server.xml,此处以192.168.1.12的第一台Tomcat为例
1)修改http监听端口,此处端口设为8181,此步骤必须,以免同一服务器上的两台Tomcat端口冲突。
<Connector port="8181" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
2) 修改AJP监听端口,此处端口设为8109(与上面worker.worker1.port=8109匹配), 此步骤必须,以免同一服务器上的两台Tomcat端口冲突。
<Connector port="8109" protocol="AJP/1.3" redirectPort="8443" />
3) 配置服务器标识,此处配置为worker1(与上面workers.properties中配置匹配),此步骤必须。
将原<Engine name="Catalina" defaultHost="localhost" >修改为:
<Engine name="Standalone" defaultHost="localhost" jvmRoute="worker1">
4)其余3台Tomcat修改步骤类推,全部Tomcat修改完毕后,一一启动Tomcat测试是否配置正确。
5. 优化Apache配置,在httpd.conf中加入如下内容:
#连接的最大请求数量
MaxKeepAliveRequests 20000
keepalive on
#连接的保持时间
keepalivetimeout 3
# 每个进程的线程数
ThreadsPerChild 1920
#最大并发连接数
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
Maxspareservers 10
ServerLimit 21000
MaxClients 20100
MaxRequestsPerChild 300
</IfModule>
Win32DisableAcceptEx
使用:启动所有Tomcat,启动Apache
注:如果有不止3台服务器可用,或者没有3台,只有2台甚至只有一台,只要作相应修改即可,如在只有一台服务器可用的情况下,可以将Apache和多个Tomcat安装在同一台服务器上。
另: 建议为同一服务器下的多个Tomcat单独设置内存,以具有更好性能。Windows下多个Tomcat间的文件同步,建议使用cwRsync,配置简单、性能良好,参考文档http://www.cnblogs.com/daizhj/archive/2009/11/03/1595395.html。 如需同一服务器下的多个免安装版Tomcat能同时启动同时关闭以方便使用,可以为启动和关闭分别写个.bat文件,如需Tomcat在服务器重启时能自动开机启动,将.bat文件放入开机启动项即可。
END:以上配置是实际环境中所使用整理而来,目前性能良好,欢迎大家一起讨论,以使性能最优化。