Keepalived konfigurira visoku dostupnost i plutajuće IP adrese u CentOS 7

U ovom ćemo članku pogledati konfiguriranje konfiguracije neuspjeha od dva proxyja za lignje kako bi korisnici pristupili internetu iz korporativne mreže jednostavnim balansiranjem opterećenja putem Round Robin DNS-a. Da izgradimo konfiguraciju za odbijanje, stvorit ćemo HA cluster koristeći keepalived.

HA cluster - Ovo je skupina poslužitelja s ugrađenom redundancijom, koja je stvorena da umanji vrijeme zastoja aplikacije u slučaju problema s hardverom ili softverom jednog od članova grupe. Na temelju ove definicije, za rad HA klastera potrebno je provesti sljedeće:

  • Provjera statusa poslužitelja;
  • Automatsko prebacivanje resursa u slučaju kvara poslužitelja;

Oba ova zadatka omogućuju očuvanje klase. Keepalived - sistemski demon na Linux sustavima koji omogućuje organiziranje pogreške u toleriranju usluge i uravnoteženje opterećenja. Tolerancija pogreške postiže se zbog "plutajuće" IP adrese, koja se u slučaju kvara glavne adrese prebacuje na rezervni poslužitelj. Protokol se koristi za automatsko prebacivanje IP adresa između poslužitelja koji upravljaju programima VRRP (Virtual Router Redundancy Protocol), standardiziran je, opisan u RFC-u (https://www.ietf.org/rfc/rfc2338.txt).

sadržaj:

  • Načela VRRP-a
  • Instalirajte i konfigurirajte keepalived na CentOS
  • Keepalived: nadziranje zdravlja aplikacija i sučelja
  • Keepalived: testiranje u slučaju kvara

Načela VRRP-a

Prije svega, morate razmotriti teoriju i osnovne definicije VRRP protokola.

  • VIP - Virtualna IP, virtualna IP adresa koja se u slučaju kvara može automatski prebacivati ​​između poslužitelja;
  • Master - poslužitelj na kojem je VIP trenutno aktivan;
  • Backup - poslužitelji na koje će se VIP prebaciti ako čarobnjak ne uspije;
  • VRID - ID virtualnog usmjerivača, poslužitelji objedinjeni zajedničkim virtualnim IP (VIP) tvore takozvani virtualni usmjerivač, čiji jedinstveni identifikator uzima vrijednosti od 1 do 255. Poslužitelj se može istovremeno sastojati od nekoliko VRID-ova, s jedinstvenom virtualnom IP adresom za svaki VRID.

Opći algoritam rada:

  • Glavni poslužitelj šalje VRRP pakete na rezerviranu adresu emitirane multicast (multicast) adrese 224.0.0.18 s određenim intervalom, a svi podređeni poslužitelji slušaju ovu adresu. Mnogostruko slanje šalje se kada je pošiljatelj jedan, a primatelja može biti mnogo.
    Važno je. Da bi poslužitelji radili u načinu multicast, mrežna oprema mora podržavati prijenos prometa višestrukog prijenosa.
  • Ako Slave poslužitelj ne primi pakete, pokreće postupak odabira glavnog računala i ako se prioritetno prebaci u glavno stanje, aktivira VIP i otrove besplatni ARP. Bez naknade ARP je posebna vrsta ARP odgovora koji ažurira MAC tablicu na povezanim prekidačima kako bi vas obavijestio o promjeni vlasništva nad virtualnom IP adresom i mac adresom za preusmjeravanje prometa.

Instalirajte i konfigurirajte keepalived na CentOS

Instalacija i konfiguracija izvest će se na primjeru proxy-serv01 poslužitelji i proxy serv02 na Centos 7 sa instaliranim lignjem. U našoj ćemo shemi koristiti najjednostavniju metodu balansiranja opterećenja (balansiranje) - Round Robin DNS. Ova metoda podrazumijeva da je za jedno ime u DNS-u registrirano više DNS adresa, a klijenti, na zahtjev, primaju jednu po jednu adresu, a zatim drugu. Stoga će nam trebati dvije virtualne IP adrese koje će biti registrirane u DNS-u s istim imenom i na koje će klijenti s vremenom kontaktirati. Mrežni dijagram:

Svaki Linux poslužitelj ima dva fizička mrežna sučelja: eth1 s bijelom IP adresom i pristupom internetu i eth0 na lokalnoj mreži.

Kao stvarne IP adrese poslužitelja koriste se:
192.168.2.251 - za proxy-server01
192.168.2.252 - za proxy-server02

Sljedeće se koriste kao virtualne IP adrese koje će se automatski prebacivati ​​između poslužitelja u slučaju kvara:
192.168.2.101
192.168.2.102

Važno je. Pri postavljanju VRRP-a, stvarna adresa poslužitelja ne koristi se kao adresa za virtualni IP jer će, u slučaju kvara, njegova adresa biti premještena u susjednu, a nakon obnove bit će izolirana iz mreže. Stvar je u tome da, da biste vratili svoju adresu, morate poslati paket u VRRP mrežu, ali neće biti IP adrese s koje se to može učiniti.

Instalirajte čuvani paket na oba poslužitelja pomoću naredbe:

yum instalirati keepalived

Nakon instalacije na oba poslužitelja, uredite konfiguracijsku datoteku

/etc/keepalived/keepalived.conf

Boje istaknute linije s različitim parametrima:

na proxy-serv01 poslužiteljuna proxy-serv02 poslužitelju

Analiziraćemo opcije detaljnije:

  • vrrp_instance - Odjeljak za određivanje instancije VRRP-a;
  • stanje - početno stanje pri pokretanju;
  • sučelje - sučelje na kojem će se pokrenuti VRRP;
  • virtual_router_id - jedinstveni identifikator VRRP instancije, mora se podudarati na svim poslužiteljima;
  • prioritet - postavlja prioritet pri odabiru MASTER, poslužitelj s najvišim prioritetom postaje MASTER;
  • virtual_ipaddress - blok virtualnih IP adresa koje će biti aktivne na poslužitelju u stanju MASTER. Mora se podudarati na svim poslužiteljima unutar instancije VRRP.
primjedba. Možete pronaći mnogo primjera u kojima se koristi opcija VRRP ovjera. Međutim u dokumentaciji keepalived spominje se da je autentifikacija uklonjena s VRRPv2 u specifikaciji RFC3768 (https://tools.ietf.org/html/rfc3768) 2004. godine, jer nije pružala stvarnu sigurnost. Preporučuje se izbjegavanje korištenja ove opcije..

Ako trenutna mrežna konfiguracija ne dopušta multicast, keepalived ima mogućnost upotrebe jednoračuna, tj. šaljite VRRP pakete izravno na popise određene poslužitelje. Da biste koristili unicast, trebat će vam opcije:

  • unicast_src_ip - adresa izvora za VRRP pakete;
  • unicast_peer - blok IP adresa poslužitelja na koje će se slati VRPP paketi.

Dakle, naša konfiguracija definira dvije VRRP instance, proxy_ip1 i proxy_ip2. Tijekom normalnog rada proxy-serv01 poslužitelj će biti MASTER za virtualni IP 192.168.2.101 i BACKUP za 192.168.2.102, a proxy-serv02 poslužitelj će biti MASTER za virtualni IP 192.168.2.102, a BACKUP za 192.168.2.101.

Ako je vatrozid aktiviran na poslužitelju, tada morate dodati dopuštena pravila za promet višestrukim mrežama i vrrp protokol koristeći iptables:

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

Aktiviramo startapove i pokrećemo uslugu čuvanja sadržaja na oba poslužitelja:

systemctl omogućuju keepalived
systemctl start keepalived

Nakon pokretanja usluge čuvanja sadržaja, virtualnim IP-ovima bit će dodijeljena sučelja iz konfiguracijske datoteke. Pogledajmo trenutne IP adrese na sučelju eth0 poslužitelja:

ip show eth0

Na poslužitelju proxy-serv01:

Na poslužitelju proxy-serv02:

Keepalived: nadziranje zdravlja aplikacija i sučelja

Zahvaljujući VRRP protokolu, moguće je pratiti status poslužitelja, na primjer, tijekom potpunog fizičkog kvara poslužitelja ili mrežnog porta na poslužitelju ili sklopke. No moguće su i druge problematične situacije:

  • pogreška u usluzi proxy poslužitelja - klijenti koji dođu do virtualne adrese ovog poslužitelja dobit će poruku u pregledniku s pogreškom da proxy poslužitelj nije dostupan;
  • odbijanje drugog internetskog sučelja - klijenti koji dođu do virtualne adrese ovog poslužitelja dobit će poruku u pregledniku s pogreškom da se veza ne može uspostaviti.

Za rješavanje gornjih situacija, koristit ćemo sljedeće mogućnosti:

  • track_interface - nadziranje stanja sučelja; stavlja instancu VRRP u stanje FAULT (FAULT) ako je jedno od navedenih sučelja u donjem stanju;
  • track_script - nadgledanje pomoću skripte koja bi trebala vratiti 0 ako je provjera uspješno okončana, 1 - ako provjera nije uspjela.

Ažurirajte konfiguraciju, dodajte praćenje sučelja eth1 (prema zadanom će VRRP instanca provjeriti sučelje na koje je vezano, tj. U trenutnoj konfiguraciji eth0):

track_interface eth1 

direktiva track_script pokreće skriptu s parametrima definiranim u bloku vrrp_script, koji ima sljedeći format:

vrrp_script interval intervala - učestalost skripte, zadani pad od 1 sekunde - broj puta kada je skripta vratila nultu nultu vrijednost, na kojoj se prebacuje u stanje FAULT (porast) - broj puta kada je skripta vratila nultu vrijednost, pri čemu treba izići iz stanja FAUT timeout (FAULT timeout) vremensko ograničenje sve dok skripta ne vrati rezultat, nakon čega se vrati ne-nulta vrijednost. težina - vrijednost kojom će se smanjiti prioritet poslužitelja u slučaju prelaska na stanje FAULT. Zadana vrijednost je 0, što znači da će se poslužitelj prebaciti u stanje FAULT nakon neuspješnog izvršavanja skripte za broj puta određen parametrom pada.  

Konfigurirajte nadzor performansi lignja. Možete potvrditi da je proces aktivan pomoću naredbe:

lignja -k ček

stvoriti vrrp_script, s parametrima učestalosti izvršenja svaka 3 sekunde. Taj se blok definira izvan blokova. vrrp_instance.

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

Dodajte našu skriptu nadzoru, unutar oba bloka vrrp_instance:

track_script chk_squid_service

Sada, ako Squid proxy usluga ne uspije, virtualna IP adresa prebacit će se na drugi poslužitelj.

Možete dodati dodatne radnje kad se promijeni status poslužitelja.

Ako je lignja konfigurirana za prihvaćanje veza s bilo kojeg sučelja, tj. http_port 0.0.0.0 128, tada pri prebacivanju virtualne IP adrese neće biti problema, Lignja će prihvatiti veze na novoj adresi. Ali, ako su konfigurirane određene IP adrese, na primjer:

http_port 192.168.2.101 128 http_port 192.168.2.102pa1212

tada Squid neće znati da se u sustavu pojavila nova adresa u kojoj morate slušati zahtjeve klijenata. Za rješavanje takvih situacija, kada morate izvršiti dodatne radnje pri prebacivanju virtualne IP adrese, keepalived sadrži mogućnost izvršavanja skripte kada se dogodi događaj kada se stanje poslužitelja promijeni, na primjer, iz MASTER u BACKUP ili obrnuto. Provodi ga opcija:

obavijesti "put do izvršne datoteke"

Keepalived: testiranje u slučaju kvara

Nakon postavljanja virtualnog IP-a, provjerit ćemo koliko ispravno dolazi do obrade grešaka. Prvi test je da simulira kvar jednog poslužitelja. Iz mreže isključujemo interno mrežno sučelje eth0 proxy-serv01 poslužitelja, dok on prestaje slati VRRP pakete, a proxy-serv02 poslužitelj mora aktivirati virtualnu IP adresu 192.168.2.101. Rezultat ćemo provjeriti naredbom:

ip show eth0

Na poslužitelju proxy-serv01:

Na poslužitelju proxy-serv02:

Kao što se očekivalo, proxy-serv02 poslužitelj aktivirao je virtualnu IP adresu 192.168.2.101. Pogledajmo što se dogodilo u zapisnicima s naredbom:

mačka / var / log / poruke | grep -i keepalived

na proxy-serv01 poslužiteljuna proxy-serv02 poslužitelju
Keepalived_vrrp [xxxxx]: Kernel izvještava: sučelje eth0 DOWN Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Ulazak u FAULT STATE Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) uklanjanje VIP protokola. Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Sada je u stanju NEOPUSTA
Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Prijelaz na MASTER STATE
Keepalived prima signal da je sučelje eth0 u dolje stanje i postavlja instancu VRRP proxy_ip1 u stanje FAULT, oslobađajući virtualne IP adrese.Keepalived stavlja instancu VRRP proxy_ip1 u stanje MASTER, aktivira adresu 192.168.2.101 na eth0 i šalje bespovratni ARP.

I provjerit ćemo da nakon što se sučelje eth0 na proxy-serv01 poslužitelju spoji na mrežu, virtualni IP 192.168.2.101 će se vratiti natrag.

na proxy-serv01 poslužiteljuna proxy-serv02 poslužitelju
Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) forsira novi MASTER izbor Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Prijelaz na MASTER STATE Keepalived_vrrp [Keepback] VIP. Keepalived_vrrp [xxxxx]: Slanje besplatnog ARP-a na eth0 za 192.168.2.101
Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Primljeni oglas s višim prioritetom 255, naših 100 Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Ulazak u BACKUP STATE Keepalived_vrrp [xxxxx]: VRRPP.
Keepalived prima signal za vraćanje eth0 sučelja i započinje nove MASTER izbore za VRRP instancu proxy_ip1. Nakon prelaska u stanje MASTER aktivira adresu 192.168.2.101 na sučelju eth0 i šalje beskorisni ARP.Keepalived prima paket visokog prioriteta za VRRP instancu proxy_ip1 i stavlja proxy_ip1 u stanje BACKUP i oslobađa virtualne IP adrese.

Drugi test je simulacija neuspjeha vanjskog mrežnog sučelja, jer za to isključujemo vanjsko mrežno sučelje eth1 proxy-serv01 poslužitelja iz mreže. Rezultat provjere provjerit ćemo zapisnicima.

na proxy-serv01 poslužiteljuna proxy-serv02 poslužitelju
Keepalived_vrrp [xxxxx]: Kernel izvještava: sučelje eth1 DOWN Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Ulazak u FAULT STATE Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) uklanjanje protokola VIP-a. Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Sada je u stanju NEOPUSTA
Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Prijelaz na MASTER STATE Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Ulazak u MASTER STATE Keepalived_vrrp [xxxxx]: VRRP_Insts Pro. Keepalived_vrrp [xxxxx]: Slanje besplatnog ARP-a na eth0 za 192.168.2.101
Keepalived prima signal da je eth1 sučelje u donjem stanju i stavlja VRRP instancu proxy_ip1 u stanje NEOPUST, oslobađajući virtualne IP adrese.Keepalived stavlja instancu VRRP proxy_ip1 u stanje MASTER, aktivira adresu 192.168.2.101 na eth0 i šalje bespovratni ARP.

Treća provjera je imitacija neuspjeha proxy usluge Squid, jer ćemo ručno napustiti uslugu sa naredbom: systemctl stop lignje Rezultat provjere provjerit ćemo zapisnicima.

na proxy-serv01 poslužiteljuna proxy-serv02 poslužitelju
Keepalived_vrrp [xxxxx]: VRRP_Script (chk_squid_service) nije uspio Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Ulazak u FAULT STATE Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1). Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Sada je u stanju NEOPUSTA
Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Prijelaz na MASTER STATE Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Ulazak u MASTER STATE Keepalived_vrrp [xxxxx]: VRRP_Insts Pro. Keepalived_vrrp [xxxxx]: Slanje besplatnog ARP-a na eth0 za 192.168.2.101
Skripta provjere aktivnosti lizing proxy-a ne uspijeva. Keepalived stavlja instancu VRRP proxy_ip1 u stanje FAULT, oslobađajući virtualne IP adrese.Keepalived stavlja instancu VRRP proxy_ip1 u stanje MASTER, aktivira adresu 192.168.2.101 na eth0 i šalje bespovratni ARP.

Sve tri provjere uspješno su provedene, keepalived ispravno konfiguriran. U nastavku ovog članka konfigurirat ćemo HA cluster pomoću Pacemakera i razmotriti specifičnosti svakog od ovih alata..

Završna datoteka konfiguracije /etc/keepalived/keepalived.conf za poslužitelj proxy serv01:

vrrp_script chk_squid_service skripta "/ usr / sbin / lignje -k dijelu" interval 3 vrrp_instance proxy_ip1 stanje MASTER sučelje eth0 virtual_router_id 1 prioritet 255 virtual_ipaddress 192.168.2.101/24 dev eth0 label ETH0: 1 track_interface eth1 track_script chk_squid_service  vrrp_instance proxy_ip2 stanje BACKUP sučelje eth0 virtual_router_id 2 prioritet 100 virtualna_ipadress 192.168.2.102/24 dev eth0 label eth0: 2 track_interface eth1 track_script chk_squid_service 

Završna datoteka konfiguracije /etc/keepalived/keepalived.conf za poslužitelj proxy serv02:

vrrp_script chk_squid_service script "/ usr / sbin / squid -k check" interval 3 vrrp_instanca proxy_ip1 stanje BACKUP sučelje eth0 virtual_router_id 1 prioritet 100 virtual_ipaddress 192.168.2.101/24 dev eth0 oznaka eth0: 1 track_interface eth1 track1interface eth1 track1interface eth1 trackface |  vrrp_instanca proxy_ip2 stanje MASTER sučelje eth0 virtual_router_id 2 prioritet 255 virtualna_predstava 192.168.2.102/24 dev eth0 oznaka eth0: 2 track_interface eth1 track_script chk_squid_service