一、使用mod_jk.so方式
1.無集群方式
1)下載、安裝Apache2.2.11,Tomcat6.0.20略
2)下載mod_jk-1.2.28-httpd-2.2.3.so改名為mod_jk.so放到%APACHE_HOME%\modules下(不改名會出錯(cuò),不知道為什么)
3)打開%APACHE_HOME%\conf\httpd.conf,找到最末一個(gè)Include節(jié)點(diǎn),加入mod-jk_nocluster.conf
4)在%APACHE_HOME%\conf\新建mod-jk_nocluster.conf,加入以下內(nèi)容:
LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers_nocluster.properties
JkLogFile logs/mod_jk_nocluster.log
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat "%w %V %T"
JkMount /* ajp13
#關(guān)掉主機(jī)Lookup,如果為on,很影響性能,可以有10多秒鐘的延遲。
HostnameLookups Off
5)在%APACHE_HOME%\conf\新建workers_nocluster.properties,加入以下內(nèi)容:
worker.list=ajp13
worker.maintain=60
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
worker.ajp13.lbfactor=1
6)啟動(dòng)Apache,tomcat,在地址欄輸入http://localhost看到tomcat畫面成功了
2.使用集群(以兩個(gè)tomcat為例)
1)、2)同上
3)打開%APACHE_HOME%\conf\httpd.conf,找到最末一個(gè)Include節(jié)點(diǎn),更改mod-jk_nocluster.conf為mod-jk_cluster.conf
4)在%APACHE_HOME%\conf\新建mod-jk_cluster.conf,加入以下內(nèi)容:
LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers_cluster.properties
JkLogFile logs/mod_jk_cluster.log
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat "%w %V %T"
JkMount /* controller
HostnameLookups Off
5)在%APACHE_HOME%\conf\新建workers_cluster.properties,加入以下內(nèi)容:
worker.list = controller,tomcat1,tomcat2 #server 列表
#========tomcat1========
worker.tomcat1.port=18109 #ajp13 端口號,在tomcat下server.xml配置,默認(rèn)8009
worker.tomcat1.host=localhost #tomcat的主機(jī)地址,如不為本機(jī),請?zhí)顚慽p地址
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 1 #server的加權(quán)比重,值越高,分得的請求越多
#worker.tomcat1.redirect=tomcat2 #是在cluster環(huán)境之下,當(dāng)tomcat1掛點(diǎn)或無回應(yīng),jk會將request導(dǎo)向這個(gè)指令指定的其他worker作處理。
#========tomcat2========
worker.tomcat2.port=18209 #ajp13 端口號,在tomcat下server.xml配置,默認(rèn)8009
worker.tomcat2.host=localhost #tomcat的主機(jī)地址,如不為本機(jī),請?zhí)顚慽p地址
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1 #server的加權(quán)比重,值越高,分得的請求越多
#worker.tomcat2.activation=disabled #
#========controller,負(fù)載均衡控制器========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2 #指定分擔(dān)請求的tomcat
worker.controller.sticky_session=1
6)修改tomcat1配置文件server.xml,tomcat2配置修改地方同tomcat1,僅需注意相關(guān)端口號,在同一臺服務(wù)器上時(shí)不能重復(fù)
以下列出需修改節(jié)點(diǎn)地方:
#默認(rèn)為8005
<Server port="8105" shutdown="SHUTDOWN">
#默認(rèn)8080,此處可根據(jù)需求修改線程并發(fā)等
<Connector port="8180" ...>
#默認(rèn)8009,
<Connector port="8109" protocol="AJP/1.3" redirectPort="8443" />
#name可為Standalone
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="6">
<Manager
className="org.apache.catalina.ha.session.BackupManager"
expireSessionsOnShutdown="false" notifyListenersOnReplication="true"
mapSendOptions="6" />
<!--
<Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>
-->
<Channel
className="org.apache.catalina.tribes.group.GroupChannel">
<Membership
className="org.apache.catalina.tribes.membership.McastService"
mcastBindAddress="127.0.0.1" #安裝了VPN、svn等,會導(dǎo)致綁定失敗需加上此句
address="228.0.0.4" port="45564"
frequency="500" dropTime="3000" />
<Receiver
className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto" port="4001" selectorTimeout="100" maxThreads="6" />
<Sender
className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport
className="org.apache.catalina.tribes.transport.nio.PooledParallelSender" />
</Sender>
<Interceptor
className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector" />
<Interceptor
className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor" />
<Interceptor
className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor" />
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;" />
<ClusterListener
className="org.apache.catalina.ha.session.ClusterSessionListener" />
</Cluster>
在<Host>節(jié)點(diǎn)加入
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/xxx/"
deployDir="/tmp/war-deploy/xxx/"
watchDir="/tmp/war-listen/xxx/"
watchEnabled="false"/>
7)將Web應(yīng)用打成war包放到每一個(gè)webapps下,確保web.xml中加了
<display-name>xxx<display-name>
<distributable />
或者直接放到tomcat的web.xml中
至此mod-jk.so方式全配好了,啟動(dòng)服務(wù)就OK了!
待續(xù)Apache新增的配置方式。。。。。。