|
Strona główna Zbieranina Serwisy Porady Projekty Humor sektora IT TODO Nowości Ostatnie zmiany Kontakt Find pages
Set your name in
UserPreferences Referenced by
JSPWiki v2.2.33
|
Apache/Tomcat - budowa klastra przy użyciu Tomcata i ApachaStrona ta przedstawia proste przepisy jak skonfigurować klaster złożony z serwerów Tomcat. Klastrowanie aplikacji w Tomcacie polega (w uproszczeniu) na replikacji sesji pomiędzy poszczególnymi węzłami (nodami) klastra. Replikacja sesji polega na jej serializacji na jednym węźle i deserializacji na pozostałych. Aby serializacja się powiodła, wszystkie atrybuty sesji muszą implementować interfejs java.io.Serializable. Należy więc też brać pod uwagę rozmiar obiektów umieszczanych w sesji - serializacja dużych grafów obiektów może stać się wąskim gardłem klastra. Aby dana aplikacja mogła podlegać klasteryzacji należy dodać do deskryptora web.xml element <distributable/>. Poniższe opracowanie opiera się na integracji apacha i tomcata. Table of ContentsArchitektura systemu
Konfiguracja TomcatówKażdą instancję serwera Tomcat konfigurujemy w identyczny sposób. Różnić się będą jedynie numerem portu AJP Connectora oraz identyfikatorem JVM. Zmiany w pliku server.xml w stosunku do wersji z instalacji: Unikalna wartość atrybutu port w elemencie Server. Wartość ta musi być unikalna w obrębie całego komputera. Jeśli więc uruchamiamy kilka instancji Tomcata na jednej maszynie, to każda z nich musi mieć tutaj inną wartość. <Server port="8005" shutdown="SHUTDOWN"> HTTP Connector nie jest potrzebny i najlepiej zupełnie zakomentować ten element.
<Connector port="*080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="5443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
AJP Connector do którego będzie podłączony Apache. Wartość atrybutu port musi być unikalna w obrębie całego komputera. Jeśli więc uruchamiamy kilka instancji Tomcata na jednej maszynie, to każda z nich musi mieć tutaj inną wartość.
<Connector port="8009"
enableLookups="false" redirectPort="5443" protocol="AJP/1.3" />
Unikalna wartość atrybutu jvmRoute w elemencie Engine. Wartość ta musi być unikalna w obrębie całego klastra, identyfikuje ona konkretny węzeł klastra. <Engine name="Catalina" defaultHost="localhost" jvmRoute="node1"> No i na sam koniec deklaracja samego klastra. Element Cluster musi być zawarty wewnątrz elementu Host.
<Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster">
<ClusterListener className="org.apache.catalina.cluster.session.ClusterSessionListener" />
<ClusterListener className="org.apache.catalina.cluster.session.JvmRouteSessionIDBinderListener" />
<Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"
filter=".*\.gif;.*\.js;.*\.css;.*\.png;.*\.jpeg;.*\.jpg;.*\.htm;.*\.html;.*\.txt;"
primaryIndicator="true" />
<Valve className="org.apache.catalina.cluster.session.JvmRouteBinderValve"
enabled="true" />
</Cluster>
Konfiguracja ApaczaEdytujemy konfigurację hosta wirtualnego w następujący sposób:
<VirtualHost *>
<Location /manager>
SetHandler balancer-manager
</Location>
ServerName tomcat.example.com
ProxyPass /app balancer://cluster stickysession=JSESSIONID
<Proxy balancer://cluster>
BalancerMember ajp://localhost:8009/app route=node1
BalancerMember ajp://localhost:9009/app route=node2
</Proxy>
</VirtualHost>
Podana wyżej, podstawowa konfiguracja klastra działa jak następuje:
|
||||||