1.預(yù)期目標
本文將講述如何在Linux下搭建tomcat集群,以及搭建過程中可能的遇到的問題和解決方法,。為簡單起見,,本文演示搭建的集群只有兩個tomact節(jié)點外加一個apache組成,三者將安裝在同一機器上: apache: 安裝路徑:/usr/local/apache2 端口:90 tomcat1: 安裝路徑:/usr/local/apache-tomcat-6.0.33-1 端口:6080 tomcat2: 安裝路徑:/usr/local/apache-tomcat-6.0.33-2 端口:7080 2.所需要軟件列表 apache 當前最新版本:2.2.21 本文采用源碼方式安裝,,源碼包下載地址:http://labs.renren.com/apache-mirror//httpd/httpd-2.2.21.tar.gz 其他版本下載地址參見:http://httpd./download.cgi tomcat 6 當前最新版本:6.0.33 本文使用自解壓的tar.gz包進行安裝,,下載地址:http://labs.renren.com/apache-mirror/tomcat/tomcat-6/v6.0.33/bin/apache-tomcat-6.0.33.tar.gz 其他版本下載地址參見:http://tomcat./download-60.cgi Apache Tomcat Connector (也就是mod_jk) 當前最新版本:JK-1.2.32 本文采用源碼方式安裝,源碼包下載地址:http://www./dist/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.32-src.tar.gz 其他版本下載地址參見:http://tomcat./download-connectors.cgi 3.軟件安裝 3.1 安裝apache 1.進入下載好的httpd-2.2.21.tar.gz文件所在目錄,,執(zhí)行解壓操作: tar -zxvf httpd-2.2.21.tar.gz 2.進入解壓出的文件夾根目錄: cd httpd-2.2.21 3.進行編譯參數(shù)配置: ./configure --prefix=/usr/local/apache2 --enable-mods-shared=all 關(guān)于configure參數(shù)的更多內(nèi)容可參考: http://httpd./docs/2.2/en/programs/configure.html#installationdirectories 4.編譯安裝: make make install 5.啟動和關(guān)閉apache 完成上述步驟后,,apache的安裝就結(jié)束了,,通過下面的命令啟動和關(guān)閉apache: 啟動: /usr/local/apache2/bin/apachectl start 關(guān)閉: /usr/local/apache2/bin/apachectl stop 3.2 關(guān)于在安裝apache過程中報Cannot use an external APR with the bundled APR-util錯誤的解決辦法 有時候,在安裝apache,,執(zhí)行./configure操作時會報這個錯誤,,解決方法是安裝apache2.2.x自身攜帶的apr,方法為: 1.自源碼安裝目錄httpd-2.2.21進入apache2.2.x自帶apr的安裝目錄 cd srclib/apr 2.安裝apr(此處將之安裝在/usr/local/apr下,如果系統(tǒng)中已經(jīng)安裝apr,,可找到安裝目錄進行覆蓋) ./configure --prefix=/usr/local/apr make make install 3.安裝apr-util ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr make make install 4.使用新安裝的apr重新進行apache編譯配置 放回安裝根目錄httpd-2.2.21,,執(zhí)行: ./configure --prefix=/usr/local/apache2 \ --enable-mods-shared=all \ --with-apr=/usr/local/apr \ --with-apr-util=/usr/local/apr-util/bin 3.3 安裝Apache Tomcat Connector(mod_jk) 1.進入下載好的tomcat-connectors-1.2.32-src.tar.gz文件所在目錄,執(zhí)行解壓操作: tar -zxvf tomcat-connectors-1.2.32-src.tar.gz 2.進入解壓出的文件夾下的native子目錄: cd tomcat-connectors-1.2.32-src/native 3.進行編譯參數(shù)配置: ./buildconf.sh ./configure --with-apxs=/usr/local/apache2/bin/apxs \ --with-java-home=$JAVA_HOME --with-java-platform=2 \ --enable-jni 4.編譯安裝: make make install 如果成功結(jié)束,,你可以在/usr/local/apache2/modules/下找到mod_jk.so文件,。 3.4 安裝tomcat 兩次解壓下載到的apache-tomcat-6.0.33.tar.gz文件至/usr/local/,并分別重命名為apache-tomcat-6.0.33-1和apache-tomcat-6.0.33-2 4.集群配置 4.1 配置tomcat 1.修改端口 對 于tomcat配置主要集中在conf/server.xml文件上,。首先,,鑒于是在同一機器上運行兩個tomcat實例,因此,,要對 server.xml中配置的所有端口進行修改,,避免端口被占用,一種簡單而穩(wěn)妥的修改方法是將該文件中出現(xiàn)的所有端口號按一種簡單的規(guī)則統(tǒng)一進行改動,, 比如在原端口號基礎(chǔ)上統(tǒng)一加1000或減1000,。基于這個原則,,apache-tomcat-6.0.33-1的連接端口修改 為:6080,,apache-tomcat-6.0.33-2的連接端口修改為:7080,其他端口配置同樣依照該原則,。 2.開啟tomcat集群支持 同樣是在conf/server.xml文件里,,進行兩處改動: 改動1:為<Engine>設(shè)置jvmRoute 實 際上,在server.xml里就有一段現(xiàn)成的帶jvmRoute的<Engine>配置,,我們可以參考這段配置 為<Engine/>加個jvmRoute就可以了,,對于jvmRoute的取值要特別注意:其值必須于后面要提到的mod_jk的 workers.properties文件中結(jié)點名相一致!由于那個文件中結(jié)點名為tomcat1和tomcat2,因此,,此處我們必須設(shè)定 jvmRoute的值為這兩個值之一,。關(guān)于這一點在tomcat官方關(guān)于Apache Tomcat Connector的文檔 http://tomcat./connectors-doc/webserver_howto/apache.html 也有明確提及。jvmRoute值會出現(xiàn)在由該結(jié)點創(chuàng)建的session id中,,例如:在非集群環(huán)境下,,一個sessionid可能是 “xxxxxxxxx” 的格式,而在集群環(huán)境下,,如果當前結(jié)點的jvmRtomat1oute被配置為tomcat1,那由該結(jié)點生成的sessionid將變成 “xxxxxxxxx.tomat1”格式,,而mod_jk正是依賴于這個節(jié)點后綴實現(xiàn)sticky session的,也就是把所有后綴是tomat1的請求都發(fā)送給tomat1結(jié)點進行處理,。 改動2:在<Engine/>中添加關(guān)于集群的配置 在tomcat官方關(guān)于tomcat集群配置的文檔:http://tomcat./tomcat-6.0-doc/cluster-howto.html 中,,有一份默認配置:
這份默認配置可以滿足大多數(shù)應(yīng)用場景,,因此,,我們只需要將這份配置復(fù)制到<Engine/>中,,tomcat的配置就全部完成了。 4.2 配置apache 打開apache安裝目錄下的conf/httpd.conf文件,,在文件最后追加以下內(nèi)容:
關(guān)于mod_jk配置項的詳細內(nèi)容,,可參考:http://tomcat./connectors-doc/webserver_howto/apache.html 上 述配置中:JkWorkersFile conf/workers.properties 指明由一個workers.properties文件來描述集群結(jié)點的情況,因此,,我們需要創(chuàng)建這個workers.properties文件,,并放置于 conf文件夾下,這個文件的內(nèi)容如下:
到此,所有配置均已完成,,啟動兩個tomcat和apache后,,將某一應(yīng)用同時部署到兩個tomcat中,通過apache訪問這個應(yīng)用,,觀察tomcat后臺打出的日志會發(fā)現(xiàn),,請求被隨機分配給了兩個tomcat交替執(zhí)行。 備注:應(yīng)用程序要為集群所做的準備 1. 在應(yīng)用程序的web.xml中需要加入:<distributable/>元素 2. session中存放的數(shù)據(jù)(如attribute)必須實現(xiàn)序列化,。 參考資源: tomcat官方關(guān)于tomcat集群配置的文檔: http://tomcat./tomcat-6.0-doc/cluster-howto.html tomcat官方關(guān)于Apache Tomcat Connector的文檔 http://tomcat./connectors-doc/webserver_howto/apache.html apache官方關(guān)于apache的安裝文檔 http://httpd./docs/2.2/en/install.html apache官方關(guān)于configure參數(shù)的文檔 http://httpd./docs/2.2/en/programs/configure.html#installationdirectories |
|