Rys. 1 Schemat sieciowy klastra. |
Klaster… klaster… klaster… w ogóle co to takiego? I po co to właściwie? Według Wikipedii klastrem komputerowym nazywamy grupę połączonych jednostek komputerowych, które współpracują ze sobą w celu udostępnienia zintegrowanego środowiska pracy. Bazując na definicji z Wikipedii klastrem w tym konkretnym przykładzie można nazwać wiele instancji serwera www, które tworzą jeden wspólny rozproszony serwer www. Uff… definicja już za mną, a teraz druga część pytania, po co to?! Otóż uruchamiając aplikację www na jednym serwerze musimy się liczyć z kilkoma dość poważnymi zagrożeniami. Jeden serwer www po prostu może sobie nie poradzić z odbieraniem i przetwarzaniem dość dużej ilości żądań. Kolejnym przykładem zagrożenia może być fizyczna awaria maszyny. Jeśli serwer przestanie działać, aplikacja natychmiast stanie się niedostępna. Dzięki zastosowaniu klastra wymienione problemy nie mają prawa zaistnieć. Nadesłane żądania będą rozkładana na poszczególne węzły klastra, a w przypadku awarii jednego z węzłów ruch zostanie przekierowany na inny węzeł. Dość gadania… bierzmy się do pracy!
Konfiguracja VirtualBox'a
Pierwszym krokiem jest utworzenie wirtualnej maszyny oraz zainstalowanie na niej systemu operacyjnego Ubuntu 13.10 wersji 32 bitowej. Następnie należy wykonać dwie pełne kopie utworzonej maszyny wirtualnej. Przed uruchomieniem poszczególnych maszyn wirtualnych trzeba ponadto skonfigurować sieć w VirtualBox'ie. Czynność ta dzieli się na dwie części. Pierwsza część dotyczy sprawdzenia globalnych ustawień sieciowych. Musimy się upewnić czy wirtualna sieć VirtualBox Host-Only Ethernet Adapter posiada adres IP: 192.168.56.1 oraz maskę podsieci: 255.255.255.0.File > Preferences... > Network > Host-only Networks > Ikonka śrubokrętu
Rys. 2 Globalne ustawienia wirtualnej sieci. |
Drugą czynnością jaką należy wykonać jest włączenie dla każdej maszyny wirtualnej dodatkowej karty sieciowej w trybie Host-only Adapter.
Prawym przyciskiem myszy na wybranej maszynie wirtualnej > Settings... > Network > Adapter 2
Rys. 3 Ustawienia sieciowe aktywnej maszyny wirtualnej. |
Pamiętajmy aby Promiscuous Mode było ustawiony na Allow All.
Konfiguracja Apache HTTP Serwer
Nareszcie możemy uruchomić naszą pierwszą maszynę wirtualną i przystąpić do konfiguracji serwera www Apache. Generalnie serwer będzie spełniał dwie funkcje:- Równoważenie obciążenia – przekazywanie żądań do mniej zajętych instancji serwera Tomcat.
- Przełączanie po awarii – wykrywanie uszkodzonego węzła i przełączenie ruchu na inną instancję serwera Tomcat.
sudo gedit /etc/hostsZmieniamy jego treść na:
127.0.0.1 localhost 192.168.56.2 apacheKolejnym plikiem, który należy zedytować jest plik /etc/hostname.
sudo gedit /etc/hostnameZmieniamy jego treść na:
apacheNastępnym krokiem w konfiguracji systemu jest edycja pliku /etc/network/interfaces. Plik ten przechowuje ustawienia interfejsów sieciowych. Zmieniamy jego domyślną treść na:
auto eth1 allow-hotplug eth1 iface eth1 inet static address 192.168.56.2 netmask 255.255.255.0 gateway 192.168.56.1 broadcast 192.168.56.255Po tych czynnościach możemy zrestartować maszynę wirtualną.
Nareszcie możemy przejść do instalacji serwera www Apache. Proces ten rozpoczynamy wpisując w konsoli następującą komendę:
sudo apt-get install apache2Postępujemy zgodnie z zaleceniami instalatora. Poprawność instalacji możemy przetestować wpisując w oknie przeglądarki internetowej adres http://localhost. Jeśli naszym oczom ukaże się poniższa treść strony to znak, że serwer www Apache został poprawnie zainstalowany.
Rys. 4 Domyślna strona html serwera Apache. |
Sama instalacja serwera Apache to niestety nie wszystko. Domyślna konfiguracja nie zawiera włączonych wszystkich wymaganych modułów. Aby włączyć niezbędne modułu należy wprowadzić poniższe komendy:
sudo a2enmod proxy sudo a2enmod proxy_ajp sudo a2enmod proxy_balancer sudo a2enmod lbmethod_byrequests sudo service apache2 restartGdy wszystkie moduły zostały poprawnie aktywowane następnym krokiem jest edycja pliku proxy.conf w katalogu /etc/apache2/mods-enabled. Plik ten zawiera szczegółowe ustawienia modułu mod_proxy, dzięki któremu nasz serwer Apache będzie działał jako load balancer przed instancjami serwera Tomcat. Zmieniamy domyślną treść pliku na:
<IfModule mod_proxy.c> ProxyRequests Off ProxyVia Off ProxyPreserveHost On ProxyPass /examples balancer://cluster/examples <Proxy balancer://cluster stickysession=JSESSIONID|jsessionid nofailover=Off scolonpathdelim=On> BalancerMember ajp://192.168.56.3:8009 min=10 max=100 route=tc1 loadfactor=1 BalancerMember ajp://192.168.56.4:8009 min=20 max=200 route=tc2 loadfactor=1 Order Deny,Allow Allow from all </Proxy> <Location /balancer-manager> SetHandler balancer-manager Order Deny,Allow Allow from all </Location> </IfModule>Po tych czynnościach pozostaje nam jeszcze restart serwera Apache.
sudo service apache2 restartPowyższa konfiguracja będzie równoważyć ruch dla zasobu /examples. Warto tutaj wspomnieć, że obciążenie będzie rozkładane równomiernie na dwie instancje Tomcata'a do czasu gdy serwer utworzy dla klienta sesję i wyśle mu znacznik JSESSIONID. Po tym czasie moduł mod_proxy_balancer będzie kierował każde żądanie tego klienta do tej samej instancji Tomcat'a.
Konfiguracja Apache Tomcat 7
Tak jak w przypadku maszyny wirtualnej z serwerem Apache pierwszym krokiem jakim należy wykonać tuż po uruchomieniu świeżego Ubuntu jest konfiguracja nazwy hosta i interfejsów sieciowych. Konfiguracja będzie przebiegała identycznie jak w sekcji wyżej. Pierwszym krokiem jaki należy wykonać jest edycja pliku systemowego /etc/hosts dla dwóch nowych maszyn wirtualnych.sudo gedit /etc/hostsZmieniamy jego treść na:
127.0.0.1 localhost 192.168.56.3 tomcat-aNatomiast dla drugiej maszyny wirtualnej na:
127.0.0.1 localhost 192.168.56.4 tomcat-bKolejnym plikiem, który należy zedytować jest plik /etc/hostname.
sudo gedit /etc/hostnameZmieniamy jego treść na:
tomcat-aNatomiast dla drugiej maszyny wirtualnej na:
tomcat-bNastępnym krokiem w konfiguracji systemów jest edycja pliku /etc/network/interfaces. Zmieniamy jego domyślną treść na:
auto eth1 allow-hotplug eth1 iface eth1 inet static address 192.168.56.3 netmask 255.255.255.0 gateway 192.168.56.1 broadcast 192.168.56.255Natomiast dla drugiej maszyny wirtualnej na:
auto eth1 allow-hotplug eth1 iface eth1 inet static address 192.168.56.4 netmask 255.255.255.0 gateway 192.168.56.1 broadcast 192.168.56.255Po tych czynnościach możemy zrestartować maszyny wirtualne.
Instalacja serwera Apache Tomcat 7 polega na jego pobraniu z oficjalnej strony http://tomcat.apache.org/download-70.cgi oraz rozpakowaniu w wybranym przez nas folderze. Przed uruchomieniem serwera należy upewnić się czy nasz system operacyjny posiada poprawnie zainstalowane środowisko uruchomieniowe Javy. Jeśli pobieranie serwera dobiegło ku końcowi możemy go rozpakować wpisując następującą komendę:
sudo tar -zxvf apache-tomcat-7.0.53.tar.gzPrzed uruchomieniem serwera należy zedytować dwa wpisy w pliku server.xml, który znajdujący się w katalogu apache-tomcat-7.0.53/conf. Czynność tą należy wykonać dla dwóch maszyn wirtualnych. Dla pierwszej maszyny wirtualnej wpisy powinny wyglądać następująco:
... <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> ... <Engine name="Catalina" defaultHost="localhost" jvmRoute="tc1"> ...Natomiast dla drugiej maszyny wirtualnej:
... <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> ... <Engine name="Catalina" defaultHost="localhost" jvmRoute="tc2"> ...UWAGA! parametr jvmRoute musi być unikatowy dla każdego z węzłów klastra.
Po tych czynnościach nie pozostaje nam nic innego jak uruchomienie serwerów Tomcat odpalając skrypt startup.sh.
sudo ./apache-tomcat-7.0.53/bin/startup.shJeśli wszystko przebiegło poprawnie wpisując w oknie przeglądarki adres http://localhost:8080 powinniśmy otrzymać domyślną stronę startową serwera Tomcat.
Rys. 5 Domyślna strona startowa serwera Apache Tomcat 7. |
Load Balancer Manager & Examples
Nadszedł czas aby przetestować nasz klaster. Serwer Apache udostępnia Load Balancer Manager, dzięki któremu możemy weryfikować status poszczególnych węzłów klastra. Jeśli wszystko zadziałało poprawnie powinniśmy otrzymać następujące rezultaty wpisują adresy http://192.168.56.2/balancer-manager oraz http://192.168.56.2/examples/ w pasek przeglądarki.Rys. 6 Balancer Manager. |
Rys. 7 Zasób /examples |
Brak komentarzy:
Prześlij komentarz