Tomcat cluster with mod_jk sticky session session replication
Przewodnik o tym jak zrobić klaster złożony z dwóch instacji tomcata połączonego load balancerem apache mod_jk i jak uruchomić replikację sesji oraz sticky-session. System operacyjny to lubuntu 11.10.
Z góry przepraszam, za dość surowe komendy. Nie jest to tutorial krok-po-korku ani książka, żeby rozlegle wszystko opisywać. Jest to tylko ściągawka na przyszłość, lub ekstrakt z tego co trzeba zrobić.
Adres IP należy zmienić z 10.0.0.90 na localhost czy gdzie tam wasz serwerek się znajduje.
Instalacja
Zainstaluj:
Instalacja 1
apt-get install apache2 libapache2-mod-jk2-mod-jk
Utworz katalog:
Folder 1
/tcluster/instance1
Pobierz Tomcata i rozpakuj zawartość do tego katalogu.
Konfiguracja Apache mod_jk
- Utwórz plik
/etc/apache2/workers.properties
:
1 | worker.list=loadbalancer,mystat |
Ważna jest nazwa workera ( worker1 oraz worker2 ) adres IP oraz port.
- Do pliku
/etc/apache2/ports.conf dodaj
:Listen port time 1
Listen 8585
Zmień zawartość pliku /etc/apache2/mods-enabled/jk.conf
na:
1 | JKWorkersFile /etc/apache2/workers.properties |
Dodaj nasłuch na porcie 8585 dla mod_jk. Zmień plik /etc/apache2/sites-enabled/000-default
1 | <VirtualHost *:8585> |
Konfiguracja instancji nr 1:
Zmień plik /tcluster/instance1/conf/server.xml
tak aby przypominał:
1 | ... |
Connectora się odkomentowywuje, jvmRoute trzeba dopisać, pole cluster się odkomentowywuje.
Ściągnij z PSI Probe i umieść go w katalogu webapps. Jest to aplikacja która może się później przydać.
Dodaj użytkowników do tomcata. Zedytuj plik
/tcluster/instance1/conf/tomcat-users.xml
:Tomcat users 1
2
3
4
5<tomcat-users>
...
<role rolename="manager"/>
<user username="admin" password="jakieshaslo" roles="manager"/>
</tomcat-users>Przejdź do katalogu:
/tcluster/instance1/webapps
.
Zmodyfikuj_examples/WEB-INF/web.xml_
dodając distributable:Distributable 1
2
3
4
5<tomcat-users>
...
<role rolename="manager"/>
<user username="admin" password="jakieshaslo" roles="manager"/>
</tomcat-users>
Konfiguracja instancji nr 2:
- Skopiuj zawartość pliku /tcluster/instance1 do /tcluster/instance2
- Zmień plik /tcluster/instance2/conf/server.xml tak aby zmienić:
1 | <Server port="8006" shutdown="SHUTDOWN"> |
Testowanie
Uruchamiamy wszystko:
1 | /etc/init.d/apache start |
Testy przeprowadzić najlepiej za pomocą aplikacji z przykładów:
W moim przypadku jest ona dostępna pod adresem: http://10.0.0.90:8871/examples/servlets/servlet/SessionExample
Mamy trzy porty HTTP:
- 8871 - instancja nr 1
- 8872 - instancja nr 2
- 8585 - load balancer
Po dodaniu jakiegoś aktrybutu sesji i zmianie portu z 8871 na 8872 powinniśmy mieć ten sam SessionID (Sticky-session) oraz te same atrybuty(Replikacja sesji).
Dodatkowa analiza:
- Panel z informacja o mod_jk dostępny pod adresem
http://10.0.0.90:8585/jkstatus
- Probe (narzędzie do monitorowania) dostępne na danej instancji:
http://10.0.0.90:8871/probe
orazhttp://10.0.0.90:8872/probe