Transcript Clustering
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.