Jak skonfigurować i utrzymać wysoką dostępność/grupowanie w Linux
- 3988
- 973
- Natan Cholewa
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 haclusterUtwó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 -ForceSkonfiguruj 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.comUtwó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 -AlllWłą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 -1Sprawdź 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 komputerZobacz 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 statusuSprawdź 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 awariiAlternatywnie 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.
- « Jak sklonować partycję lub dysk twardy w Linux
- Jak skonfigurować klient LDAP do podłączenia uwierzytelniania zewnętrznego »