公司須要一個內部測試局域網, 要求能夠支持3000併發訪問!之前也沒作過服務器這方面、臨時抱佛腳,查看了N多文檔,他人經驗,佈置好以後,又遇到了N多問題,功夫不負有心人、終於仍是完成了要求!觀他人的佈置經驗- 總有不全的地方,因此把本身的經歷寫下來、做後來使用!html
接到了這個任務、首先我想到的是apache httpserver 與tomcat集羣.apache
1、環境: win7 4cpu 8G!tomcat
2、軟件:apache2.25 tomcat7 jre7u55服務器
3、apache2.25安裝、這個比較簡單 一路next 、 惟一須要注意的是:apache 默認使用的80端口,安裝以前看一下此端口有沒有被佔用,若有,關閉了它!session
運行cmd 輸入命令netstat -ano|findstr "80" !併發
配置apachejvm
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集羣
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>
<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 能夠不作修改,後期明白它的含義了能夠根據本身喜愛修改! jsp
找到httpd.conf文件在 DirectoryIndex 配置後面添加index.jsp 以下: tcp
<IfModule dir_module> DirectoryIndex index.html index.jsp </IfModule>
到這裏 apache 配置完畢! 測試
4、tomcat配置因爲比較簡單,這裏簡略說明,若是是在一臺機器上佈置兩個tomcat,須要修改四個端口、目的是爲了不端口衝突!tomcat啓動報錯.
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
<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 也是爲了不衝突!
5、apache 與tomcat都佈置完畢、能夠本身寫個小測試,測一下session是否達到要求!篇章短小,測試項目代碼就不發佈了,網上也有不少!