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