exe可執行文件的安裝方式:http://jingyan.baidu.com/article/ed15cb1b73b3071be269816d.htmlcss
解壓縮包的安裝方式: win+r --> cmd --> 打開dos界面,進入到Apache\bin目錄下執行 httpd.exe -k install -n "apache2.2" 。 執行完成 Apache服務安裝完畢。apache2.2 爲服務的名稱html
啓動服務遇到問題:右擊個人電腦-->管理-->事件查看器-->找到Apache Service-->右鍵-->查看事件的全部實例java
因爲Apache的docs log 等路徑都的 /Apache/*** ,可是個人服務是放在了本身創建的文件夾下,因此服務啓動的時候找不到這些文件。大部分問題是這些。web
顯示如上界面,Apache安裝成功。apache
配置httpd.conf 文件瀏覽器
#提供HTTP/1.1的代理/網關功能支持
LoadModule proxy_module modules/mod_proxy.sotomcat
#mod_proxy的擴展,提供Apache JServ Protocol支持
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so 服務器
#mod_proxy的擴展,提供負載均衡支持
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so session
#mod_proxy的擴展,提供對處理HTTP CONNECT方法的支持
LoadModule proxy_connect_module modules/mod_proxy_connect.so app
#mod_proxy的FTP支持模塊
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
# mod_proxy的HTTP支持模塊
LoadModule proxy_http_module modules/mod_proxy_http.so
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
httpd-vhosts.conf文件添加:
<VirtualHost *:80> ServerAdmin abc@163.com proxyRequests off ServerName abc.com ServerAlias www.abc.com ProxyPass /resource! ProxyPass /req balancer://cluster/ stickysession=JSESSIONID|jsessionid nofailover=On ProxyPassReverse /req balancer://cluster/ ProxySet lbmethod=bytraffic </VirtualHost>
<proxy balancer://cluster> BalancerMember ajp://12.34.56.78:8011 loadfactor=1 route=tomcat1 BalancerMember ajp://12.34.56.78:8012 loadfactor=1 route=tomcat2 BalancerMember ajp://12.34.56.78:8013 loadfactor=1 route=tomcat3 BalancerMember ajp://12.34.56.78:8014 loadfactor=1 route=tomcat4 status=+H </proxy>
解釋:其中ProxyPass /resource! 表示/resource 開頭的請求不會轉發給Tomcat,而是做爲靜態資源在Apache的resource目錄下尋找資源文件。而反向代理將全部的/req 請求都轉發給名叫cluster的balancer。 而這個balancer有四個Tomcat成員。 status=+H 表示熱部署。
ProxySet lbmethod=bytraffic 設置負載均衡的策略
lbmethod可能的取值有:
lbmethod=byrequests 按照請求次數均衡(默認)
lbmethod=bytraffic 按照流量均衡
lbmethod=bybusyness 按照繁忙程度均衡(老是分配給活躍請求數最少的服務器)
stickySession=JSESSIONID表示開啓粘性Session。意思是若是第一次請求分到了tomcat1,那麼這個用戶的後續請求,都會分配給tomcat1這個服務。
而後在Apache配置故障轉移(nofailover=On)
若是tomcat1服務宕機,那麼Apache會將請求提交當其它服務器,因爲後臺Tomcat服務器作了Session共享(也就是服務器Session複製),因此用戶的Session並無丟失。
Apache配置了四臺服務的負載均衡,對應的Tomcat服務器也須要四臺。以Tomcat6.x爲例
<Server port="8005" shutdown="SHUTDOWN"> <!--修改爲: --> <Server port="8006" shutdown="SHUTDOWN">
並將其他3個Tomcat的Server port分別修改爲8007,8008,8009。
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <!--修改爲:--> <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <!--並將其他3個Tomcat的port分別修改爲8082,8083,8084-->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> <!--修改爲:--> <Connector port="8011" protocol="AJP/1.3" redirectPort="8443" /> <!--並將其他3個Tomcat的port分別修改爲8012,8013,8014 -->
2.3 是apache和tomcat連接的關鍵,前臺apache就是經過AJP協議與tomcat進行通訊的,以完成負載均衡,上面的 port="8011" 就是Apache鏈接Tomcat的端口。
回顧一下httpd.conf配置中的
<proxy balancer://cluster> BalancerMember ajp://12.34.56.78:8011 loadfactor=1 route=tomcat1 BalancerMember ajp://12.34.56.78:8012 loadfactor=1 route=tomcat2 BalancerMember ajp://12.34.56.78:8013 loadfactor=1 route=tomcat3 BalancerMember ajp://12.34.56.78:8014 loadfactor=1 route=tomcat4 </proxy>
Tomcat中的端口要和「ajp://12.34.56.78:XXXX」後面端口一致。
<Engine name="Catalina" defaultHost="localhost">, <!--修改爲:--> <Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat1"> <!--並將其他3個Tomcat的jvmRoute分別修改爲:--> <Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat2"> <Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat3"> <Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat4">
回顧一下httpd.conf配置中的
<proxy balancer://cluster> BalancerMember ajp://12.34.56.78:8011 loadfactor=1 route=tomcat1 BalancerMember ajp://12.34.56.78:8012 loadfactor=1 route=tomcat2 BalancerMember ajp://12.34.56.78:8013 loadfactor=1 route=tomcat3 BalancerMember ajp://12.34.56.78:8014 loadfactor=1 route=tomcat4 </proxy>
Tomcat中的jvmRoute="tomcatx"要和「route=tomcatx」中的命名一致。
<!--在註釋行的下面添加:--> <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="6"> <Manager className="org.apache.catalina.ha.session.BackupManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true" mapSendOptions="6"/> <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="5001" 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>
其他3個Tomcat都要作相同的配置,注意每一個Tomcat之間的差異是<Receiver>標籤下面的port值不同,這裏是5001,其他3個Tomcat中分別是5002,5003,5004
1. 全部session中的對象能夠序列化,實現 java.io.Serializable接口。
2. 確保你部署文件中的web.xml有<distributable/>元素(其父元素爲</web-app>),或者設置你的<Context distributable="true" />。
3. 當使用多臺機器時,要保證不一樣機器時間的同步。
4. 確保你的loadbalancer是sticky session 模式。