Wpisem tym rozpoczynam serię poświęconą modułowi pozwalającemu na budowę łącza pomiędzy serwerem WWW Apache a serwerem aplikacji JBoss w wersji 5. Postaram się opisać sposób instalacji, kompilacji, konfiguracji, przygotowania do działania.
Oto wpisy poświęcone konfiguracji modułowi mod_cluster
:
- Konfiguracja klastra oparta o moduł mod_cluster — wprowadzenie
- Konfiguracja klastra oparta o moduł mod_cluster — kompilacja modułów
- Konfiguracja klastra oparta o moduł mod_cluster – konfiguracja
Istnieją dwa główne sposoby na które można można udostępnić aplikację webową działającą na JBossie (lub też Tomcacie) w Internecie:
- udostępnić bezpośredni dostęp do serwera aplikacji na którym jest zainstalowana aplikacja
- wykorzystanie odpowiedniego pośrednika, który będzie pośredniczył pomiędzy wywołaniami z Internetu a serwerem aplikacji
Pierwszy sposób jest łatwy do realizacji, ale posiada kilka wad, takich jak:
- brak wsparcia balansowania ruchem (w przypadku konfiguracji z klastrem)
- brak optymalizacji wydajności (np. serwowanie statycznej treści z innych źródeł, bardziej wydajnych niż serwer aplikacji)
- mniejsze bezpieczeństwo (trudniej zabezpieczyć serwer aplikacji z powodu dużej ilości działających usług)
Drugim sposobem jest udostępnienie odpowiednich usług poprzez pośrednika, który będzie przekierowywał połączenia przychodzące do aplikacji na serwerze JBoss. Rozwiązanie takie charakteryzuje się:
- trudniejszą konfiguracją (trzeb skonfigurować zarówno pośrednika jak i serwer aplikacji)
- wsparciem dla balansowania ruchem i failover
- zwiększa bezpieczeństwo (udostępniamy tylko te aplikacje, na jakich nam zależy)
- może zwiększyć wydajność rozwiązania (serwowanie statycznych fragmentów strony z innych źródeł niż serwer aplikacji)
Najczęściej używanym pośrednikiem w przypadku łączenia z JBossem lub Tomcatem jest serwer WWW Apache. W jego przypadku mamy możliwość skorzystania z trzech różnych modułów pozwalających na łączenie się z serwerem aplikacji:
mod_proxy
– szybki i łatwy sposób konfiguracji, ale gorsze wsparcie klastrowaniamod_jk
– zaawansowany moduł z dobrą obsługa klastrów, skomplikowany w konfiguracjimod_cluster
– nowo rozwijany moduł pozwalający na połączenie z serwerem aplikacji
Każdy z tych modułów konfiguruje się inaczej, mają także inne właściwości. Poniżej postaram się przedstawić sposób konfiguracji połączenie pomiędzy serwera Apacha z modułem mod_cluster
a serwerem aplikacji JBoss.
Wymagania minimalne
Moduł mod_cluster
posiada określone wymagania zarówno odnośnie serwera Apache jak JBoss:
- serwer WWW Apache w wersji co najmniej 2.2.8
- serwer JBoss w wersji co najmniej 5.0
Konfiguracja z której ja będę korzystał jest następująca:
- system operacyjny: Red Hat Enterprise Linux 5.5 64bit
- serwer WWW: Apache w wersji 2.2.14 – standardowe jest dostępna wersja 2.2.3, nowszą wersję serwera można pobrać z kanału JBoss EWS for 5Server x86_64
- Java: wersja 1.6.20
- serwer aplikacji JBoss EAP 5 – aby przetestować działanie klastra zostanie utworzony klaster składający się z trzech węzłów
- moduł
mod_cluster
, wersja 1.1.0.CR2
Czym jest moduł mod_cluster
Moduł mod_cluster
odpowiada za przeprowadzenia balansowanie ruchem bazującym o protokół HTTP. Pozwala on na przekierowanie żądań przychodzących do serwera WWW do jednego z węzłów klastra.
W przeciwieństwie do dwóch pozostałych modułów (mod_jk
oraz mod_proxy
) tworzy on dodatkowe połączenie pomiędzy poszczególnymi węzłami klastra a serwerem WWW. Poprzez do połączenie odpowiednia aplikacja po stronie serwera aplikacji informuje moduł mod_cluster
o swojej sytuacji. Wykorzystuje w tym celu zestaw metod, zwanych Mod-Cluster Management Protocol (MCMP). Te dodatkowe informacje pozwalają na duże lepszą integrację serwera WWW z klastrem oraz lepsze zarządzanie przekazywanymi połączeniami.
Zalety mod_cluster
Najważniejsze zalety w stosunku do innych aplikacji odpowiedzialnych za balansowanie ruchem HTTP:
- dynamiczna konfiguracja połączeń z węzłami klastra
- obliczanie współczynników balansowania ruchem po stronie serwera
- kontrola na cyklem życia aplikacji zainstalowanej na klastrze
- opcjonalne użycie protokołu AJP
W następnych częściach przedstawię, w jaki sposób skonfigurować moduł mod_cluster
do pracy z klastrem serwerów JBoss.