Oprogramowanie o wysokiej dostępności

Oprogramowanie o wysokiej dostępności to oprogramowanie używane w celu zapewnienia, że ​​systemy działają i są dostępne przez większość czasu. Wysoka dostępność to wysoki odsetek czasu, przez jaki system działa. Formalnie można go zdefiniować jako (1 – (czas przestoju/czas całkowity))*100%. Chociaż minimalna wymagana dostępność różni się w zależności od zadania, systemy zazwyczaj starają się osiągnąć dostępność na poziomie 99,999% (5-9). Ta cecha jest słabsza niż odporność na awarie , która zazwyczaj ma na celu zapewnienie 100% dostępności, aczkolwiek ze znacznymi kosztami w zakresie ceny i wydajności.

Oprogramowanie o wysokiej dostępności jest mierzone na podstawie jego wydajności w przypadku awarii podsystemu, jego zdolności do wznowienia działania w stanie zbliżonym do stanu systemu w chwili pierwotnej awarii oraz jego zdolności do wykonywania innych zadań mających wpływ na usługi (takich jak oprogramowanie uaktualnienia lub zmiany konfiguracji) w sposób, który eliminuje lub minimalizuje czas przestoju. Aby zmaksymalizować dostępność, wszystkie usterki wpływające na dostępność — sprzętu, oprogramowania i konfiguracji — muszą zostać rozwiązane przez oprogramowanie wysokiej dostępności.

Cechy

Typowe oprogramowanie o wysokiej dostępności zapewnia funkcje, które:

Włącz redundancję sprzętu i oprogramowania : Funkcje te obejmują:

  1. Wykrywanie jednostek sprzętowych i programowych,
  2. Przypisanie tym podmiotom ról aktywnych/rezerwowych,
  3. Wykrywanie uszkodzonych komponentów,
  4. Powiadomienie redundantnych komponentów, że powinny się uaktywnić, oraz
  5. Możliwość skalowania systemu.

Usługa jest niedostępna, jeśli nie może obsłużyć wszystkich kierowanych do niej żądań. Właściwość „skalowania w poziomie” systemu odnosi się do możliwości tworzenia wielu kopii podsystemu w celu zaspokojenia rosnącego zapotrzebowania i efektywnego rozdzielania pracy przychodzącej do tych kopii (równoważenie obciążenia (obliczenia)), najlepiej bez wyłączania systemu . Oprogramowanie o wysokiej dostępności powinno umożliwiać skalowanie w poziomie bez przerywania usługi.

Włącz komunikację aktywny/rezerwowy (zwłaszcza Punkty kontrolne) : aktywne podsystemy muszą komunikować się z podsystemami rezerwowymi, aby upewnić się, że rezerwowy jest gotowy do przejęcia tam, gdzie aktywny został przerwany. Oprogramowanie o wysokiej dostępności może zapewniać abstrakcje komunikacji, takie jak nadmiarowe kolejki komunikatów i zdarzeń, aby pomóc aktywnym podsystemom w tym zadaniu. Ponadto ważna koncepcja zwana „punktami kontrolnymi” dotyczy wyłącznie oprogramowania o wysokiej dostępności. W systemie z punktami kontrolnymi aktywny podsystem identyfikuje wszystkie swoje stany krytyczne i okresowo aktualizuje rezerwę o wszelkie zmiany tego stanu. Pomysł ten jest powszechnie przedstawiany jako rozproszona tablica skrótów – aktywny zapisuje rekordy klucz/wartość do tabeli, a podsystemy aktywny i rezerwowy odczytują z niej. W przeciwieństwie do rozproszonej tablicy skrótów „w chmurze” ( Chord (peer-to-peer) , Kademlia itp.) punkt kontrolny jest w pełni replikowany. Oznacza to, że wszystkie rekordy w tablicy skrótów „punktów kontrolnych” są czytelne, o ile działa jedna kopia. Inna technika, zwana [punktem kontrolnym aplikacji], okresowo zapisuje cały stan programu.

Włącz aktualizacje w ramach usługi : Aktualizacja oprogramowania w ramach usługi to możliwość aktualizacji oprogramowania bez pogarszania jakości usług. Zwykle jest wdrażany w systemach redundantnych poprzez wykonywanie tak zwanej aktualizacji „kroczącej” — modernizację rezerwową, podczas gdy aktywny zapewnia usługę, przełączanie awaryjne, a następnie modernizację starego aktywnego. Kolejną ważną cechą jest możliwość szybkiego powrotu do starszej wersji oprogramowania i konfiguracji, jeśli nowa wersja zawiedzie.

Zminimalizuj opóźnienie w trybie gotowości i zapewnij poprawność działania w trybie gotowości : opóźnienie w trybie gotowości jest definiowane jako czas między momentem aktywacji trybu gotowości a faktycznym świadczeniem usług. „Gorące” systemy rezerwowe to takie, które aktywnie aktualizują stan wewnętrzny w odpowiedzi na aktywne punkty kontrolne systemu, co skutkuje milisekundowymi przestojami. „Zimne” systemy rezerwowe są w trybie offline do momentu awarii aktywnego i zwykle uruchamiają się ponownie ze stanu „podstawowego”. Na przykład wiele rozwiązań w chmurze spowoduje ponowne uruchomienie maszyny wirtualnej na innej maszynie fizycznej, jeśli podstawowa maszyna fizyczna ulegnie awarii. „Zimne” opóźnienie przełączania awaryjnego w trybie gotowości może wynosić od ponad 30 sekund do kilku minut. Wreszcie „ciepły” stan gotowości to nieformalne określenie obejmujące wszystkie uruchomione systemy, które przed uaktywnieniem muszą wykonać pewne wewnętrzne przetwarzanie. Na przykład system rezerwowy może obsługiwać zadania o niskim priorytecie – gdy element aktywny ulegnie awarii, przerywa te zadania i odczytuje stan punktu kontrolnego elementu aktywnego przed wznowieniem działania. Opóźnienia w trybie ciepłej gotowości zależą od ilości danych w punktach kontrolnych, ale zazwyczaj mają kilkusekundowe opóźnienie.

Architektura systemu

Oprogramowanie o wysokiej dostępności może pomóc inżynierom w tworzeniu złożonych architektur systemów, które mają na celu zminimalizowanie zakresu awarii i obsługę określonych trybów awarii. „Normalna” awaria jest definiowana jako taka, która może być obsłużona przez architekturę oprogramowania, podczas gdy awaria „katastroficzna” jest definiowana jako taka, której nie można obsłużyć. Katastrofalna awaria powoduje zatem awarię usługi. Jednak oprogramowanie może nadal znacznie zwiększyć dostępność, automatycznie przywracając stan działania, gdy tylko katastrofalna awaria zostanie usunięta.

Najprostsza konfiguracja (lub „model nadmiarowości”) to 1 aktywny, 1 rezerwowy lub 1+1. Inną powszechną konfiguracją jest N+1 (N aktywnych, 1 rezerwowy), co zmniejsza całkowity koszt systemu dzięki mniejszej liczbie podsystemów rezerwowych. Niektóre systemy wykorzystują model całkowicie aktywny, co ma tę zaletę, że podsystemy „standby” są stale weryfikowane.

Przykład architektury systemu oprogramowania o wysokiej dostępności

Konfiguracje można również definiować za pomocą podsystemów aktywnego, gorącego i zimnego czuwania (lub bezczynności), rozszerzając tradycyjną nomenklaturę „aktywny+standby” do „aktywny+standby+bezczynny” (np. 5+1+1). Zazwyczaj podsystemy „zimnej gotowości” lub „bezczynności” są aktywne dla zadań o niższym priorytecie. Czasami systemy te są zlokalizowane daleko od swojej nadmiarowej pary w ramach strategii zwanej redundancją geograficzną. Ta architektura ma na celu uniknięcie utraty usług spowodowanej fizycznie lokalnymi zdarzeniami (pożar, powódź, trzęsienie ziemi) poprzez oddzielenie nadmiarowych maszyn.

Zaawansowane zasady mogą być określane przez oprogramowanie o wysokiej dostępności w celu odróżnienia oprogramowania od błędów sprzętowych i podejmowania prób opóźnionego w czasie restartu poszczególnych procesów oprogramowania, całych stosów oprogramowania lub całych systemów.

Zastosowanie w przemyśle

W ciągu ostatnich 20 lat sieci telekomunikacyjne i inne złożone systemy oprogramowania stały się istotną częścią działalności biznesowej i rekreacyjnej.

„W tym samym czasie [gdy gospodarka jest w kryzysie] prawie 60% – czyli sześć na 10 firm – potrzebuje 99,999. To cztery dziewiątki lub pięć dziewiątek dostępności i czasu sprawności dla aplikacji biznesowych o znaczeniu krytycznym. A 9% respondentów, czyli prawie jedna na 10 firm, twierdzi, że potrzebuje więcej niż pięć dziewiątek czasu pracy. Oznacza to, że nie ma przestojów. Innymi słowy, musisz mieć naprawdę kuloodporne, odporne na bomby aplikacje i systemy sprzętowe. Więc wiesz, czego używasz? Cóż, jedną rzeczą są klastry o wysokiej dostępności lub droższe i bardziej złożone serwery odporne na awarie”.

Telekomunikacja : Oprogramowanie zapewniające wysoką dostępność jest niezbędnym elementem sprzętu telekomunikacyjnego , ponieważ awaria sieci może spowodować znaczną utratę przychodów przez dostawców usług telekomunikacyjnych, a telefoniczny dostęp do służb ratunkowych jest ważną kwestią związaną z bezpieczeństwem publicznym.

Obrona/wojsko : ostatnio oprogramowanie o wysokiej dostępności znalazło drogę do projektów obronnych jako niedrogi sposób na zapewnienie dostępności pojazdów załogowych i bezzałogowych

Przestrzeń kosmiczna : Oprogramowanie o wysokiej dostępności jest proponowane do użytku ze sprzętem odpornym na promieniowanie w środowiskach kosmicznych. Elektronika utwardzana promieniowaniem jest znacznie droższa i ma niższą wydajność niż sprzęt z półki. Jednak oprogramowanie High Availability działające na jednym lub parze kontrolerów odpornych na promieniowanie może zarządzać wieloma redundantnymi komputerami o wysokiej wydajności, które nie są odporne na promieniowanie, potencjalnie przełączając je i resetując w przypadku awarii.

Używaj w chmurze

Typowe usługi w chmurze zapewniają zestaw komputerów w sieci (typowa maszyna wirtualna) ze standardowym systemem operacyjnym serwera, takim jak Linux. Komputery często mogą bezpłatnie komunikować się z innymi instancjami w tym samym centrum danych (sieć najemców) oraz za opłatą z komputerami zewnętrznymi. Infrastruktura chmurowa może zapewniać proste wykrywanie błędów i ponowne uruchamianie na poziomie maszyny wirtualnej. Ponowne uruchamianie może jednak zająć kilka minut, co skutkuje niższą dostępnością. Ponadto usługi w chmurze nie mogą wykrywać awarii oprogramowania w maszynach wirtualnych. Oprogramowanie o wysokiej dostępności działające w maszynach wirtualnych w chmurze może wykrywać awarie oprogramowania (i maszyn wirtualnych) w ciągu kilku sekund i może korzystać z punktów kontrolnych, aby upewnić się, że rezerwowe maszyny wirtualne są gotowe do przejęcia usługi.

Normy

Service Availability Forum określa standardy wysokiej dostępności uwzględniającej aplikacje.

Zobacz też

Linki zewnętrzne