Szermierka (informatyka)
Ogrodzenie to proces izolowania węzła klastra komputerowego lub ochrony współdzielonych zasobów, gdy węzeł wydaje się działać nieprawidłowo.
Wraz ze wzrostem liczby węzłów w klastrze rośnie prawdopodobieństwo, że jeden z nich może w pewnym momencie ulec awarii. Uszkodzony węzeł może mieć kontrolę nad współdzielonymi zasobami, które należy odzyskać, a jeśli węzeł działa nieprawidłowo, reszta systemu musi być chroniona. Ogrodzenie może zatem albo wyłączyć węzeł, albo uniemożliwić dostęp do współdzielonej pamięci masowej, zapewniając w ten sposób integralność danych.
Podstawowe koncepcje
Ogrodzenie węzłów (lub ogrodzenie we/wy) to wirtualne „ogrodzenie”, które oddziela węzły, które nie mogą mieć dostępu do współdzielonego zasobu, od tego zasobu. Może oddzielić aktywny węzeł od jego kopii zapasowej. Jeśli kopia zapasowa przekroczy granicę i na przykład spróbuje kontrolować tę samą macierz dyskową co podstawowa, może wystąpić zagrożenie dla danych. Mechanizmy takie jak STONITH mają na celu zapobieganie temu schorzeniu.
Izolowanie węzła oznacza zapewnienie, że nie można już z niego wykonywać operacji we/wy . Ogrodzenie jest zwykle wykonywane automatycznie przez infrastrukturę klastrową, taką jak systemy plików na dyskach współdzielonych , w celu ochrony procesów przed innymi aktywnymi węzłami modyfikującymi zasoby podczas awarii węzła. Mechanizmy wspierające szermierkę, takie jak mechanizm rezerwowania/zwalniania SCSI, istnieją od co najmniej 1985 roku.
Ogrodzenie jest wymagane, ponieważ nie można odróżnić rzeczywistej awarii od tymczasowego zawieszenia . Jeśli wadliwie działający węzeł naprawdę nie działa, nie może wyrządzić żadnych szkód, więc teoretycznie nie jest wymagane żadne działanie (można go po prostu przywrócić do klastra za pomocą zwykłego procesu łączenia). Ponieważ jednak istnieje możliwość, że wadliwie działający węzeł sam uzna resztę klastra za ten, który działa nieprawidłowo, rozszczepienia mózgu i uszkodzenia danych . Zamiast tego system musi zakładać najgorszy scenariusz i zawsze odgradzać się w razie problemów.
Podejścia do ogrodzenia
Istnieją dwie klasy metod ogrodzenia, z których jedna wyłącza sam węzeł, a druga uniemożliwia dostęp do zasobów, takich jak udostępnione dyski. W niektórych przypadkach przyjmuje się, że jeśli węzeł nie odpowiada po określonym czasie, można uznać, że nie działa, chociaż istnieją kontrprzykłady, np. długi okres przywoływania.
Metoda STONITH oznacza „Shoot The Other Node In The Head”, co oznacza, że podejrzany węzeł jest wyłączony lub wyłączony. Na przykład ogrodzenie energetyczne wykorzystuje kontroler mocy do wyłączenia niesprawnego węzła. Węzeł może następnie sam się zrestartować i później dołączyć do klastra. Istnieją jednak podejścia, w których operator jest informowany o konieczności ręcznego restartu węzła.
Podejście do ogrodzenia zasobów uniemożliwia dostęp do zasobów bez wyłączania węzła. Może to obejmować:
- Ogrodzenie z trwałymi rezerwacjami wykorzystuje trwałe rezerwacje SCSI3 do blokowania dostępu do udostępnionej pamięci masowej.
- Ogrodzenie Fibre Channel wyłącza port Fibre Channel
- Global Network Block Device (GNBD), które blokuje dostęp do serwera GNBD
Gdy klaster ma tylko dwa węzły, metoda rezerwowania/zwalniania może być stosowana jako dwuwęzłowy STONITH, przy czym po wykryciu, że węzeł B „zawiódł”, węzeł A wystawi rezerwę i uzyska wszystkie zasoby (np. udostępniony dysk) dla siebie. Węzeł B zostanie wyłączony, jeśli spróbuje wykonać operacje we/wy (na wypadek, gdyby został tymczasowo zawieszony). W węźle B awaria we/wy uruchamia jakiś kod w celu zabicia węzła.
Trwała rezerwacja jest zasadniczo dopasowaniem klucza, więc węzeł, który ma właściwy klucz, może wykonywać operacje wejścia/wyjścia, w przeciwnym razie jego operacja wejścia/wyjścia zakończy się niepowodzeniem. Dlatego wystarczy zmienić klucz w przypadku awarii, aby zapewnić prawidłowe zachowanie podczas awarii. Jednak zmiana klucza w uszkodzonym węźle może nie zawsze być możliwa.
STONITH jest łatwiejszą i prostszą metodą do wdrożenia w wielu klastrach, podczas gdy różne podejścia do dzielenia zasobów wymagają specyficznego podejścia do implementacji dla każdej implementacji klastra.