一.配置虛擬主機css
<VirtualHost *:80>
ServerAdmin webmaster@yesky.com
DocumentRoot /home/afocus/apush/web
ServerName apush.afocus.com.cn
DirectoryIndex index.jsp
<Directory /home/afocus/apush/web>
Options FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
</Directory>
ErrorLog logs/apush_error-log
CustomLog logs/apush_access-log combined
JkMount /*.* controller
</VirtualHost>html
二.配置 jk.confjava
LoadModule jk_module modules/mod_jk.sonode
JkWorkersFile conf/workers.propertiesweb
JkMountFile conf/uriworkermap.propertiesapache
JkLogFile logs/mod_jk.logwindows
JkLogLevel info瀏覽器
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"tomcat
第一句說明 將mod_jk.so 加入到httpd 中, 所以須要將 tomcat-connectors-1.2.40-windows-x86_64-httpd-2.4.x.zip 內的mod_jk.so文件放入到 E:/work/test/Apache24/modules 目錄下
第二句是說明 apach關聯的tomcat服務器有哪些。session共享的設置。 要求 在conf目錄下新建 workers.properties 文件
第三句 是說明 apach要攔截那些請求,那些請求讓tomcat處理。要求 在conf目錄下新建 uriworkermap.properties 文件
第四句 是日誌文件
第五句 是日誌級別
服務器
三.配置 workers.properties
ps=/
worker.list=controller,loadbalancer,jkstatus,apushtomcat,tomcat1,tomcat2
#worker.apushtomcat.port=8069
#worker.apushtomcat.host=localhost
#worker.apushtomcat.type=ajp13
#========apache-tomcat-1========
worker.tomcat1.port=8069
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1
#========apache-tomcat-2========
worker.tomcat2.port=8070
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1
#========controller========
worker.controller.type=lb
worker.controller.balance_workers=tomcat1,tomcat2
worker.controller.sticky_session=true
worker.controller.sticky_session_force=false
worker.jkstatus.type=status
說明:
我的理解的 worker.list=controller,status 是有哪些攔截類型,如contorller是tomcat,status是httpd。
一、其中worker.tomcat1.host中,tomcat1表明節點名,host值爲節點IP, 若是有更多節點,順序定義更多的node段,並在worker.controller.balance_workers後所有列出。
二、lbfactor是負載分配權重,值越大分配的負載越多。
三、worker.controller.sticky_session,設置爲1或true使用粘着session,設置爲0或false不使用粘着session。若是sticky_session設爲true時,建議sticky_session_force設爲false,
此參數代表若是集羣中某臺服務器在屢次請求沒有響應後,將轉發當前的請求到其它服務器上處理;sticky_session=false時,影響比較大,會致使轉發到其它服務器上的請求,找不到原來的session,
因此若是此時請求中有讀取session中某些信息的話,就會致使應用的null異常。sticky_session、sticky_session_force的默認值分別爲true,false。
sticky_session sticky_session_force 含義
true false SESSION會複製,有粘性
true true SESSION不復制,有粘性
false false SESSION會複製,無粘性
false true SESSION會複製,無粘性
四、worker.status.type=status 用於查看 集羣信息
四.配置uriworkermap.properties
/*=controller
/jkstatus=status
!/*.gif=controller
!/*.jpg=controller
!/*.png=controller
!/*.css=controller
!/*.js=controller
!/*.htm=controller
!/*.html=controller
說明:
即 tomcat 攔截全部的請求 (controller表明tomcat集羣) 下面的配置是特殊狀況 apache只負責攔截 /jkstatus 的請求和 靜態資源 若是不想用 apach處理,
能夠把 下面的去除掉。網上有人寫攔截 /*.jsp 而後也沒有配不攔截的資源,致使頁面顯示不完整。
還能夠在workers.properties 中把 worker.list=controller,status,tomcat1,tomcat2,tomcat3
而後將攔截的內容 爲 /*.jsp /*.do 分別交給不一樣的服務器處理。
五.修改tomcat的server.xml
在同一臺機器上部署兩個及以上,要修改 server.xml 中的端口,讓他們不同
<Server port="9005" shutdown="SHUTDOWN">
<Connector port="9090" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="11009" protocol="AJP/1.3" redirectPort="8443" />
這三個的端口 port protocol="AJP/1.3" 的 port 要和 workers.properties 內的配置一致
修改
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" />
在 Engine 標籤內添加 jvmRoute="tomcat2" 且 要和 workers.properties 內的配置一致
而後啓動httpd,tomcat 在瀏覽器內鍵入 http://localhost:80/jkstatus 查看集羣的信息。
六.在部署的項目的web.xml 中的<web-app>標籤內添加 <distributable/>標籤
曾經碰到的問題
1. Unable to receive message through TCP channel
登錄的時候,將用戶信息放入session 發現可以登錄單個的tomcat,可是不能經過apache進入,修改 workers.properties 就能夠了,這個網上沒找到答案,暫時這樣。
worker.controller.sticky_session=true
worker.controller.sticky_session_force=false
2.全部的要放入session的內容必須實現Serializable接口不然會報錯,java.io.NotSerializableException
3.apache httpd 找不到tomcat 可能緣由是 mod_jk 的版本不匹配,我剛開始用的是 tomcat-connectors-1.2.39-windows-x86_64-httpd-2.4.x.zip 發現連接不上tomcat 可是換爲tomcat-connectors-1.2.40-windows-x86_64-httpd-2.4.x.zip 後就能夠了。
4.將靜態資源放到httpd 的E:\work\test\Apache24\htdocs目錄下, 結構要和 jsp文件中寫的路徑一致。
必定要注意的問題:
切記將定時任務單獨部署,不然會執行屢次。