這可能是最詳細(xì)完整的tomcat集群配置教程

開(kāi)頭吐槽一下多數(shù)人的博客疗杉,大段配置文件忽略,或者是細(xì)節(jié)不說(shuō)钞翔,導(dǎo)致誤區(qū)太多严卖,走太多彎路

遇到出錯(cuò)不要慌,ctrl+f搜一下布轿,我整合了大多數(shù)都會(huì)遇到的報(bào)錯(cuò)

我配置的tomcat集群是tomcat+apache的版本哮笆,單服務(wù)器的集群模式,多個(gè)服務(wù)器的集群原理相同汰扭,只需要把使用的端口權(quán)限開(kāi)放稠肘,nginx后邊再配置
各個(gè)版本
tomcat-7.0.96
jdk-8u221-linux-x64.tar.gz
CentOS7 簡(jiǎn)易版
tomcat-connectors-1.2.4.6
httpd-2.4.38
經(jīng)過(guò)測(cè)試,jdk1.8版本是可用的萝毛!不用再去找1.6和1.7了O钜酢!笆包!


1.準(zhǔn)備工作

pcre环揽,apr-util,apr庵佣,這三個(gè)是apache需要的環(huán)境
未安裝會(huì)提示apr not found歉胶,apr-util not found, pcre not found的信息
這三個(gè)包編譯缺的依賴諸如gcc秧了,都可以使用yum自動(dòng)安裝跨扮,不用特別去找

安裝pcre-8.42.tar.gz,官網(wǎng)可以下載,注意不要安裝pcre2衡创,apache不識(shí)別的
pcre有點(diǎn)難找帝嗡,所以我給出連接pcre下載連接
我的所有包放在/home/User下,解壓縮命令寫自己的路徑

tar -zxvf pcre-8.42.tar.gz
cd pcre-8.42
./configure --prefix=/usr/local/pcre
make
make install

這里注意璃氢,pcre可以通過(guò)yum安裝和手動(dòng)安裝兩種方式哟玷,如果想卸載yum安裝的pcre,使用rpm -e時(shí)千萬(wàn)記得把/lib64下的libpcre幾個(gè)文件備份一也,或者提前開(kāi)啟ssh巢寡,拷貝其他虛擬機(jī)的。而且椰苟,不同版本虛擬機(jī)的libpcre文件不兼容抑月。

安裝APR

tar -zxvf apr-1.6.5.tar.gz
cd apr-1.6.5
 ./configure --prefix=/usr/local/apr
 make
 make install

安裝APR-util

tar -zxvf apr-util-1.6.1.tar.gz
cd apr-util-1.6.1
 ./configure --prefix=/usr/local/apr-util
 make
 make install

2安裝apache集群與tomcat

tar -zxvf httpd-2.4.38.tar.gz
cd http-2.4.38
./configure --prefix=/usr/local/apache2 --enable-mods-shared=all
make
make install

如果環(huán)境裝好,但是提示不存在舆蝴,請(qǐng)使用以下命令

./configure --prefix=/usr/local/apache2 --enable-mods-shared=all --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/bin --with-pcre=/usr/local/pcre

安裝完成以后谦絮,啟動(dòng)apache,啟動(dòng)apache的目的是生成mod_jk.so這個(gè)文件洁仗,順便看看安裝成功與否

/usr/local/apache2/bin/apachectl start

關(guān)閉:

/usr/local/apache2/bin/apachectl stop

這里給出為apacher注冊(cè)系統(tǒng)服務(wù)

cp /usr/local/http/bin/apachectl /etc/re./d/init.d/httpd
vi httpd
vi httpd
#找到:#!/bin/sh
#另起一行层皱,增加:
# chkconfig: 35 70 30
# description: Apache
注冊(cè)服務(wù): chkconfig --add httpd

注冊(cè)完成,啟動(dòng)服務(wù)就是service httpd start赠潦,不用再帶路徑啟動(dòng)了
啟動(dòng)成功后叫胖,訪問(wèn)ip地址,能看到It works她奥!則成功安裝
第一次使用可能需要打開(kāi)端口外網(wǎng)權(quán)限

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd reload

--permanent的意思是 長(zhǎng)久有效

安裝tomcat-connectors

tar -zxvf tomcat-connectors-1.2.46.tar.gz
cd tomcat-connectors-1.2.46/native
./buildconf.sh
./configure --with-apxs=/usr/local/apache2/bin/apxs --with-java-home=$JAVA_HOME --with-java-platform=2 --enable-jni
make
make install

安裝tomcat

tar -zxvf apache-tomcat-7.0.96.tar.gz
mv apache-tomcat-7.0.96.tar.gz /usr/local/tomcat1
tar -zxvf apache-tomcat-7.0.96.tar.gz
mv apache-tomcat-7.0.96.tar.gz /usr/local/tomcat2

tomcat配置主要集中才conf/server.xml瓮增,里邊集成了大量預(yù)設(shè)的配置,自由注釋方淤,簡(jiǎn)單輕便钉赁。
由于我是單個(gè)主機(jī),所以需要改端口携茂,多個(gè)服務(wù)器的話,就不用改端口诅岩,但記得配置文件端口一一對(duì)應(yīng)


3配置文件項(xiàng)

配置文件默認(rèn)啟動(dòng)兩個(gè)connector讳苦,在ip正確,端口正確吩谦,還連不上鸳谜,如果apache連不到tomcat就注釋上邊的connect,這是某種情況的解決方案

注意自己配置文件里是否啟動(dòng)了兩個(gè)AJP連接式廷,需要?jiǎng)h除一個(gè)

改動(dòng)1:

···
#AJP 端口改為6009咐扭,另一個(gè)改為7009
<Connector port="6009" protocol="AJP/1.3" redirectPort="8443" />
···
# 添加jvmRoute,注意屬性要和workers.properties文件對(duì)應(yīng),另一個(gè)tomcat同理為tomcat2
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">

改動(dòng)2:
在<Engine/>(/是為了markdown排版)中添加關(guān)于集群的設(shè)置

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
        <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="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"/>
        <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
        <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
      </Cluster> 

address中把a(bǔ)uto改為該服務(wù)器的ip蝗肪,這就基本完成tomcat的配置袜爪。接下來(lái)是apache的
進(jìn)入apache安裝目錄下的conf/http.conf文件,文件末尾追加

LoadModule jk_module modules/mod_jk.so
# Specify jk log file.
JkLogFile /var/log/mod_jk.log
JkShmFile /var/log/mod_jk.shm
# Specify jk log level [debug/error/info]JkLogLevel info
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
JkOptions  +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat "%w %V %T"
# Specify workers.properties, this file tell jk:
# how many nodes and where they are.
JkWorkersFile conf/workers.properties
# Specify which requests should handled by which node.
JkMount /* loadbalancer

這里有兩個(gè)注意的點(diǎn)

  1. JkShmFile在低版本沒(méi)用薛闪,高版本需要配置辛馆,不然報(bào)錯(cuò)No JkShmFile defined in httpd.conf
  2. JkMount /* loadbalancer 在老版本的應(yīng)該是 controller,這里先不講豁延,下個(gè)文件講

和http.conf同級(jí)文件夾昙篙,新建workers.properties文件,寫入

worker.list = loadbalancer,tomcat1,tomcat2,status
#========tomcat1========
worker.tomcat1.port=6009
#ajp13 端口號(hào)诱咏,在tomcat下server.xml配置,默認(rèn)8009
worker.tomcat1.host=localhost
#tomcat的主機(jī)地址苔可,如不為本機(jī),請(qǐng)?zhí)顚慽p地址
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 1
#server的加權(quán)比重袋狞,值越高焚辅,分得的請(qǐng)求越多
#========tomcat2========
worker.tomcat2.port=7009
#ajp13 端口號(hào),在tomcat下server.xml配置,默認(rèn)8009
worker.tomcat2.host=localhost
#tomcat的主機(jī)地址硕并,如不為本機(jī)法焰,請(qǐng)?zhí)顚慽p地址
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1
#server的加權(quán)比重,值越高倔毙,分得的請(qǐng)求越多
#----------------------------------------------------------------------
# load balancerworker -負(fù)載均衡控制器
# ---------------------------------------------------------------------
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=tomcat1,tomcat2  #指定分擔(dān)請(qǐng)求的tomcat
worker.loadbalancer.sticky_session=1    #設(shè)置為粘性session
worker.loadbalancer.sticky_session_force=0  #設(shè)置當(dāng)多次請(qǐng)求未響應(yīng)埃仪,請(qǐng)求將轉(zhuǎn)發(fā)
worker.status.type=status

這里注意,過(guò)去版本是controller陕赃,現(xiàn)在我用的是loadbalancer卵蛉,在配置過(guò)程中發(fā)現(xiàn),controller已經(jīng)不被識(shí)別么库,一直報(bào)錯(cuò)說(shuō)不是正確類型
如果日志文件提示Could not get member list for lb worker from map傻丝,這說(shuō)明你ajp13指定的端口和workers文件沒(méi)有對(duì)應(yīng)。

到此诉儒,所有配置完畢
啟動(dòng)兩個(gè)tomcat后葡缰,啟動(dòng)集群

# 未配置服務(wù)啟動(dòng)方式
/usr/local/apache2/bin/apachectl start
# 已配置服務(wù)啟動(dòng)方式
service httpd start

一些PS

多個(gè)服務(wù)器模式需要打開(kāi)端口外網(wǎng)權(quán)限,這里給幾個(gè)例子忱反,具體由你自己的服務(wù)器配置去打開(kāi)端口

firewall-cmd --zone=public --add-port=6009/tcp --permanent
firewall-cmd --zone=public --add-port=7009/tcp --permanent
firewall-cmd --zone=public --add-port=4000-4100/tcp --permanent
firewall-cmd reload

--permanent的意思是 長(zhǎng)久有效


一臺(tái)主機(jī)啟動(dòng)多個(gè)tomcat泛释,注意Connect TCP模式的端口,端口被占用了就不會(huì)啟動(dòng)了

怎么在tomcat掛載項(xiàng)目不是這篇的重點(diǎn)温算,就不寫了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末怜校,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子注竿,更是在濱河造成了極大的恐慌茄茁,老刑警劉巖魂贬,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異裙顽,居然都是意外死亡付燥,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門锦庸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)机蔗,“玉大人,你說(shuō)我怎么就攤上這事甘萧÷茑遥” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵扬卷,是天一觀的道長(zhǎng)牙言。 經(jīng)常有香客問(wèn)我,道長(zhǎng)怪得,這世上最難降的妖魔是什么咱枉? 我笑而不...
    開(kāi)封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮徒恋,結(jié)果婚禮上蚕断,老公的妹妹穿的比我還像新娘。我一直安慰自己入挣,他們只是感情好亿乳,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著径筏,像睡著了一般葛假。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上滋恬,一...
    開(kāi)封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天聊训,我揣著相機(jī)與錄音,去河邊找鬼恢氯。 笑死带斑,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的勋拟。 我是一名探鬼主播遏暴,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼指黎!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起州丹,我...
    開(kāi)封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤醋安,失蹤者是張志新(化名)和其女友劉穎杂彭,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體吓揪,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡亲怠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了柠辞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片团秽。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖叭首,靈堂內(nèi)的尸體忽然破棺而出习勤,到底是詐尸還是另有隱情,我是刑警寧澤焙格,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布图毕,位于F島的核電站,受9級(jí)特大地震影響眷唉,放射性物質(zhì)發(fā)生泄漏予颤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一冬阳、第九天 我趴在偏房一處隱蔽的房頂上張望蛤虐。 院中可真熱鬧,春花似錦肝陪、人聲如沸驳庭。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)嚷掠。三九已至,卻和暖如春荞驴,著一層夾襖步出監(jiān)牢的瞬間不皆,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工熊楼, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留霹娄,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓鲫骗,卻偏偏與公主長(zhǎng)得像犬耻,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子执泰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容