Programowanie Współbieżne Klastry i Gridy 1
Klaster komputerowy (ang. cluster) zwany także gronem - grupa połączonych jednostek komputerowych, współpracujących ze sobą w celu udostępnienia zintegrowanego środowiska pracy. (źródło: wikipedia) Komputery wchodzące w skład klastra nazywamy węzłami. 2
Klastry buduje się dla dwóch celów. Klastry wydajnościowe buduje się jako jeden komputer równoległy wiele obecnych superkomputerów zbudowana jest na tej zasadzie Klastry niezawodnościowe klastry pracują jako zespół komputerów dublujących się na wzajem, w razie awarii inne komputery przejmą zadania tego węzła, który przestał działać 3
Klastry wydajnościowe: Nth moduł do NetFilter. Rozkłada obciążenie sieciowe dbając o to by co n-ty pakiet zadanej reguły trafiał do odpowiedniego węzła. Zaletą jest prostota i ogólnodostępność Nie posiada mechanizmów samodiagnozowania Nie wyrównuje obciążenia w sposób dynamiczny. Brak narzędzi do monitorowania stanu węzłów. Brak komunikacji między węzłami 4
Klastry wydajnościowe: LVS Linux Virtual Server Projekt LVS jest rozwinięciem idei budowy klastra w oparciu o translację adresów sieciowych (NAT), np. nth. Zawiera dodatkowo wyspecjalizowany algorytm rozkładania obciążenia Monitoruje stan pracy węzłów Posiada jeden główny serwer kontrolujący resztę Główny serwer rozkłada równomiernie obciążenie przydzielając zadania poszczególnym węzłom, proces ten jest nie widoczny dla klientów, którzy widzą jedynie sam serwer. Więcej informacji http://www.linuxvirtualserver.org/ 5
Klastry wydajnościowe: MOSIX (Multicomputer Operating System for UNIX) został stworzony w oparciu o jądro systemu operacyjnego Unix na zlecenie armii izraelskiej na Uniwersytecie Hebrajskim w Jerozolimie w 1981r. Ponieważ fragmenty kodu nie były "open" więc postanowiono napisać wszystko od zera i tak powstał OpenMosix bazujący na Linuxie. Mosix początkowo był rozwijany na systemie BSD. Został przeniesiony na system Linux w 1999 roku, a w 2002 wydzielił się z niego OpenMosix. 6
Open MOSIX Klastry posiadał swój własny klastrowy system plików o nazwie MosixFS (nazywany tez MFS) Do równoważenia obciążenia procesorów Mosix używał procesu migracji z wywłaszczeniem inicjowanym przez nadawcę. Aby zwiększyć wydajność systemu plików po migracji, był używany algorytm Direct File System Access (DFSA). Ten algorytm pozwalał na bezpośrednia komunikacje z głównym węzłem. 7
Open MOSIX Klastry Używanie OpenMosix'a jest niewskazane w obliczeniach, które korzystają dużo z pamięci dyskowych. Związane jest to z koniecznością przesyłania przez sieć dużej ilości danych. Proces przenoszenia procesów na węzły jest całkowicie automatyczny i przeprowadzany w zależności od ich obciążenia Wymogiem jest aby aplikacja uruchamiana na klastrze miała możliwość pracy współbieżnej. znajduje zastosowanie w symulacjach komputerowych i złożonych obliczeniach. Okazuje się przydatny między innymi przy animacjach 3D i programach sztucznej inteligencji http://openmosix.sourceforge.net/ 8
Open MOSIX + MigShm Klastry MigShm patch do jądra systemu pozwalający na korzystanie z pamięci dzielonej. Był to projekt realizowany przez grupę indyjskich studentek MAASK http://www.krisbuytaert.be/presentations/migshm.pdf Ostatnia wersja na 2.4.26 Projekt OpenMosix został zaniechany 01.03.2008 Prace nad kodem OpenMosix miały być realizowane w ramach projektu LinuxPMI (linuxpmi.org) 9
Klastry wydajnościowe: PVM (Parallel Virtual Machine) Został zaprojektowany i stworzony by umożliwić łączenie komputerów o różnych konfiguracjach sprzętowych w jeden równolegle działający multikomputer. MPI standard na którym bazuje wiele implementacji Message Passing Interface, takich jak OpenMPI czy LAM. Kerrighed ( http://www.kerrighed.org)- powstał, jako wynik projektu badawczego rozpoczętego w 1999 roku. Konfigurowalne globalne szeregowanie procesów, kiedy węzeł jest niedostatecznie obciążony, system dostrzega niezrównoważenie i proces migruje z mocno do niedostatecznie obciążonego węzła 10
Klastry wydajnościowe: OpenSSI http://www.openssi.org ukazał się w 2001 roku bazując na projekcie UnixWare NonStop Cluster, który powstał na bazie systemu Locus. Aktualna (2006) wersja OpenSSI zawiera kilka systemów plików i systemów zarządzania dyskami opartych na otwartym oprogramowaniu (GFS, OpenGFS, Lustre, OCFS, DRSD), rozproszony mechanizm blokowania (OpenDLM - Distributed Lock Manager) i mechanizm migracji pochodzący z systemu Mosix. 11
wydajnościowe: OpenSSI Klastry OpenSSI pozwala dynamicznie równoważyć obciążenie procesorów w klastrze. Mechanizm migracji OpenSSI używa procesu delegacji do obsługi IPC i wywołań systemowych po migracji procesu oraz klastrowy system plików (OCFS) do obsługi dostępu do otwartych plików. Narzędzia w OpenSSI: loadlevel - służy do sterowania równoważenia obciążenia loads - pokazuje obciążenia węzłów migrate - służy do migracji procesów onall - wykonuje program na każdym węźle onnode - wykonuje program na podanym węźle wherepid - pokazują na jakim węźle wykonuje się podany proces 12
Klastry niezawodnościowe: Fake (z ang. nieprawdziwy, podrabiany) stanowi dość ciekawy sposób realizacji systemu niezawodnościowego. W momencie wykrycia awarii serwera głównego serwer zapasowy zaczyna się pod niego podszywać. Do tego celu używa się ARP spoofing uniemożliwiając tym samym rozpoznanie przez węzły faktu zaistnienia awarii. DRBD Projekt DRBD powstał w celu stworzenia systemu mirrorowania systemu plików. Dane zapisywanie lokalnie na komputerze są w tym samym czasie automatycznie wysyłane na drugi komputer. Pozwala to na wykonywanie kopii zapasowych w sposób natychmiastowy. Z utworzonej kopii można skorzystać od razu w wypadku awarii komputera pierwszego. Więcej na 13 http://www.drbd.org/
Klastry niezawodnościowe: High - Availability Linux Project ma na celu stworzenie rozwiązania umożliwiającego wysoką dostępności dla systemów GNU/Linux w oparciu o klustering. Projekt Linux-HA współpracuje także z projektem LVS. Heartbeat - publicznie dostępne oprogramowanie udostępniające podstawowa funkcjonalność pozwalająca tworzyć i zarządzać klastrami wysokiej dostępności w systemie Linux. Połączenie gwarantujące komunikacje, węzły informują się nawzajem, że działają. Jeżeli któryś z węzłów przestaje odpowiadać, pozostałe przejmują jego funkcje do czasu usunięcia usterki. 14
Klastry niezawodnościowe: High Availability w Windows Server 2008 http://www.microsoft.com/windowsserver2008/en/us/highavailability.aspx 15
Systemy plików używane w klastrach, powinny charakteryzować się kilkoma cechami wspólnymi: zwiększona skalowalność równoważenie obciążeń lepsze zarządzanie (zarządzanie systemem klastrowym jest ułatwione dzięki temu, że system jest widziany jako jedna całość) odporność na awarie serwera (zastępowany jest przez inny serwer) odporność na awarie sprzętu (jeżeli padnie część sieci może znajdzie się trasa przez dobrą część). przeźroczystość (użytkownik postrzega klaster jako jeden serwer niezależnie od tego, na jakim elemencie klastra faktycznie pracuje i ile ich jest) niezawodność (węzły są odizolowane od siebie, więc uszkodzenie jednego z nich nie powoduje wystąpienia awarii w innym). 16
Systemy plików używane w klastrach Coda - zaawansowany sieciowy, rozproszony system plików. Jest rozwijany na uniwersytecie Carnegie Mellon od 1987 roku. Ten system plików powstał z AFS wersji 2. Celem systemu Coda jest wysoka dostępność. W przypadku uszkodzenia części sieci serwerów umożliwia dalszą pracę. Może on pracować bez połączenia z siecią. Można korzystać z zasobów będąc od nich odłączonym (korzystając z plików roboczych). Po podłączeniu do sieci aktualizacja danych jest wykonywana automatycznie. Coda cechuje się dobrą skalowalnością. Jest przechowywana na replikowanych serwerach danych. 17
Systemy plików używane w klastrach GFS (ang. Global File System) jest stosunkowo zaawansowanym i dojrzałym systemem plików dla klastrów wysokiej dostępności. Umożliwia on bezpieczny jednoczesny dostęp do plików w trybie do zapisu i odczytu przez wiele węzłów klastra. Charakteryzuje się dobrą skalowalnością i szybkim doprowadzeniem systemu plików po awarii do spójnego stanu. Architektura systemu plików umożliwia wydajne, skalowalne blokowanie plików oraz wybór mechanizmu blokowania. W odróżnieniu od centralnego serwera metadanych, GFS wyklucza powstawanie wąskich gardeł. Jest zgodny ze standardem POSIX. Jest to system plików o zamkniętym źródle. 18
Systemy plików używane w klastrach NFS (ang. Network File System) jest sieciowym, rozproszonym systemem plików zorientowanym na obsługę plików. Został stworzony przez firmę Sun Microsystems, a obecnie jest otwartym protokołem internetowym. Pracuje w środowisku heterogenicznym. Umożliwia współdzielenie systemów plików pomiędzy dowolną liczba komputerów. Każda maszyna może jednocześnie pełnić rolę klienta i serwera oferuje przeźroczystość dostępu (moduł klienta systemu NFS dostarcza lokalnym procesom interfejsu programowania aplikacji, który jest identyczny jak interfejs lokalnego systemu operacyjnego, 19
Systemy plików używane w klastrach NFS Przeźroczystość położenia (przez spójna konfiguracje montowania zdalnych katalogów u klientów), Przeźroczystość wydajności (intensywne wykorzystanie pamięci podręcznych) i migracji. NFS4 oferuje też elementy współbieżności. 20
Systemy plików używane w klastrach Lustre (Linux + Clusters) jest aktywnie rozwijanym systemem. Powstał w 2001 roku w firmie HP, później projekt został przekazany na licencji Open Source. Celem utworzenia tego systemu było doprowadzenie do możliwości bezpiecznego obsłużenia bardzo dużej ilości węzłów w klastrach o wysokiej przepustowości. Do konfiguracji i logowania Lustre wykorzystuje standardy LDAP (ang. Lightweight Directory Access Protocol) i XML (ang. Extensible Markup Language). Dane przechowywane w systemie (specjalne pliki i katalogi) są traktowane jak obiekty. Właściwości obiektów (rozmiar, czas utworzenia, wskaźniki dowiązań symbolicznych, flagi rezerwowe) przechowywane są na serwerach metadanych (MDS). 21
Systemy plików używane w klastrach Lustre Metadane przechowywane są oddzielnie w stosunku do rzeczywistej zawartości obiektów. Serwery metadanych obsługują tworzenie plików, zmiany ich właściwości i są odpowiedzialne za obsługę obszaru nazw plik może być odnaleziony poprzez wysłanie zapytania do serwera metadanych. Wszystkie implementacje Lustre są zgodne ze standardem POSIX 22
Porównanie wybranych 3 Systemów Klastrowych Kerrighed OpenMOSIX OpenSSI Zakres przestrzeni nazw T T/N T Jednolita lista procesów (global ps) T T/N T Globalna statystyka pamięci (global top) i obciążenia procesów T N N Globalny dostęp do urządzeń N N T Jednolita przestrzeń nazw w systemie plików. T T/N T Migracja procesów T T T Migracja wątków T N N Migracja aplikacji wielowątkowych T N T Globalne szeregowanie procesów T T T Konfigurowalność globalnego szeregowania procesów. T N N 23
Porównanie wybranych 3 Systemów Klastrowych Kerrighed OpenMOSIX OpenSSI Migracja procesów używających segmentów pamięci Systemu V T N T Migracja procesów używających semaforów Systemu V N T T Migracja procesów używających łączy T T T Migracja procesów używających gniazd UNIX T T T Migracja procesów używających gniazd INET T T T Dynamiczne dodawanie węzła N T T Dynamiczne usuwanie węzła N T T Zrzucenie migawki procesu N T T Odporność na uszkodzenie węzła T N N Zrzucenie migawki aplikacji wielowątkowej N N N Zrzucenie migawki aplikacji równoległych N N N 24
GRIDY GRID system, który integruje i zarządza zasobami będącymi pod kontrolą różnych domen (od instytucji po system operacyjny) i połączonymi siecią komputerową, używa standardowych, otwartych protokołów i interfejsów ogólnego przeznaczenia (odkrywania i dostępu do zasobów, autoryzacji, uwierzytelniania) oraz dostarcza usług odpowiedniej jakości (QoS, oferuje usługi wyższego poziomu). 25
GRIDY Grid jest takim rozszerzonym klastrem. Główne cechy grida to: rozproszone geograficzne heterogeniczne sprzętowo i programowo dynamiczne (dostępność zmienna w czasie) potencjalnie zawodne posiadane i zarządzane przez różne organizacje różne wymagania i polityki bezpieczeństwa różne polityki zarządzania zasobami połączone heterogeniczną siecią (różne warstwy, protokoły komunikacyjne, topologie) 26
GRIDY Obecnie powstaje sporo sieci gridowych. Choćby: SEE-GRID-2 "South Eastern European Grid-Enabled einfrastructure Development-2" Sieci GRID, znane również jako einfrastruktura, stanowią metodę współużytkowania sieci komputerowych o dużej przepustowości w celu ułatwienia prowadzenia badań, a szczególnie współpracy badawczej. łatwiejsza jest wymiana informacji, w sposób analogiczny do pracy w Internecie, wspólne wykorzystywanie mocy obliczeniowej. Naukowcy z Europy Południowo - Wschodniej zyskują w ten sposób możliwość uruchamiania aplikacji wymagających dużej mocy przetwarzania bądź pojemności składowania, w tym prowadzenia złożonych symulacji komputerowych. 27
GRIDY distributed.net projekt łamania kluczy. Paczki danych klienci, rozproszone obliczenia w wolnym czasie. Np klucz RC5-56 bitowy złamano w 250dni, RC5-64 w 1757dni RC5-72 jest nadal liczony od 2564 dni i przeszukali 0.691% przestrzeni poszukiwań. Wszystkich kluczy jest 4,722,366,482,869,646,000,000 a (stan z 10.12.2009) policzone zostało 32,616,465,628,508,715,000 80 tys. członków z czego około 3 tys. obecnie jest aktywna. W obecnym tempie powinno im to zająć ponad 230tys. dni. Ludzi przyciąga drobna nagroda 10tys $ za złamanie klucza. Z czego 6 bierze dnet. 28
GRIDY SETI@HOME - To też jest jeden z pierwszych projektów od 1999. Uczestniczy w nim ponad 2mln osób. Około 3mln komputerów. Średnia prędkość ok 14Tflopa. Dziennie z teleskopu w Puerto Rico spływa około 50GB danych które są rozsyłane do komputerów na całym świecie. United Devices Cancer Research Project Szukanie lekarstwa na raka. Działa na podobnych zasadach. The Human Proteome Folding Project - Szukanie funkcji wszystkich protein genotypu ludzkiego. Zadanie to jednemu zwykłemu PC zajęło by około 1mln lat. Parabon Computation - http://www.parabon.com/ 29
GRIDY Klaster Holk to najszybszy obecnie superkomputer w Polsce przeznaczony do zastosowań naukowych. Zainstalowana w Centrum Informatycznym Trójmiejskiej Akademickiej Sieci Komputerowej na Politechnice Gdańskiej maszyna przekroczyła granicę wydajności biliona operacji na sekundę, uzyskując w pierwszych dniach stycznia 2006r. wynik 3,225 teraflopów/s w teście HPL(High-Performance Linpack). Składa się obecnie z 288 procesorów Itanium2 dual core 1,4 i wyposażony jest w pamięć operacyjną o pojemności 2304 GB oraz pamięć dyskową 5,8 TB. Spina go sieć InfiniBand 10Gb/s. Pracuje pod kontrolą systemu Debian linux Clusterix klaster zbudowany w sposób rozproszony, łączy kilka ośrodków akademickich za pomocą krajowej sieci optycznej nowej generacji PIONIER Prędkość 4,4 TFLOPS udało się uzyskać dzięki 802 64-bitowych procesorów Intel Itanium 2, oraz systemu operacyjnego Linux. (prędkość może być obecnie większa po upgradzie niektórych komputerów, choćby Holka) <FILM> 30
GRIDY listę 500 najszybszych zamyka wynik 20 teraflopów. A otwiera Jaguar Cray XT5 ponad 224tys rdzeni 5PB pamięci dyskowej opartej na Lustre działającej z prędkością 240GB/s wszystko to daje moc testowaną ponad 1759Tf. a teoretyczną 2331Tf. (http://www.top500.org) dane z 11.2009 Obecnie wśród najszybszych systemów są klastry około 417 MPP 81 Gridy 2 Systemy operacyjne w pierwszej 500. Linux ponad 446 Unix 25 Mieszane 23 Windows 5 BSD 1 31