apache tomcat 集群!
來自: http://www.cnblogs.com/vitre/p/5164162.html
公司需要一個內部測試局域網, 要求可以支持3000并發訪問!以前也沒做過服務器這方面、臨時抱佛腳,查看了N多文檔,他人經驗,布置好之后,又遇到了N多問題,功夫不負有心人、終于還是完成了要求!觀他人的布置經驗- 總有不全的地方,所以把自己的經歷寫下來、作后來使用!
接到了這個任務、首先我想到的是apache httpserver 與tomcat集群.
一、環境: win7 4cpu 8G!
二、軟件:apache2.25 tomcat7 jre7u55
三、apache2.25安裝、這個比較簡單 一路next 、 唯一需要注意的是:apache 默認使用的80端口,安裝之前看一下此端口有沒有被占用,如有,關閉了它!
運行cmd 輸入命令netstat -ano|findstr "80" !
配置apache
- 安裝目錄apache下找到conf/httpd.conf 找到mod_proxy.so 、mod_proxy_ajp.so、mod_proxy_balancer 取消注釋,如下:
LoadModule proxy_module modules/mod_proxy.so #mod 代理 LoadModule proxy_ajp_module modules/mod_proxy_ajp.so #ajp協議 LoadModule proxy_balancer_module modules/mod_proxy_balancer.so #tomcat集群
- 啟用httpd-mpm.conf 、httpd-vhosts.conf 文件, 找到并取消注釋 如下:
Include conf/extra/httpd-vhosts.conf #定義服務器 如何定義后面會講 Include conf/extra/httpd-mpm.conf #優化apache 如何優化后面會講
- 配置代理集群對象在文件最后添加如下代碼
<proxy balancer://cluster> BalancerMember ajp://127.0.0.1:8009 loadfactor=2 route=jvm1 BalancerMember ajp://127.0.0.1:9009 loadfactor=1 route=jvm3 </proxy>
loadfactor:代表tomcat調用權重,這里表示當有3個請求進來時,apache 分配2個請求給jvm1標識的tomcat,1個請求給jvm3標識的tomcat! route:代表apache使用apache協議對tomcat的標識,具體配置會在tomcat配置里面講! route:代表apache使用apache協議對tomcat的標識,具體配置會在tomcat配置里面講! -
配置conf/extra/vhots.conf:這里只需要在文件的最后添加以下代碼:
<VirtualHost *:80> ServerAdmin 1665656796@qq.com ServerName localhost ServerAlias localhost ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On ProxyPassReverse / balancer://cluster/ </VirtualHost>
這里面有一些參數 serveradmin 可以隨意 ,serverName,與serverAlias 測試部署階段可以直接設置為localhost .proxypass與proxypassreverse 可以不做修改,后期明白它的含義了可以根據自己喜好修改!
-
找到httpd.conf文件在 DirectoryIndex 配置后面添加index.jsp 如下:
<IfModule dir_module> DirectoryIndex index.html index.jsp </IfModule>
到這里 apache 配置完畢!
四、tomcat配置由于比較簡單,這里簡略說明,如果是在一臺機器上布置兩個tomcat,需要修改四個端口、目的是為了避免端口沖突!tomcat啟動報錯.
- server.port 端口自己定義吧 只要不沖突就可以!
- connector.port connector.redirectport 注:connector有兩個,一個使用http協議,一個使用ajp協議,這里我們使用的是ajp協議 所以 把ajp協議的更改、當然我們也可以使用http協議做apache與tomcat連接、方法一樣!
- 配置engine 這里主要是給tomcat一個標識,用來讓apache區分!和前面apache httpd.conf中的blacermember 配置對應!如下:
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
- 配置cluster 啟動tomcat 進入小貓頁面、找到tomcat doc文檔.里面有cluster的配置,說明及示例!如下
復制一份代碼如下:
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8"> <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" address="228.0.0.4" port="45564" frequency="500" dropTime="3000"/> <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="auto" port="4000" autoBind="100" selectorTimeout="5000" 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"/> </Channel> <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/> <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/> <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" tempDir="/tmp/war-temp/" deployDir="/tmp/war-deploy/" watchDir="/tmp/war-listen/" watchEnabled="false"/> <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/> <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> </Cluster>
注: vlaue 標簽 classname為jvmroutebindervalve 與 clusterlistener classname 為jvmroutesessionidbinderlistener 是為粘性session準備的處理方式、因為我們并沒有使用到,所以需要注釋掉! 這里還要修改一下revicve.port 也是為了避免沖突!
五、apache 與tomcat都布置完畢、可以自己寫個小測試,測一下session是否達到要求!篇章短小,測試項目代碼就不發布了,網上也有很多!
</div>