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.