Jak skonfigurować i utrzymać wysoką dostępność/grupowanie w Linux

Jak skonfigurować i utrzymać wysoką dostępność/grupowanie w Linux

Duża dostępność (Ha) po prostu odnosi się do jakości systemu do ciągłego działania bez awarii przez długi czas. Rozwiązania HA można wdrożyć za pomocą sprzętu i/lub oprogramowania, a jednym z powszechnych rozwiązań wdrażania HA jest grupowanie.

W obliczeniach klaster składa się z dwóch lub więcej komputerów (powszechnie znanych jako węzły Lub członkowie) te wspólne wykonanie zadania. W takiej konfiguracji tylko jeden węzeł zapewnia usługi z węzłami drugorzędnymi przejmującymi, jeśli się nie powiedzie.

Klastry dzielą się na cztery główne typy:

  • Składowanie: Podaj spójny obraz systemu plików na serwerach w klastrze, umożliwiając serwerom jednocześnie odczytanie i zapisanie do jednego udostępnionego systemu plików.
  • Duża dostępność: Wyeliminuj pojedyncze punkty awarii i niepowodzenie usług z jednego węzła klastra do drugiego na wypadek, gdyby węzeł się pojawił.
  • Równoważenie obciążenia: wysyłaj żądania usługi sieciowej do wielu węzłów klastrów w celu zrównoważenia obciążenia żądania między węzłami klastrowymi.
  • Wysoka wydajność: Przeprowadź równoległe lub równoczesne przetwarzanie, pomagając w ten sposób poprawić wydajność aplikacji.

Kolejne szeroko stosowane rozwiązanie do zapewnienia Ha to replikacja (w szczególności replikacje danych). Replikacja jest procesem, w którym jedna lub więcej (wtórna) bazy danych może być przechowywana z synchronizacją z jedną podstawową (lub główną) bazą danych.

Aby skonfigurować klaster, potrzebujemy co najmniej dwóch serwerów. Do celów tego przewodnika użyjemy dwóch serwerów Linux:

  • Node1: 192.168.10.10
  • Node2: 192.168.10.11

W tym artykule zademonstrujemy podstawy wdrażania, skonfigurowania i utrzymania wysokiej dostępności/klastrowania w Ubuntu 16.04/18.04 i Centos 7. Wykazamy, jak dodać usługę Nginx HTTP do klastra.

Konfigurowanie lokalnych ustawień DNS na każdym serwerze

Aby dwa serwery mogły się ze sobą komunikować, musimy skonfigurować odpowiednie lokalne ustawienia DNS w /etc/hosts Plik na obu serwerach.

Otwórz i edytuj plik za pomocą ulubionego edytora wiersza poleceń.

$ sudo vim /etc /hosts 

Dodaj następujące wpisy z rzeczywistymi adresami IP swoich serwerów.

192.168.10.10 Node1.przykład.com 192.168.10.11 Node2.przykład.com 

Zapisz zmiany i zamknij plik.

Instalowanie serwera WWW Nginx

Teraz zainstaluj serwer WWW Nginx za pomocą następujących poleceń.

$ sudo apt Zainstaluj nginx [na ​​Ubuntu] $ sudo yum instaluj epel-release && sudo yum instaluj nginx [na ​​centro 7] 

Po zakończeniu instalacji uruchom usługę Nginx na razie i włącz ją do automatycznego startowania w czasie rozruchu, a następnie sprawdź, czy jest uruchomiony za pomocą polecenia SystemCtl.
W Ubuntu usługa powinna zostać uruchomiona automatycznie natychmiast po zakończeniu pakietu wstępnej konfiguracji, możesz po prostu ją włączyć.

$ sudo systemctl włącz nginx $ sudo systemctl start nginx $ sudo systemCtl Status nginx 

Po uruchomieniu usługi Nginx musimy utworzyć niestandardowe strony internetowe do identyfikacji i testowania operacji na obu serwerach. Zmodyfikujemy zawartość domyślnej strony indeksu Nginx, jak pokazano.

$ echo "Jest to strona domyślna dla węzła1.przykład.com "| sudo tee/usr/share/nginx/html/indeks.html #vps1 $ echo "Jest to strona domyślna dla węzła2.przykład.com "| sudo tee/usr/share/nginx/html/indeks.html #vps2 

Instalowanie i konfigurowanie Corosync i stymulatora

Następnie musimy zainstalować Rozrusznik serca, Corosync, I PC na każdym węźle w następujący sposób.

$ sudo apt Zainstaluj Corosync Pacemaker PCS #ubuntu $ sudo yum instaluj corosync pagemaker pcs #Centos 

Po zakończeniu instalacji upewnij się PC Daemon działa na obu serwerach.

$ sudo systemctl włącz pcsd $ sudo systemctl start pcsd $ sudo systemCtl Status PCSD 

Tworzenie klastra

Podczas instalacji nazywany użytkownikiem systemu „Hacluster” jest tworzone. Musimy więc skonfigurować uwierzytelnianie potrzebne PC. Zacznijmy od utworzenia nowego hasła dla „Hacluster” Użytkownik, musimy użyć tego samego hasła na wszystkich serwerach:

$ sudo passwd hacluster 
Utwórz hasło użytkownika klastra

Następnie, na jednym z serwerów (Node1), uruchom następujące polecenie, aby skonfigurować uwierzytelnianie potrzebne PC.

$ sudo pcs cluster Auth Node1.przykład.com Node2.przykład.com -u hacluster -p hasło_here -Force 
Skonfiguruj uwierzytelnianie na komputery PC

Teraz utwórz klaster i wypełnij go niektórymi węzłami (nazwa klastra nie może przekroczyć 15 znaków, w tym przykładzie użyliśmy ExampleCluster) na serwerze Node1.

$ sudo pcs klaster konfiguracja klastra -Nazwa Examplecluster Node1.przykład.com Node2.przykład.com 
Utwórz klaster na węźle1

Teraz włącz klaster w rozruchu i uruchom usługę.

$ sudo komputerowe klaster Włącz -All $ sudo komputerowy klaster startowy -Alll 
Włącz i uruchom klaster

Teraz sprawdź, czy usługa klastra jest uruchomiona za pomocą następującego polecenia.

$ sudo PCS status lub $ sudo crm_mon -1 
Sprawdź status klastra

Ze wyjścia powyższego polecenia widać, że istnieje ostrzeżenie o nie Stonith urządzenia jeszcze Stonith jest nadal włączony w klastrze. Ponadto nie skonfigurowano żadnych zasobów/usług klastra.

Konfigurowanie opcji klastra

Pierwszą opcją jest wyłączenie Stonith (Lub Zastrzel drugi węzeł w głowie), wdrożenie ogrodzeniowe na Rozrusznik serca.

Ten komponent pomaga chronić Twoje dane przed uszkodzeniem przez równoczesny dostęp. Do celów tego przewodnika wyłączymy go, ponieważ nie skonfigurowaliśmy żadnych urządzeń.

Wyłączyć Stonith, Uruchom następujące polecenie:

$ sudo PCS Set Set Stonith-Enabled = False 

Następnie ignoruj ​​również Kworum Polityka, uruchamiając następujące polecenie:

$ sudo pcs nieruchomość nie jest kwadto-policy = ignoruj 

Po ustawieniu powyższych opcji uruchom następujące polecenie, aby zobaczyć listę właściwości i upewnij się, że powyższe opcje, Stonith i Polityka kworum są wyłączone.

Lista właściwości $ sudo komputer 
Zobacz właściwości klastra

Dodanie usługi zasobów/klastra

W tej sekcji przyjrzymy się, jak dodać zasób klastra. Skonfigurujemy pływający adres IP, który jest adresem IP, który można natychmiast przenieść z jednego serwera do drugiego w tej samej sieci lub centrum danych. Krótko mówiąc, pływający IP jest technicznym powszechnym terminem, używanym dla IPS, które nie są ściśle związane z jednym interfejsem.

W takim przypadku zostanie użyty do obsługi przełączania awaryjnego w klastrze o wysokiej dostępności. Należy pamiętać, że pływające adresy IP nie są tylko w sytuacjach przełączania awaryjnego, mają kilka innych przypadków użycia. Musimy skonfigurować klaster w taki sposób, że tylko aktywny członek klastra „jest właścicielem” lub reaguje na pływający adres IP w danym momencie.

Dodamy dwa zasoby klastra: pływający zasób adresu IP o nazwie „Floating_ip”I zasób dla serwera WWW Nginx o nazwie„http_server".

Pierwszy zacznij od dodania Floating_IP w następujący sposób. W tym przykładzie nasz pływający adres IP to 192.168.10.20.

$ sudo PCS Zasób Utwórz Floating_IP OCF: Heartbeat: iPaddr2 IP = 192.168.10.20 CIDR_NETMASK = 24 OP Interwał monitor = 60S 

Gdzie:

  • Floating_ip: to nazwa usługi.
  • „OCF: Heartbeat: iPaddr2”: informuje stymulator, którego scenariusz użyć, iPadDR2 w tym przypadku, w której przestrzeni nazw znajduje.
  • "OP Interwał monitor = 60”: Poinstruuje stymulator, aby co minutę sprawdzała zdrowie tej usługi, wywołując działanie monitora agenta.

Następnie dodaj drugi zasób, nazwany http_server. Tutaj agent zasobów usługi jest OCF: Heartbeat: nginx.

$ sudo PCS Zasób Utwórz http_server OCF: Heartbeat: nginx configFile = "/etc/nginx/nginx.conf "op Monitor Timeout =" 20s "interal =" 60s " 

Po dodaniu usług klastrowych wydaj następujące polecenie, aby sprawdzić status zasobów.

$ sudo pcs zasoby statusu 
Sprawdź zasoby klastra

Patrząc na wyjście polecenia, dwa dodane zasoby: „Floating_ip” I „Http_server” zostały wymienione. Usługa Floating_IP jest wyłączona, ponieważ węzeł podstawowy działa.

Jeśli masz włączoną zaporę ogniową w swoim systemie, musisz zezwolić na cały ruch Nginx i wszystkie usługi wysokiej dostępności za pośrednictwem zapory w celu właściwej komunikacji między węzłami:

-------------- Centos 7 -------------- $ sudo firewall-cmd --Permanent --add-service = http $ sudo firewall-cmd --Permanent --add-service = wysoka dostępność $ sudo Firewall-CMD--RELOOAD -------------- Ubuntu -------------- $ sudo ufw Zezwalaj na http $ sudo ufw zezwolić na wysoką dostępność $ sudo ufw przeładować 

Testowanie wysokiej dostępności/grupowania

Ostatecznym i ważnym krokiem jest przetestowanie, że nasza konfiguracja wysokiej dostępności działa. Otwórz przeglądarkę internetową i przejdź do adresu 192.168.10.20 Powinieneś zobaczyć domyślną stronę Nginx z Node2.przykład.com Jak pokazano na zrzucie ekranu.

Klaster testowy przed awarią

Aby zasymulować awarię, uruchom następujące polecenie, aby zatrzymać klaster na Node2.przykład.com.

$ sudo pcs klaster zatrzymaj http_server 

Następnie ponownie załaduj stronę 192.168.10.20, Powinieneś teraz uzyskać dostęp do strony internetowej domyślnej Nginx z Node1.przykład.com.

Klaster testowy po awarii

Alternatywnie możesz symulować błąd, mówiąc usłudze, aby zatrzymał się bezpośrednio, bez zatrzymywania klastra w dowolnym węźle, używając następującego polecenia w jednym z węzłów:

 $ sudo crm_resource--resource http_server-Force-Stop 

Następnie musisz uruchomić crm_mon W trybie interaktywnym (domyślnie), w przedziale monitora 2 minut, powinieneś być w stanie zobaczyć, jak klaster to zauważa http_server nie udało się i przenieś go do innego węzła.

Aby usługi klastra działały wydajnie, może być konieczne ustawienie pewnych ograniczeń. Możesz zobaczyć PC Strona Man (Man PCS) dla listy wszystkich poleceń użytkowania.

Aby uzyskać więcej informacji na temat Corosync i stymulatora, sprawdź: https: // clusterLabs.org/

Streszczenie

W tym przewodniku pokazaliśmy podstawy wdrażania, konfigurowania i utrzymywania wysokiej dostępności/klastrowania/replikacji w Ubuntu 16.04/18.04 i Centos 7. Wykazaliśmy, jak dodać usługę Nginx HTTP do klastra. Jeśli masz jakieś przemyślenia do podzielenia się lub pytań, użyj poniższego formularza opinii.