Rozciąganie Pingwina

Zainteresowanie Linuxem w korporacjach rodzi pytania o skalowalność systemu.

Zainteresowanie Linuxem w korporacjach rodzi pytania o skalowalność systemu.

Wiele prawdy jest w stwierdzeniu, że nie skaluje się dobrze, a co najmniej nie odbywa się to równie łatwo jak w przypadku komercyjnych systemów Unix.

Podstawowym problemem w przypadku Linuxa są jego małe możliwości w zakresie obsługi komputerów wieloprocesorowych. Stabilna, produkcyjna wersja jądra (czyli obecnie seria 2.2.x) obsługuje jedynie komputery 4-procesorowe, a sposób implementacji protokołu SMP (Symmetrical Mutliprocessing) jest powszechnie uznawany za jeden ze słabszych elementów systemu. Dopiero wersja jądra 2.4.x, na którą czeka wielu producentów i użytkowni- ków (planowane wprowadzenie opóźniło się niemal o rok), obsługuje maszyny 16-procesorowe. To duży postęp, choć wciąż zbyt mało, by mówić o konkurencyjności Linuxa na rynku komputerów wieloprocesorowych.

Możliwości jądra 2.4

Jądro wersji 2.4 ma kilka nowości związanych bezpośrednio ze skalowaniem Linuxa. Najważniejsze z nich to:

Możliwość wykorzystania 16 procesorów. Architektura wieloprocesorowa jest obsługiwana przez procesory Intel i SPARC. Obecna wersja jądra implementuje specyfikację Intel MP (Multiprocessing) 1.1/1.4.

Obsługa wielokrotnych kontrolerów APIC (Advanced Programmable Interrupt Controller), służących do dystrybucji przerwań w maszynach wieloprocesorowych. Wersja 2.2 obsługiwała jedynie pojedynczy kontroler APIC.

Usługa Logical Volume Manager (LVM) pozwalająca, aby system plików był rozproszony między różnymi dys- kami, co jest bardziej elastyczne niż partycje dyskowe. Podobne mechanizmy są w HP-UX i Tru64 UNIX.

Jądro 2.4 jest całkowicie 64-bitowe, definitywnie usunięto ograniczenia: 4 GB dla pamięci RAM i wielkości plików (dotychczas 2 GB).

Inną istotną nowością jest dynamiczne określanie limitu jednocześnie działających procesów i wątków. Jest to szczególnie istotne w przypadku maszyn wieloprocesorowych. Pozwala na skalowanie w zależności od dostępnych w danej chwili zasobów. Poprzedni, sztywny limit (1024) znacząco zmniejszał wydajność przy dużej liczbie pracujących użytkowników. Teraz limit jest ustalany dynamicznie, a jedynym ograniczeniem jest ilość dostępnej pamięci RAM. Wprowadzono również obsługę kolejnych architektur sprzętowych: Intel IA64 (Itanium - chociaż procesor nie jest jeszcze dostępny na rynku), IBM S/390 i Hitachi SuperH.

Migracja do jądra w wersji 2.4 wydaje się rozwiązaniem oczywistym, jeśli Linux ma być wykorzystywany na maszynach wieloprocesorowych. Należy jednak pamiętać, że jądro 2.4 wymaga aktualizacji kilku kluczowych pakietów z oprogramowaniem. Dotyczy to kompilatora języka C (GCC), zestawu binutils (assembler, linker, obsługa bibliotek współdzielonych) i modutils (narzędzia do zarządzania modułami jądra). W związku z licznymi zmianami w architekturze mogą się również pojawić problemy z aplikacjami działającymi na poziomie jądra systemu (daemons).

Klaster za grosik

Wobec braku możliwości wykorzystania Linuxa na silnych maszynach wieloprocesorowych naturalnym rozwiązaniem jest zastosowanie klastrów jako sposobu skalowania mocy obliczeniowej i/lub sposobu zapewnienia ciągłości pracy systemu.

Pod kątem Linuxa przygotowano pokaźną liczbę rozwiązań klastrowych. Większość rozwiązań nie wymaga specjalnego sprzętu: wystarczą standardowe, dostępne na rynku karty sieciowe, kontrolery SCSI, i zasilacze awaryjne UPS.

Do najpopularniejszych rozwiązań klastrowych dostępnych jako open source należą: Beowulf, Eddie, Kimberlite, Linux Virtual Server i MOSIX.

Beowulf to oprogramowanie do budowy klastrów obliczeniowych, realizujących ideę przetwarzania rozproszonego. Klaster oparty na Beowulf wykorzystano do realizacji obliczeń na potrzeby komputerowych efektów specjalnych do filmu Titanic.

Eddie to rozwiązanie realizujące wysoką dostępność i równoważenie obciążenia w przypadku budowy farm serwerów WWW. Pakiet współpracuje z serwerem internetowym Apache. Jest wyposażony we własny serwer DNS i bramkę HTTP pośredniczącą w komunikacji między klientami a serwerami wchodzącymi w skład farmy.

Bardziej zaawansowanym produktem jest Kimberlite opracowany przez firmę Mission Critical Linux. Ten z kolei jest wyposażony w podstawowe mechanizmy, umożliwiające przejmowanie zadań między serwerami (w przypadku uszkodzenia jednego z nich). Zarządza on obciążeniem zarówno serwerów WWW, aplikacji bazodanowych, jak i serwerów plików NFS. Do komunikacji między węzła- mi Kimberlite potrzebne są: połączenia Ethernet i przez kable szeregowe oraz współdzielona powierzchnia dyskowa. Dla wymagających użytkow- ników jest oferowany Convolo Cluster - komercyjne rozwinięcie bezpłatne-go Kimberlite o większych możliwościach i z wygodnymi narzędziami administracyjnymi.

Linux Virtual Server pozwala budować wirtualne serwery z wielu pojedynczych komputerów. LVS obsługuje dowolną usługę TCP lub UDP, np. HTTP, HTTPS, NNTP, FTP, DNS, POP3, SMTP umożliwiając, by stały się całkowicie "przezroczyste" dla klienta.

MOSIX to oprogramowanie (a właściwie modyfikacja jądra systemu), które umożliwia tworzenie klastrów na najtańszym sprzęcie klasy PC. Często jest wykorzystywany do uruchamiania skalowalnych serwisów WWW. Klastry MOSIX mogą być niestabilne, lecz koszt ich budowy jest niski. W tym przypadku bowiem nie ma szczególnych wymagań co do wyboru kart sieciowych, typu procesora, pamięci RAM czy innych parametrów sprzętowych.

Rozwiązania komercyjne

Większość klastrów open source znajduje się w początkowym stadium rozwoju, dlatego wymagające firmy po-szukują produktów komercyjnych, a zwłaszcza tak ważnego przy budowie klastrów profesjonalnego wsparcia technicznego.

Takim komercyjnym produktem zasługującym na szczególną uwagę jest TurboLinux Cluster Server (TCS). TCS umożliwia zbudowanie klastra, widocznego jako jeden wirtualny komputer, zwiększającego wydajność serwisów internetowych i aplikacji. Co więcej, poszczególne węzły klastra mogą działać pod kontrolą różnych systemów: Linux, Solaris, Windows NT i Windows 2000. TCS jest również wyposażony w specjalne dodatki do zarządzania serwerami Oracle i DB2.

Innym ciekawym, chociaż raczej mało użytecznym w zastosowaniach biznesowych, produktem oferowanym przez tę samą firmę jest TurboLinux EnFuzion. Pozwala on wykorzystać wolne cykle procesorów komputerów działających w sieci lokalnej do zbudowania wirtualnego superkomputera. EnFuzion obsługuje wiele systemów operacyjnych: jako węzły superkomputera mogą pracować zarówno Windows NT 4.0 i 2000, jak i Linux.

Firma Red Hat oferuje natomiast High Availability Server (HAS) - odpowiednio przygotowaną wersję Red Hat 6.2 z pakietem Piranha, służącym do budowy klastrów. Produkt zapewnia równoważenie obciążenia (load balancing), replikację zawartości między węzłami oraz funkcję fault tolerance dla aplikacji opartych na IP. RH HAS jest dostępny bezpłatnie. Odpłatna jest jedynie obsługa serwisowa.

Nowością ostatnich miesięcy jest LifeKeeper for Linux firmy SteelEye. To rozbudowany pakiet do budowy klastrów, zawierający mechanizmy load balancing, failover i application reco- very. Kolejne rozwiązania (m.in. IBM i Siemensa) są zapowiadane na koniec tego roku.