日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

apache+tomcat配置

發布時間:2023/11/30 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 apache+tomcat配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
無意間看到tomcat 6集群的內容,就嘗試配置了一下,還是遇到很多問題,特此記錄。apache服務器和tomcat的連接方法其實有三種:JK、http_proxy和ajp_proxy。本文主要介紹最為常見的JK。

環境:PC2臺:pc1(IP 192.168.88.118)安裝了apache和tomcat

???????????????????? pc2(IP 192.168.88.168)安裝了tomcat

???????? 系統 win xp sp3

? 1.安裝tomcat、apache服務器及版本對應的JK

??這里需要注意的是JK版本必須與apache服務器版本號對應,可以直接從我參考附件下載。apache_home表示apache服務器安裝目錄.

?2.配置apache服務器

??2.1 httpd.conf文件

?apache_home目錄下的conf/httpd.conf文件中添加

Xml代碼
  • LoadModule?jk_module?modules/mod_jk-1.2.26-httpd-2.2.4.so ??
  • JkWorkersFile?conf/workers.properties ??
  • JkMount?/*?lbcontroller???
  • LoadModule jk_module modules/mod_jk-1.2.26-httpd-2.2.4.so JkWorkersFile conf/workers.properties JkMount /* lbcontroller

    ?具體的說明如下:

    Xml代碼
  • LoadModule?jk_module?modules/mod_jk-1.2.26-httpd-2.2.4.so??
  • LoadModule jk_module modules/mod_jk-1.2.26-httpd-2.2.4.so

    ?表示載入JK模塊。

    Xml代碼
  • JkWorkersFile?conf/workers.properties??
  • JkWorkersFile conf/workers.properties

    tomcat實例配置,具體參見2.2。

    Xml代碼
  • JkMount?/*?lbcontroller???
  • JkMount /* lbcontroller

    ??設置apache分發器,/*表示apache將所有文件都由分發器lbcontroller 進行分發,你可以自行設置*.jsp,*.do等?

    ??2.2 workers.properties文件

    在apache_home下conf目錄中新建workers.properties文件,輸入以下內容

    Xml代碼
  • worker.list=lbcontroller??
  • ??
  • #Tomcat1實例配置 ??
  • worker.tomcat1.host=192.168.88.118 ??
  • worker.tomcat1.port=8009??
  • worker.tomcat1.type=ajp13??
  • #分發權重?值越大負載越大 ??
  • worker.tomcat1.lbfactor?=?1 ??
  • ??
  • #Tomcat2實例配置 ??
  • worker.tomcat2.host=192.168.88.168 ??
  • worker.tomcat2.port=9009??
  • worker.tomcat2.type=ajp13??
  • #分發權重?值越大負載越大 ??
  • worker.tomcat2.lbfactor?=?1??
  • ??
  • #負載均衡分發控制器 ??
  • worker.lbcontroller.type=lb ??
  • worker.lbcontroller.balance_workers=tomcat1,tomcat2 ??
  • worker.lbcontroller.sticky_session=True??
  • worker.list=lbcontroller#Tomcat1實例配置 worker.tomcat1.host=192.168.88.118 worker.tomcat1.port=8009 worker.tomcat1.type=ajp13 #分發權重 值越大負載越大 worker.tomcat1.lbfactor = 1#Tomcat2實例配置 worker.tomcat2.host=192.168.88.168 worker.tomcat2.port=9009 worker.tomcat2.type=ajp13 #分發權重 值越大負載越大 worker.tomcat2.lbfactor = 1#負載均衡分發控制器 worker.lbcontroller.type=lb worker.lbcontroller.balance_workers=tomcat1,tomcat2 worker.lbcontroller.sticky_session=True

    ?在這里

    Xml代碼
  • worker.list=lbcontroller??
  • worker.list=lbcontroller

    ?內容即為httpd.conf文件中的分發器名稱。需要注意的內容是,tomcat實例名稱

    Xml代碼
  • worker.tomcat1.host=.... ??
  • ... ??
  • worker.tomcat2.host=.... ??
  • ...??
  • worker.tomcat1.host=.... ... worker.tomcat2.host=.... ...

    ?在這里就是tomcat1和tomcat2必須與之后tomcat中的server.xml中jvmRoute值一致。

    3.tomcat集群配置

    配置每個tomcat目錄下的server.xml文件,具體修改內容如下

    3.1 Engine配置

    修改前

    Xml代碼
  • <Engine?name="Catalina"?defaultHost="localhost">??
  • <Engine name="Catalina" defaultHost="localhost">

    修改后

    Xml代碼
  • <Engine?name="Catalina"?defaultHost="localhost"??jvmRoute="tomcat1"?>??
  • <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1" >

    ?具體tomcat中jvmRoute的值根據在workers.properties的配置,注意IP地址、tomcat實例名稱和jvmRoute值必須一一對應。

    3.2 Connector配置

    修改前

    Xml代碼
  • <Connector?port="8009"?protocol="AJP/1.3"?redirectPort="8443"?/>??
  • <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

    修改后

    Xml代碼
  • <Connector?port="9009"?protocol="AJP/1.3"?redirectPort="8443"?/>??
  • <Connector port="9009" protocol="AJP/1.3" redirectPort="8443" />

    ?這里tomcat的port值必須與在workers.properties中的port值一致。

    3.3 Cluster配置

    修改前

    Xml代碼
  • <!-- ?
  • <Cluster?className="org.apache.catalina.ha.tcp.SimpleTcpCluster"?>?
  • -->??
  • <!-- <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" > -->

    ?修改后,去掉注釋并添加一些內容如下

    Xml代碼
  • <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="4001"?? ??
  • ???????????????????autoBind="100"?? ??
  • ???????????????????selectorTimeout="5000"?? ??
  • ???????????????????maxThreads="6"/>??? ??
  • ?????????<!--?timeout="60000"-->??? ??
  • ?????????<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=""/>??? ??
  • ???????<Valve?className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>??? ??
  • ??
  • ???????<ClusterListener?className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>??? ??
  • ???????<ClusterListener?className="org.apache.catalina.ha.session.ClusterSessionListener"/>??? ??
  • ?????</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="4001" autoBind="100" selectorTimeout="5000" maxThreads="6"/> <!-- timeout="60000"--> <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=""/> <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/> <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/> <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> </Cluster>

    ?上述配置跟tomcat官方建議的配置,去掉了

    Xml代碼
  • <Deployer?className="org.apache.catalina.ha.deploy.FarmWarDeployer"??
  • ???????????????????tempDir="/tmp/war-temp/"??
  • ???????????????????deployDir="/tmp/war-deploy/"??
  • ???????????????????watchDir="/tmp/war-listen/"??
  • ???????????????????watchEnabled="false"/>??
  • <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"tempDir="/tmp/war-temp/"deployDir="/tmp/war-deploy/"watchDir="/tmp/war-listen/"watchEnabled="false"/>

    ?如果不去掉這部分,則tomcat啟動會報"FarmWarDeployer can only work as host cluster subelement!."

    3.4 session復制配置

    tomcat集群中的session管理,主要有兩種方式:

    1).粘性session

    表示從同一窗口發來的請求都將有集群中的同一個tomcat進行處理。配置方式是在上面workers.properties文件中

    Xml代碼
  • worker.lbcontroller.sticky_session=True???
  • worker.lbcontroller.sticky_session=True?

    粘性session的好處在不會在不同的tomcat上來回跳動處理請求,但是壞處是如果處理該session的tomcat崩潰,那么之后的請求將由其他tomcat處理,原有session失效而重新新建一個新的session,這樣如果繼續從session取值,會拋出nullpointer的訪問異常。

    2).session復制

    session復制是指tomcat彼此之間通過組播方式將session發到各個tomcat實例上,如果其中一個訪問出錯,則另外tomcat仍然具有有效的session內容,從而能正常接管其session。壞處是當tomcat實例很多,或者用戶在session中有大量操作時,組播發送的信息量十分驚人。session復制配置則是在發布的web應用程序中的web.xml中添加

    Xml代碼
  • <distributable/>??
  • <distributable/>

    ?此外,session復制所需的JDK必須是JDK 5.0及其以上版本。

    4.測試

    1) 先啟動apache服務器httpd

    2) 啟動名為tomcat2的服務器

    ?在瀏覽器中輸入訪問地址http://localhost/test/index.html

    ?可以看到請求被轉發到了tomcat2進行處理

    3)啟動tomcat 1 ,界面如下

    ?可以發現,tomcat1啟動后搜索到了tomcat2實例,并進行了session復制。在tomcat2的控制臺也可以找到如下輸出

    ?4)關閉tomcat 2,后繼續刷新url訪問。tomcat1控制臺中輸出的session?依然與之前tomcat2中的一致,并且在session中保存的屬性值仍然有效。

    5.問題

    上面的配置是在兩臺不同的配置上進行,tomcat負載和session復制都成功了。但是如果在同一臺機子上配置,則session復制總是不能成功,搜索了很多解決方式都不正確。
    6.參考

    http://www.ibm.com/developerworks/cn/opensource/os-lo-apache-tomcat/index.html

    http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html#Cluster Basics?

    系統架設

    前臺采用apache2.2作為web服務器

    后臺架設了3000,3001,3002,三個mongrol應用

    ?

    ?

    問題表現

    訪問http://localhost,出現一直在訪問服務器;

    ?

    然后訪問http://localhost:3000可以正常訪問,估計問題出現apache上,查看錯誤日志error.log

    ?

    apache后臺出現的錯誤提示:

    ?

    [warn] Server ran out of threads to serve requests. Consider raising the ThreadsPerChild setting

    ?

    ?

    原因:

    在httpd.conf中并沒有設置線程數量,Apache默認開啟了64個,看來是遠遠不夠。于是上網一查,在httpd.conf加入以下內容:

    <IfModule mpm_winnt_module>
    ThreadsPerChild 512
    MaxRequestsPerChild 0
    </IfModule>

    這樣開啟了512工作線程。這個值根據需要可能要慢慢調整

    按照上面的修改進行httpd。conf文件的修改,然后重啟服務器,可以正常訪問,問題解決

    -Xms1024m
    -Xmx1024m
    -Xmn512m
    -XX:PermSize=512M
    -XX:NewSize=512m
    -XX:MaxNewSize=512m
    -XX:MaxPermSize=512m
    -XX:ParallelGCThreads=4
    -XX:MaxTenuringThreshold=5
    -XX:ParallelCMSThreads=3
    -XX:+UseConcMarkSweepGC
    -XX:+UseCMSCompactAtFullCollection
    -XX:+CMSParallelRemarkEnabled
    -XX:CMSInitiatingOccupancyFraction=80 一般這兩個參數設置成一樣的,能提高效率:??-Xms1024m?-Xmx1024m?
    -Xss128k?:這個參數設置其實要小心,128是我們一直用的值,一直?也沒出什么問題。
    以上參數都調大后其它的參數也要隨著調,要不然還是用默認值,這樣一定就會內存溢出了。
    -XX:PermSize=512M??
    -XX:NewSize=512m?
    -XX:MaxNewSize=512m?
    -XX:MaxPermSize=512m?
    但下面幾個參數也不能調大,我們一般設置為最大JVM內存的一半。

    楊航收集技術資料,分享給大家

     創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的apache+tomcat配置的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。