Clustering Technologia klastrowa - architektura łącząca serwery i urządzenia pamięci masowych w celu zwiększenia niezawodności, bezpieczeństwa i wydajności oraz ułatwienia czynności administracyjnych. Urządzenia w systemach klastrowych mogą działać równolegle, a w przypadku awarii jednego z nich przejmować jego funkcje
Cluster Klaster – zbiór węzłów, posiadających wspólny cel. Węzłem może być komputer, w przypadku serwera Jboss, instancja serwera. Jboss a zadania klastra: Umożliwienie tolerancji błędu (achieving fault tolerance) Równoważenie obciążenia poprzez replikacje (load balancing through replication) Dostępność, osiągalność Tolerancja błędu -> dostępność
High availability
Dostępność Dostępność jest proporcją między czasem przez jaki usługa jest udostępniona a czasem odpowiedzi Tolerancja błędu implikuje dostępność , jednak dane o wysokim współczynniku dostępności nie muszą wcale oznaczać poprawnych danych
Opcje clustering’u w JBossie Automatyczne wykrywanie węzłów Failover oraz równoważenie obciążenia dla JNDI RMI (może zostać wykorzystany do zaimplementowania własnych usług w klastrze) Entity Beans Stateful Session Beans Stateless Session Beans Kopiowanie sesji HTTP „Farming” – distributed cluster –wide hot-deployment, zdeployowanie aplikacji na jednym węźle jest „natychmiastowo” widoczne na pozostałych węzłach w klastrze
Koncepcja clustering’u w Jbossie Partycja – fundamentalna koncepcja Jeden węzeł odpowiada jednej instancji serwera W celu budowy klastra, kilka instancji Jboss’a powinno być zgrupowanych w partycje
Koncepcja clustering’u w Jbossie
Koncepcja clustering’u w Jbossie Możliwość dodania do partycji w każdym momencie nowego węzła Instancja serwera, może uczestniczyć w wielu partycjach jednocześnie Zakładamy na razie, że serwer Jbossa jest członkiem tylko jednej partycji Jeśli partycji nie przypisano żadnej nazwy używa ona nazwy domyślnej Implementacja partycji w Jbossie wykorzystuje framework JavaGroups
Koncepcja clustering’u w Jbossie Czasami dla lepszej skalowalności wymagany jest podział partycji na partycje podrzędne, niestety Jboss jeszcze tego nie obsługuje !
Podział partycji na partycje podrzędne Chcielibyśmy skopiować pamięć o stanie stateful session bean. Dla 2 węzłów nie stanowi to problemu.....
Podział partycji na partycje podrzędne A jeśli mielibyśmy do czynienia z 10 węzłami w partycji?? Każdy wierzchołek musiałby przechowywać backup stanów bean’ów pozostałych 9 węzłów Rozwiązanie nieskalowalne!!! Rozwiązaniem jest podział partycji na partycje podrzędne oraz wymiana stanów beanów pomiędzy węzłami partycji podrzędnych
Podział partycji na partycje podrzędne
Zapobieganie awariom (failover) Gdy serwer, któremu zostanie przekazane żądanie będzie miał awarię, żądanie zostanie przekazane innemu serwerowi Co się stanie jeśli serwer, który przekazuje żądania będzie miał awarię?
Zapobieganie awariom (failover) Z pomocą przychodzi protokół RMI RMI (Remote Method Invocation ) jest to protokół pozwalający na zdalne wywoływanie metod w sposób zbliżony do wywoływania obiektów lokalnych, dzięki czemu jego stosowanie zdejmuje z programisty konieczność zapewnienia połączenia pomiędzy dwoma obiektami każdorazowo, gdy wykonywane jest wywoła.nie
Zapobieganie awariom (failover) W bieżącej implementacji, nazwanej HA-RMI, proxy pobierany przez kod klienta posiada listę dostępnych węzłów oraz politykę równoważenia obciążenia (np. round robin, first available)
Automatyczne wykrywanie węzłów W Jbossie nie ma konieczności statycznego definiowania topologii klastra. Kiedy nazwa partycji zostanie ustalona, każdy węzeł może dynamicznie dołączyć do partycji lub ją opuścić. Klient dokonujący wywołań, jest automatycznie informowany nowych członkach klastra Wykrywanie węzłów jest wysoce konfigurowalne, dlatego też może być stosowany dla różnych technologii (LAN, WAN , etc)
Komunikacja w sieci Jboss wykorzystuje framework JavaGroups Podstawową definicją jest tutaj kanał (channel) Kanał jest środkiem, za pomocą którego węzeł może dołączyć do grupy węzłów oraz przesyłać wiadomości w trybie unicast, multicast Na najniższym poziomie istnieje możliwość wyboru korzystania z TCP, UDP lub UDP w trybie multicast
Konfigurowanie klastra plik: server/minimal,default,all/deploy/cluster-service.xml Przykładowe atrybuty:
Konfigurowanie klastra
EJB w klastrze Cdn.