Neustále konfigurácia vysokej dostupnosti a plávajúcich IP v systéme CentOS 7

V tomto článku sa zameriame na konfiguráciu zlyhania konfigurácie z dvoch kalamárov proxy pre používateľov na prístup na internet z podnikovej siete s jednoduchým vyrovnávaním záťaže prostredníctvom služby Round Robin DNS. Na vytvorenie konfigurácie zlyhania vytvoríme klaster HA pomocou keepalived.

HA klaster - Toto je skupina serverov so zabudovanou redundanciou, ktorá je vytvorená na minimalizovanie výpadkov aplikácií v prípade problémov s hardvérom alebo softvérom jedného z členov skupiny. Na základe tejto definície je pre prevádzku klastra HA potrebné implementovať:

  • Kontrola stavu serverov;
  • Automatické prepínanie zdrojov v prípade zlyhania servera;

Obe tieto úlohy umožňujú zachovať si pozornosť. Keepalived - systémový démon v systémoch Linux, ktorý umožňuje organizovať odolnosť voči chybám služby a vyrovnávanie záťaže. Odolnosť voči poruchám sa dosiahne vďaka „plávajúcej“ adrese IP, ktorá sa prepne na záložný server v prípade zlyhania hlavnej. Protokol sa používa na automatické prepínanie adries IP medzi udržovanými servermi VRRP (Virtual Router Redundancy Protocol), je štandardizovaný, opísaný v RFC (https://www.ietf.org/rfc/rfc2338.txt).

obsah:

  • Princípy VRRP
  • Nainštalujte a nakonfigurujte udržiavané na serveri CentOS
  • Keepalived: monitorujte zdravie aplikácií a rozhraní
  • Udržiavané: testovanie zlyhania

Princípy VRRP

Najprv musíte zvážiť teóriu a základné definície protokolu VRRP.

  • VIP - Virtuálna IP, virtuálna IP adresa, ktorá sa v prípade zlyhania môže automaticky prepínať medzi servermi;
  • Master - server, na ktorom je VIP momentálne aktívny;
  • Zálohovanie - servery, na ktoré sa VIP prepne v prípade zlyhania sprievodcu;
  • VRID - Virtual Router ID, servery spojené spoločnou virtuálnou IP (VIP) tvoria tzv. Virtuálny router, ktorého jedinečný identifikátor preberá hodnoty od 1 do 255. Server sa môže súčasne skladať z niekoľkých VRID s jedinečnými virtuálnymi IP adresami pre každý VRID..

Všeobecný algoritmus práce:

  • Hlavný server odošle pakety VRRP na rezervovanú adresu multicastového vysielania (multicast) 224.0.0.18 s určeným intervalom a všetky podradené servery túto adresu počúvajú. Multicastová korešpondencia je, keď je odosielateľom jeden a môže byť veľa príjemcov.
    Je dôležité. Aby servery fungovali v režime multicast, musí sieťové zariadenie podporovať prenos prenosu multicast.
  • Ak server Slave neprijme pakety, spustí procedúru výberu Master a ak sa prioritne prepne do stavu Master, aktivuje VIP a jedy bezdôvodné ARP. Gratuitous ARP je špeciálny druh odpovede ARP, ktorá aktualizuje tabuľku MAC pripojených prepínačov, aby vás informovala o zmene vlastníctva virtuálnej adresy IP a adresy makra na presmerovanie prenosu..

Nainštalujte a nakonfigurujte udržiavané na serveri CentOS

Inštalácia a konfigurácia sa vykonajú na príklade servery proxy-serv01 a proxy-serv02 na Centos 7 s nainštalovaným Squid. V našej schéme použijeme najjednoduchší spôsob vyrovnávania záťaže (vyrovnávanie) - Round Robin DNS. Táto metóda predpokladá, že pre jedno meno je v DNS zaregistrovaných niekoľko adries DNS a klienti na požiadanie dostávajú jednu adresu súčasne, potom druhú. Preto budeme potrebovať dve virtuálne adresy IP, ktoré budú zaregistrované v DNS s rovnakým menom a ktoré klienti nakoniec kontaktujú. Schéma siete:

Každý server Linux má dve fyzické sieťové rozhrania: eth1 s bielou IP adresou a prístupom na internet a eth0 v lokálnej sieti.

Ako skutočné adresy IP servera sa používajú:
192.168.2.251 - pre proxy-server01
192.168.2.252 - pre proxy-server02

Nasledujúce sa používajú ako virtuálne adresy IP, ktoré sa v prípade zlyhania automaticky prepínajú medzi servermi:
192.168.2.101
192.168.2.102

Je dôležité. Pri nastavovaní VRRP sa skutočná adresa servera nepoužíva ako adresa pre virtuálnu IP, pretože v prípade zlyhania sa jeho adresa presunie na susednú a po obnovení sa izoluje od siete. Ide o to, že ak chcete vrátiť svoju adresu, musíte poslať paket do siete VRRP, ale nebude existovať žiadna adresa IP, z ktorej sa dá vykonať..

Nainštalujte balík keepalived na oba servery pomocou príkazu:

yum inštalácia keepalived

Po dokončení inštalácie na oboch serveroch upravte konfiguračný súbor

/etc/keepalived/keepalived.conf

Farebné zvýraznené čiary s rôznymi parametrami:

na serveri proxy-serv01na serveri proxy-serv02

Budeme analyzovať možnosti podrobnejšie:

  • vrrp_instance - Časť definujúca inštanciu VRRP;
  • stav - počiatočný stav pri štarte;
  • rozhranie - rozhranie, na ktorom bude VRRP bežať;
  • virtual_router_id - jedinečný identifikátor inštancie VRRP sa musí zhodovať na všetkých serveroch;
  • priorita - nastaví prioritu pri výbere MASTER, server s najvyššou prioritou sa stane MASTER;
  • virtual_ipaddress - blok virtuálnych IP adries, ktoré budú aktívne na serveri v stave MASTER. Musí sa zhodovať na všetkých serveroch v inštancii VRRP.
poznámka. Nájdete veľa príkladov, v ktorých sa používa možnosť VRRP overenie pravosti. Avšak v dokumentácii keepalived uvádza sa, že autentifikácia bola odstránená z VRRPv2 v špecifikácii RFC3768 (https://tools.ietf.org/html/rfc3768) v roku 2004, pretože neposkytovala skutočnú bezpečnosť. Odporúča sa vyhnúť použitiu tejto možnosti..

Ak aktuálna konfigurácia siete neumožňuje multicast, keepalived má možnosť použiť unicast, t. posielať pakety VRRP priamo na servery uvedené v zozname. Ak chcete používať službu unicast, budete potrebovať možnosti:

  • unicast_src_ip - zdrojová adresa paketov VRRP;
  • unicast_peer - blok IP adries serverov, na ktoré budú zasielané pakety VRPP.

Naša konfigurácia teda definuje dve inštancie VRRP, proxy_ip1 a proxy_ip2. Počas normálnej prevádzky bude server proxy-serv01 MASTER pre virtuálnu IP 192.168.2.101 a BACKUP pre 192.168.2.102 a server proxy-serv02 bude MASTER pre virtuálnu IP 192.168.2.102 a BACKUP pre 192.168.2.101.

Ak je na serveri aktivovaný firewall, musíte pridať permisívne pravidlá pre multicastový prenos a protokol vrrp pomocou iptables:

iptables -A INPUT -i eth0 -d 224.0.0.0/8 -j ACCEPT
iptables -A INPUT -p vrrp -i eth0 -j ACCEPT

Aktivujeme spustenia a spustíme udržovanú službu na oboch serveroch:

systemctl povoliť udržiavané
systemctl začne udržiavať

Po spustení udržovanej služby budú rozhraniam z konfiguračného súboru priradené virtuálne adresy IP. Pozrime sa na aktuálne IP adresy na rozhraní servera eth0:

ip ukážka eth0

Na serveri proxy-serv01:

Na serveri proxy-serv02:

Keepalived: monitorujte zdravie aplikácií a rozhraní

Vďaka protokolu VRRP je možné monitorovať stav servera, napríklad počas úplnej fyzickej poruchy servera alebo sieťového portu na serveri alebo prepínači. Možné sú však aj iné problematické situácie:

  • chyba v službe proxy servera - klienti, ktorí sa dostanú na virtuálnu adresu tohto servera, dostanú v prehliadači správu s chybou, že proxy server nie je k dispozícii;
  • odmietnutie druhého internetového rozhrania - klientom, ktorí sa dostanú na virtuálnu adresu tohto servera, sa v prehliadači zobrazí správa s chybou, že pripojenie nebolo možné nadviazať.

Na vyriešenie vyššie uvedených situácií použijeme nasledujúce možnosti:

  • track_interface - monitorovanie stavu rozhraní; uvedenie inštancie VRRP do stavu FAULT, ak je jedno z uvedených rozhraní v stave DOWN;
  • track_script - monitorovanie pomocou skriptu, ktorý by mal vrátiť 0, ak sa overenie úspešne dokončilo, 1 - ak sa overenie nepodarilo.

Aktualizujte konfiguráciu, pridajte monitorovanie rozhrania eth1 (štandardne inštancia VRRP skontroluje rozhranie, na ktoré je viazaná, t. J. V aktuálnej konfigurácii eth0):

track_interface eth1 

smernice track_script spustí skript s parametrami definovanými v bloku vrrp_script, ktorý má nasledujúci formát:

vrrp_script interval skriptu - frekvencia skriptu, predvolená hodnota 1 sekunda pádu - koľkokrát skript vrátil nenulovú hodnotu, pri ktorej sa prepne do stavu FAULT nárast - koľkokrát skript vrátil nulovú hodnotu, pri ktorej opustí stav FAULT timeout - timeout, kým skript nevráti výsledok, po ktorom vráti nenulovú hodnotu. hmotnosť - hodnota, o ktorú sa zníži priorita servera v prípade prechodu na stav FAULT. Predvolená hodnota je 0, čo znamená, že server sa po neúspešnom vykonaní skriptu prepne do stavu FAULT, koľkokrát je určený parametrom pád.  

Konfigurácia monitorovania chobotnice. Môžete skontrolovať, či je proces aktívny pomocou príkazu:

squid -k kontrola

vytvorenie vrrp_script, s parametrami frekvencie vykonávania každé 3 sekundy. Tento blok je definovaný mimo blokov. vrrp_instance.

vrrp_script chk_squid_service script "/ usr / sbin / squid -k check" interval 3 

Pridajte náš skript na monitorovanie vnútri oboch blokov vrrp_instance:

track_script chk_squid_service

Ak zlyhá Squid proxy služba, virtuálna IP adresa sa prepne na iný server.

Môžete pridať ďalšie akcie keď sa zmení stav servera.

Ak je Squid nakonfigurovaný tak, aby akceptoval pripojenia z ľubovoľného rozhrania, t. http_port 0.0.0.0 128, potom pri prepínaní virtuálnej IP adresy nebudú žiadne problémy, Squid akceptuje pripojenia na novú adresu. Ak sú však nakonfigurované konkrétne adresy IP, napríklad:

http_port 192.168.2.101 128 http_port 192.168.2.102 možná128

potom Squid nebude vedieť, že v systéme sa objavila nová adresa, kde musíte počúvať žiadosti klientov. Na zvládnutie takýchto situácií, keď potrebujete pri prepínaní virtuálnej adresy IP vykonať ďalšie akcie, obsahuje Keepalived možnosť vykonať skript, keď nastane udalosť, keď sa zmení stav servera, napríklad z MASTER na BACKUP alebo naopak. Realizuje sa prostredníctvom možnosti:

upozorniť „cestu k spustiteľnému súboru“

Udržiavané: testovanie zlyhania

Po nastavení virtuálnej adresy IP skontrolujeme, ako správne prebieha spracovanie zlyhania. Prvým testom je simulácia zlyhania jedného zo serverov. Od siete odpojíme interné sieťové rozhranie eth0 servera proxy-serv01, zatiaľ čo zastaví odosielanie paketov VRRP a server proxy-serv02 musí aktivovať virtuálnu IP adresu 192.168.2.101. Výsledok skontrolujeme príkazom:

ip ukážka eth0

Na serveri proxy-serv01:

Na serveri proxy-serv02:

Ako sa očakávalo, server proxy-serv02 aktivoval virtuálnu IP adresu 192.168.2.101. Pozrime sa, čo sa stalo v protokoloch pomocou príkazu:

cat / var / log / messages grep -i keepalived

na serveri proxy-serv01na serveri proxy-serv02
Keepalived_vrrp [xxxxx]: Kernel nahlasuje: interface eth0 DOWN Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Zadanie FAULT STATE Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) odstraňuje VIP VIP protokoly. Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Teraz vo FAULT stave
Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Prechod na MASTER STATE
Keepalived prijíma signál, že rozhranie eth0 je v stave DOWN a prepne inštanciu VRRP proxy_ip1 do stavu FAULT, čím uvoľní virtuálne adresy IP..Keepalived uvedie inštanciu VRRP proxy_ip1 do stavu MASTER, aktivuje adresu 192.168.2.101 na eth0 a pošle bezdôvodný ARP.

A skontrolujeme, že po pripojení rozhrania eth0 na serveri proxy-serv01 k sieti sa virtuálna IP 192.168.2.101 prepne späť..

na serveri proxy-serv01na serveri proxy-serv02
Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) vynútiť nové voľby MASTER Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Prechod do MASTER STATE Keepalived_vrrp [Keepback] VIP. Keepalived_vrrp [xxxxx]: Odosielanie bezdôvodného ARP na eth0 pre 192.168.2.101
Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Prijatý inzerát s vyššou prioritou 255, našich 100 Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) VSTUP DO ZÁLOŽNÉHO ŠTÁTU Keepalived_vrrp [xxxxx]: VRRP__string).
Keepalived prijíma signál na obnovenie rozhrania eth0 a začína nové voľby MASTER pre inštanciu VRRP proxy_ip1. Po prechode do stavu MASTER aktivuje na rozhraní eth0 adresu 192.168.2.101 a pošle bezdôvodný ARP.Keepalived dostane paket vysokej priority pre inštanciu VRRP proxy_ip1 a uvedie proxy_ip1 do stavu BACKUP a uvoľní virtuálne adresy IP.

Druhým testom je simulácia zlyhania externého sieťového rozhrania, preto odpojíme sieťové rozhranie eth1 proxy-serv01 servera od siete. Výsledok kontroly skontrolujeme v protokoloch.

na serveri proxy-serv01na serveri proxy-serv02
Keepalived_vrrp [xxxxx]: jadro nahlasuje: interface eth1 DOWN Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Zadanie FAULT STATE Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) odstraňuje VIP VIP protokoly. Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Teraz vo FAULT stave
Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Prechod do MASTER STATE Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Zadanie MASTER STATE Keepalived_vrrp [xxxxx]: VRRP_Insts. Proxy. Protokol. Keepalived_vrrp [xxxxx]: Odosielanie bezdôvodného ARP na eth0 pre 192.168.2.101
Keepalived prijíma signál, že rozhranie eth1 je v stave DOWN a prepne inštanciu VRRP proxy_ip1 do stavu FAULT, čím uvoľní virtuálne adresy IP..Keepalived uvedie inštanciu VRRP proxy_ip1 do stavu MASTER, aktivuje adresu 192.168.2.101 na eth0 a pošle bezdôvodný ARP.

Tretia kontrola je napodobnením zlyhania služby Squid proxy, preto službu opustite manuálne príkazom: systemctl stop squid Výsledok kontroly skontrolujeme v protokoloch.

na serveri proxy-serv01na serveri proxy-serv02
Keepalived_vrrp [xxxxx]: VRRP_Script (chk_squid_service) zlyhal Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Zadanie FAULT STATE Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1). Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Teraz vo FAULT stave
Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Prechod do MASTER STATE Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Zadanie MASTER STATE Keepalived_vrrp [xxxxx]: VRRP_Insts. Proxy. Protokol. Keepalived_vrrp [xxxxx]: Odosielanie bezdôvodného ARP na eth0 pre 192.168.2.101
Skript na kontrolu aktivity chobotnice proxy zlyhá. Keepalived prepne inštanciu VRRP proxy_ip1 do stavu FAULT a uvoľní virtuálne adresy IP.Keepalived uvedie inštanciu VRRP proxy_ip1 do stavu MASTER, aktivuje adresu 192.168.2.101 na eth0 a pošle bezdôvodný ARP.

Všetky tri kontroly prešli úspešne, udržiavané správne nakonfigurované. V pokračovaní tohto článku nakonfigurujeme klaster HA pomocou Pacemaker a zvážime špecifiká každého z týchto nástrojov..

Konečný konfiguračný súbor /etc/keepalived/keepalived.conf pre server proxy-serv01:

vrrp_script chk_squid_service script "/ usr / sbin / squid -k check" interval 3 vrrp_instance proxy_ip1 state MASTER interface eth0 virtual_router_id 1 priority 255 virtual_ipaddress 192.168.2.101/24 dev eth0 label eth0: 1 track_interface eth1 track_interface eth1  vrrp_instance proxy_ip2 state BACKUP interface eth0 virtual_router_id 2 priority 100 virtual_ipaddress 192.168.2.102/24 dev eth0 label eth0: 2 track_interface eth1 track_script chk_squid_service 

Konečný konfiguračný súbor /etc/keepalived/keepalived.conf pre server proxy-serv02:

vrrp_script chk_squid_service script "/ usr / sbin / squid -k check" interval 3 vrrp_instance proxy_ip1 state BACKUP interface eth0 virtual_router_id 1 priority 100 virtual_ipaddress 192.168.2.101/24 dev eth0 label eth0: 1 track_interface eth1 track_inter   vrrp_instance proxy_ip2 state MASTER interface eth0 virtual_router_id 2 priority 255 virtual_ipaddress 192.168.2.102/24 dev eth0 label eth0: 2 track_interface eth1 track_script chk_squid_service