Ich Arbeite recht viel mit der Kombination aus Tomcat und Apache. Dazu benötigt man das das modajp (Ich weiß man kanns auch mit mod proxy machen). Hier mal ein paar Infos die ich mit der Zeit gelernt hab.
Basiskonfiguration
Theoretisch funktioniert der Kram recht easy, und zwar indem man mod_proxy und mod_proxy_balancer einschaltet und folgendes in die httpd.conf einträgt:
ProxyRequests Off
Das verhindert erstmal, das wir offener Proxy spielen, ganz, ganz, ganz, ganz … wichtig. Und nun brauchen wir noch den AJP Connect:
ProxyPass / ajp://127.0.0.1:8009/
Und fertig sind wir, wir haben jetzt einen AJP Connector auf das Loopbackinterface und Port 8009 konfiguriert. Dazu muss natürlich, in der server.xml des Tomcats, folgendes eingetragen sein:
<Connector port=“8009″ protocol=“AJP/1.3″ redirectPort=“8443″ />
Genau, ein AJP Connector.
Also funktioniert das ganze jetzt schon mal. Meiner Erfahrung nach, läuft es aber so einfach, gerade in Hochlastzeiten nicht zufriedenstellend. Deswegen ….
A bisl Tuning
Wir haben eben den ajp connector im Apache gemacht, diesem kann man wenn man mag noch ein paar hilfreiche Optionen mit auf den Weg geben. Getestet mit ein paar Milliarden zugriffen bisher ist folgendes:
ProxyPass / ajp://127.0.0.1:8009/ smax=5 max=20 ttl=10 retry=0 disablereuse=On
Das macht meiner Erfahrung nach die ganze Nummer erheblich stabiler.
Den Connector des Tomcats kann man dazu natürlich auch noch ein bischen anpassen, siehe dazu die Optionen des HTTP Connectors.
Danke für den Tipp mit den ProxyPass Parmatern. Das disablereuse=On deaktiviert das AJP-Connection Pooling. Sind dabei Performance-Verluste zu erwarten? Welchen Grund hat die vollständige Deaktivierung?
Ich konnte bisher keinerlei Einfluß auf die Performance feststellen. Die entsprechenden Seiten haben dabei ein Monitorinh über den Nagios. Das Problem war schlicht und ergreifend, das sich mod ajp schleichend verabschiedet hat. Zuerst kommen hin und wieder Connection Fehler und irgendwann ist keine Connection nach hinten zum Tomcat mehr möglich. Letztens erst wieder festgestellt. Dabei kann ich natürlich nicht genau sagen, ob das ein Distributionsabhängiges Problem ist. Setze CentOS 5.5 ein, das Problem habe ich aber mindestens schon seit 4.x.