PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : tomcat cluster - wie server replizieren?



delany
13.09.07, 07:47
tag zusammen!

ich habe gegooglet, ich habe die mod_jk-doku gelesen, ich habe die suchfunktion des forums benutzt, etc., bin aber bisher zu keiner zufrieden stellenden antwort gekommen...

vllt kann mir ja hier jemand helfen...


ich habe einen apache 2.2.4, der über mod_jk 1.2.23 mit 2 tomcats (5.5.23) verbunden ist und als loadbalancer fungiert. das klappt auch so weit ganz prima...

jetzt möchte ich, dass die tomcats sich automatisch abgleichen, wenn änderungen vorgenommen werden.

ich habe in der tomcat-kolumne gelesen, dass das geht, finde aber leider nirgends einen hinweis, wie... (vllt bin ich aber auch nur zu blöd zum suchen -.-)

würde mich freuen wenn da jemand was hilfreiches zu sagen könnte...

danke im voraus!


/wave

marce
13.09.07, 08:09
jetzt möchte ich, dass die tomcats sich automatisch abgleichen, wenn änderungen vorgenommen werden.
Was verstehst Du konkret darunter? Was soll abgeglichen werden?

delany
13.09.07, 08:18
die tomcats sind ja komplett identisch von aufbau und inhalt her (sollen sich ja schließlich auch gegenseitig "vertreten" können wenn mal einer ausfällt), und ich hätte halt gerne, dass änderungen an dem einen tomcat automatisch für den/die anderen übernommen werden...

marce
13.09.07, 08:23
Ok...

Das hab' ich zwar noch nie gemacht - aber schau Dir mal folgenden Konfig-Abschnitt an:

<Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer"
tempDir="${catalina.base}/war-temp"
deployDir="${catalina.base}/war-deploy/"
watchDir="${catalina.base}/war-listen/"
watchEnabled="true"/>

(http://tomcat.apache.org/tomcat-5.5-doc/cluster-howto.html)

Ansonsten - ich überlege gerade, mir hier 'ne Testinstallation zu machen, das klingt auch für mich interessant...

delany
13.09.07, 08:24
hmpf... ich bin offenbar echt zu blöd zum suchen -.-

vielen dank, schau ich mir mal an!



zur testinstallation:

ist bei mir momentan auch nur auf vmware, als abschlussprojekt für meine ausbildung.
interessant kann ich bestätigen ;)

marce
13.09.07, 08:32
wobei ich bei automaitschen TomCat-Deploys immer vorsichtig bin - das Ding hat manchmal die Angwohnheit, zwar einen Deploy zu machen, wenn sich das war-File ändert aber die Änderungen nicht komplett und vollständig zu übernehmen (zumindest ohne dass auch das work-Verzeichnis gelöscht wird - leider macht er das nicht automatisch...) - neben anderen lustigen Effekten, die manchmal auftreten (404, 500, komisches Verhalten während des Deploys...)

Aus meiner Erfahrung heraus ist gerade für den Deploy die gute, alte Hand-am-Arm-Methode die sicherste - vielleicht haben sie bei der Version hier das aber auch verbessert, wir setzen hier gerade noch 5.5.17 ein, zudem müsste man sich mal anschauen, was der Unterschied bei "neues War-File in webapps" im Gegensatz zu dem Cluster-Deploy ist...

"schön" wäre es aber schon, gerade bei Pools, die > 20 Nodes umfassen, da einen Deploy wirklich automatisiert und sicher ablaufen lassen zu können...

delany
13.09.07, 08:38
hmmm... das wäre natürlich sehr unschön... (das ganze soll schließlich auch irgendwann mal praktisch zum einsatz kommen)

ich werde das einfach mal testen (und gehe optimistischer weise davon aus, dass ich das hin bekomme)... wenn sich etwas entscheidendes auftut, halte ich euch auf dem laufenden...

achso: noch mal danke für die schnelle antwort!

delany
04.10.07, 14:50
kleines update:

tomcat cluster läuft, inkl. session replikation und clusterweitem deployen.

falls interesse besteht kann ich dazu gern noch was posten sobald meine doku fertig ist.

marce
05.10.07, 05:53
Wäre cool - ich kam in letzter Zeit nicht dazu, mich darum zu kümmern, andere Dinge hatten hier Prio...

delany
05.10.07, 11:42
also hier schon mal eine kurze zusammen fassung:

installiert habe ich

- apache 2.2.6
- tomcat 5.5.23
- jdk1.5.0._12 (java global verfügbar)
- mod_jk-1.2.25

wobei der apache und der 1. tomcat auf einer vmware laufen, der 2. tomcat auf einer seperaten.


folgende einträge in die httpd.conf:


# Include Module JK
LoadModule jk_module /modules/mod_jk.so

# Include JkWorkersFile
JkWorkersFile “/opt/apache/workers.properties"
JkLogFile “/opt/apache/logs/mod _jk.log"
JkLogLevel info

#JkMount
JkMount /ordner-webapps/* loadbalancer


die workers.properties im apache-basisverzeichnis erstellen:


# workers.properties
#
ps=/
# Liste der Knoten
worker.list=loadbalancer
# Worker Definition
worker.tomcat1.port=8009
worker. tomcat1.host=localhost
worker. tomcat1.type=ajp13
worker. tomcat1.lbfactor=1
worker. tomcat1.cache_timeout=1800
worker. tomcat1.socket_timeout=1800
worker. tomcat1.recycle_timeout=1800
worker.tomcat2.port=8009
worker. tomcat2.host=192.168.0.102
worker. tomcat2.type=ajp13
worker. tomcat2.lbfactor=1
worker. tomcat2.cache_timeout=1800
worker. tomcat2.socket_timeout=1800
worker. tomcat2.recycle_timeout=1800
worker.loadbalancer.type=lb
worker.loadbalancer.sticky_session=1
worker.loadbalancer.balanced_workers=tomcat1,tomca t2
#
# End workers
#



folgende einträge in die server.xml von tomcat1:


<Eninge name=“Catalina“ defaultHost=“localhost“
debug=“0“ jvmRoute=“tomcat1“>

und entsprechend bei tomcat2:


<Eninge name=“Catalina“ defaultHost=“localhost“
debug=“0“ jvmRoute=“tomcat2“>

(nur für sticky sessions)


dann noch den <cluster>-tag auskommentieren.
wichtig sind folgende punkte:

- im <receiver>-tag muss der tcpListenPort bei allen knoten unterschiedlich sein
- im <deploy>-tag bei tomcat1 watchEnabled="true", bei allen anderen auf false
- wenn das tempDir nicht angegeben ist, funktioniert das hot deployment nicht!


so, ich glaub das waren die knackpunkte... wie gesagt, an einer ausführlichen doku arbeite ich noch


edit:

in der web.xml nicht das <distributable/> vergessen!