Magas rendelkezésre állás és lebegő IP-k folyamatos konfigurálása a CentOS 7-ben

Ebben a cikkben megvizsgáljuk a feladatátvételi konfiguráció konfigurálását két tintahal-proxykből, hogy a felhasználók a vállalati hálózatból elérhessék az internetet egyszerű terheléselosztással a Round Robin DNS segítségével. Feladatátvételi konfiguráció létrehozásához egy HA fürtöt hozunk létre a következő felhasználással: keepalived.

HA klaszter - Ez egy beágyazott redundanciával rendelkező kiszolgálók csoportja, amelyet úgy alakítottak ki, hogy minimalizálják az alkalmazás leállását, amikor a csoport egyik tagja hardverrel vagy szoftverrel küszködik. Ezen meghatározás alapján a HA klaszter működéséhez a következőket kell végrehajtani:

  • A szerverek állapotának ellenőrzése;
  • Erőforrások automatikus váltása szerver hiba esetén;

Mindkét feladat lehetővé teszi a továbbélést. Keepalived - egy rendszerdémon Linux rendszereken, amely lehetővé teszi a szolgáltatás hibatűrését és a terheléselosztást. A hibatolerancia a „lebegő” IP-cím miatt érhető el, amely a fő-cím meghibásodása esetén a biztonsági mentési szerverre vált. A protokollt az IP-címek automatikus váltására használják a megőrzött kiszolgálók között VRRP (Virtuális útválasztó redundancia protokoll), szabványosítva, leírva az RFC-ben (https://www.ietf.org/rfc/rfc2338.txt).

Tartalom:

  • VRRP alapelvek
  • Telepítse és konfigurálja a folyamatosan kezelt CentOS-on
  • Keepalived: figyelemmel kíséri az alkalmazás és az interfész állapotát
  • Keepalived: feladatátvételi tesztelés

VRRP alapelvek

Először is figyelembe kell vennie a VRRP elméletét és alapvető meghatározásait.

  • VIP - virtuális IP, virtuális IP-cím, amely hiba esetén automatikusan válthat a szerverek között;
  • Master - a szerver, amelyen a VIP jelenleg aktív;
  • Biztonsági mentés - szerverek, amelyekre a VIP átvált, ha a varázsló megbukik;
  • VRID - Virtuális útválasztó azonosító, a közös virtuális IP-vel (VIP) egyesített szerverek alkotják az úgynevezett virtuális útválasztót, amelynek egyedi azonosítója 1 és 255 közötti értéket vesz fel. A szerver egyidejűleg több VRID-ből állhat, egyedi virtuális IP-címekkel minden egyes VRID-hez.

A munka általános algoritmusa:

  • A főkiszolgáló megadott időközönként elküldi a VRRP csomagokat a fenntartott multicast (multicast) sugárzási címre a 224.0.0.18 címre, és minden szolgakiszolgáló hallgatja ezt a címet. A csoportos küldés akkor történik, amikor a feladó egy, és sok címzett is lehet.
    Fontos. Ahhoz, hogy a szerverek multicast módban működjenek, a hálózati eszközöknek támogatniuk kell a multicast forgalom továbbítását.
  • Ha a Slave szerver nem fogad csomagokat, akkor elindítja a Mester kiválasztási eljárást, és ha prioritásként vált a Mester állapotba, aktiválja a VIP-t és mérgezi ingyenes ARP. Az ingyenes ARP egy speciális ARP válasz, amely frissíti a csatlakoztatott kapcsolók MAC tábláját, hogy tájékoztassa a virtuális IP cím és a Mac cím tulajdonjogának megváltozásáról a forgalom átirányításához..

Telepítse és konfigurálja a folyamatosan kezelt CentOS-on

A telepítésre és a konfigurálásra egy példa kerül sor proxy-szerv01 szerverek és proxy-serv02 a Centos 7-en, ha a Squid telepítve van. A sémánkban a terheléskiegyenlítés (balancing) legegyszerűbb módszerét - Round Robin DNS - fogjuk használni. Ez a módszer feltételezi, hogy egy névhez több DNS-cím van regisztrálva a DNS-ben, és az ügyfelek kérésre egy-egy címet kapnak, majd egy-egy címet. Ezért két virtuális IP-címre lesz szükségünk, amelyeket azonos névvel regisztrálunk a DNS-ben, és amelyekkel az ügyfelek végül kapcsolatba lépnek. Hálózati diagram:

Minden Linux szervernek két fizikai hálózati interfésze van: az eth1 fehér IP-címmel és internet-hozzáféréssel, és az eth0 a helyi hálózaton.

A következőket használjuk valódi szerver IP-címekként:
192.168.2.251 - proxy-server01 számára
192.168.2.252 - a proxy-server02 számára

A következőket használják virtuális IP-címekként, amelyek hiba esetén automatikusan átváltanak a kiszolgálók között:
192.168.2.101
192.168.2.102

Fontos. A VRRP beállításakor az igazi szervercím nem kerül felhasználásra a virtuális IP címként, mert hiba esetén a címet a szomszédos címre viszik, és helyreállítása után elkülönítik a hálózattól. A helyzet az, hogy a cím visszaadásához el kell küldeni egy csomagot a VRRP hálózatra, de nem lesz IP-cím, ahonnan meg lehet csinálni..

Telepítse a Keepalived csomagot mindkét szerverre a következő paranccsal:

yum install keepalived

Miután a telepítés mindkét kiszolgálón befejeződött, szerkessze a konfigurációs fájlt

/etc/keepalived/keepalived.conf

Színesen kijelölt vonalak különböző paraméterekkel:

a proxy-szerv01 szerverrea proxy-serv02 szerveren

A lehetőségeket részletesebben elemezzük:

  • vrrp_instance - VRRP példányt meghatározó szakasz;
  • state - kezdeti állapot indításkor;
  • interfész - az a felület, amelyen a VRRP futni fog;
  • virtual_router_id - a VRRP példány egyedi azonosítójának egyeznie kell minden kiszolgálón;
  • prioritás - beállítja a prioritást a MASTER kiválasztásakor, a legmagasabb prioritású kiszolgáló pedig MASTER lesz;
  • virtual_ipaddress - azon virtuális IP-címek blokkja, amelyek aktívak lesznek a kiszolgálón MASTER állapotban. Egyeznie kell a VRRP-példány összes szerverén.
megjegyzés. Számos példát találhat, amelyekben a VRRP opciót használja hitelesítés. A dokumentációban azonban keepalived megemlítik, hogy a hitelesítést 2004-ben eltávolították a VRRPv2-ből az RFC3768 specifikációban (https://tools.ietf.org/html/rfc3768), mivel az nem adott valódi biztonságot. Ajánlott kerülni ennek a lehetőségnek a használatát..

Ha a jelenlegi hálózati konfiguráció nem engedélyezi a csoportos küldést, a keepalivednek lehetősége van az unicast használatára, azaz küldje el a VRRP csomagokat közvetlenül a lista által meghatározott kiszolgálóknak. Az unicast használatához a következőkre van szüksége:

  • unicast_src_ip - a VRRP csomagok forráscíme;
  • unicast_peer - azon kiszolgálók IP-címeinek blokkja, amelyekre a VRPP-csomagokat elküldik.

Így a konfigurációnk két VRRP példányt határoz meg, a proxy_ip1 és a proxy_ip2. Normál működés közben a proxy-szerv01 szerver MASTER lesz a virtuális IP 192.168.2.101 és BACKUP a 192.168.2.102 számára, a proxy-serv02 szerver pedig MASTER lesz a virtuális IP 192.168.2.102 számára, és BACKUP a 192.168.2.101 virtuális IP számára..

Ha a kiszolgálón aktiválva van egy tűzfal, akkor az iptables használatával engedélyeznie kell a multicast forgalom és a vrrp protokoll engedélyező szabályait:

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

Aktiválja az induló vállalkozásokat, és mindkét kiszolgálón elindítja a folyamatos szolgáltatást:

A systemctl lehetővé teszi a folyamatos élést
a systemctl elindul

A folyamatosan elindított szolgáltatás elindítása után a konfigurációs fájlból virtuális IP-k lesznek hozzárendelve az interfészekhez. Lássuk az aktuális IP-címeket az eth0 szerver felületén:

ip show eth0

A proxy-szerv01 szerveren:

A proxy-serv02 szerveren:

Keepalived: figyelemmel kíséri az alkalmazás és az interfész állapotát

A VRRP protokollnak köszönhetően figyelemmel lehet kísérni a szerver állapotát, például a szerver teljes fizikai meghibásodása vagy a szerver vagy a kapcsoló hálózati portja esetén. Más problematikus helyzetek azonban lehetségesek:

  • hiba a proxy szerver szolgáltatásban - Azok az ügyfelek, akik a szerver virtuális címére jutnak, üzenetet kapnak a böngészőben azzal a hibával, hogy a proxy szerver nem érhető el.
  • a második internetes interfész tagadása - A kiszolgáló virtuális címére érkező ügyfelek üzenetet kapnak a böngészőben azzal a hibával, hogy a kapcsolatot nem sikerült létrehozni.

A fenti helyzetek kezelésére a következő lehetőségeket használjuk:

  • track_interface - az interfészek állapotának megfigyelése; a VRRP-példányt FAULT állapotba helyezi, ha a felsorolt ​​felületek egyike DOWN állapotban van;
  • track_script - megfigyelés egy olyan szkript segítségével, amelynek 0-nak kell visszatérnie, ha az ellenőrzés sikeresen befejeződött, 1 - ha az ellenőrzés sikertelen.

Frissítse a konfigurációt, vegye fel az eth1 interfész figyelését (alapértelmezés szerint a VRRP példány ellenőrzi azt a felületet, amelyhez van kötve, azaz a jelenlegi eth0 konfigurációban):

track_interface eth1 

irányelv track_script futtat egy szkriptet a blokkban meghatározott paraméterekkel vrrp_script, amelynek formátuma a következő:

vrrp_script szkript intervallum - a szkript gyakorisága, alapértelmezett 1 másodperces esés - hányszor a szkript visszatért egy nullán kívüli értéket, amelyen átválthat a FAULT állapot növekedésére - hányszor a szkript visszatért nulla értékre, amikor kilép a FAULT időtúllépési állapotból - időtúllépés mindaddig, amíg a szkript eredményt nem kap, amely után nem nulla értéket ad vissza. súly - az az érték, amellyel a szerver prioritása csökken a FAULT állapotba való átmenet esetén. Az alapértelmezett érték 0, ami azt jelenti, hogy a kiszolgáló a sikertelen szkriptfuttatás után a fall paraméter által megadott számú alkalommal vált át a FAULT állapotba.  

Konfigurálja a kalmárok teljesítményének figyelését. A következő paranccsal ellenőrizheti, hogy a folyamat aktív:

tintahal-ellenőrzés

hozzon létre egy vrrp_script, 3 másodpercenként a végrehajtás gyakoriságának paramétereivel. Ezt a blokkot a blokkokon kívül definiálják. vrrp_instance.

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

Add hozzá a szkriptünket a megfigyeléshez, mindkét blokkban vrrp_instance:

track_script chk_squid_service

Most, ha a Squid proxy szolgáltatás meghiúsul, a virtuális IP cím másik szerverre vált.

Felveheti további tevékenységek amikor a szerver állapota megváltozik.

Ha a Squid úgy van beállítva, hogy bármilyen felületről kapjon kapcsolatot, azaz http_port 0.0.0.0 128, akkor a virtuális IP-cím váltásakor nem lesznek problémák, a Squid elfogadja az új cím kapcsolatait. Ha például meghatározott IP-címek vannak konfigurálva:

http_port 192.168.2.101 128 http_port 192.168.2.102haps128

akkor a Squid nem fogja tudni, hogy új cím jelent meg a rendszerben, ahol meg kell hallgatnia az ügyfelek kéréseit. Az ilyen helyzetek kezelésére, amikor a virtuális IP-cím cseréjekor további műveleteket kell végrehajtania, a keepalived tartalmazza a szkript végrehajtásának lehetőségét, amikor egy esemény történik, amikor a kiszolgáló állapota megváltozik, például MASTER-ről BACKUP-ra, vagy fordítva. Ez a következő lehetőséggel valósul meg:

értesítse a "futtatható fájl elérési útját"

Keepalived: feladatátvételi tesztelés

A virtuális IP beállítása után ellenőrizni fogjuk, hogy a hiba feldolgozása hogyan működik megfelelően. Az első teszt az egyik szerver meghibásodásának szimulálása. Lekapcsoljuk a hálózatot a proxy-szerv01 szerver eth0 belső hálózati interfészéről, miközben leállítja a VRRP csomagok küldését, és a proxy-serv02 szervernek aktiválnia kell a 192.168.2.101 virtuális IP-címet. Az eredményt a következő paranccsal ellenőrizzük:

ip show eth0

A proxy-szerv01 szerveren:

A proxy-serv02 szerveren:

Ahogy az várható volt, a proxy-serv02 szerver aktiválja a 192.168.2.101 virtuális IP-címet. Lássuk, mi történt a naplókban a következő paranccsal:

macska / var / napló / üzenetek | grep - én mindig megőriztem

a proxy-szerv01 szerverrea proxy-serv02 szerveren
Keepalived_vrrp [xxxxx]: A rendszermag jelentést készít: eth0 interfész lefelé Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Hibás állapot beírása Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) VIP protokollok eltávolítása. Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Most FAULT állapotban
Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Áttérés a mesterállamra
A Keepalived jelet kap arról, hogy az eth0 interfész DOWN állapotban van, és a proxy_ip1 VRRP példányát FAULT állapotba helyezi, felszabadítva a virtuális IP címeket.A Keepalived a proxy_ip1 VRRP példányát MASTER állapotba helyezi, aktiválja a 192.168.2.101 címet az eth0-on és elküldi az ingyenes ARP-t..

És ellenőrizni fogjuk, hogy miután a proxy-szerv01 kiszolgálón az eth0 interfész csatlakozik a hálózathoz, a 192.168.2.101 virtuális IP visszavált.

a proxy-szerv01 szerverrea proxy-serv02 szerveren
Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) kényszeríti új MASTER választást Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Áttérés a MASTER STATE államra VIP. Keepalived_vrrp [xxxxx]: Ingyenes ARP küldése az eth0-on a 192.168.2.101-hez
Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Magasabb prioritású hirdetés érkezett 255-nél, a miénk 100 Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) A Biztonsági Mentési Állam beírása.
A Keepalived jelet kap az eth0 interfész visszaállításához, és új MASTER választást indít a proxy_ip1 VRRP példányához. A MASTER állapotba való áttérés után aktiválja a 192.168.2.101 címet az eth0 interfészen, és ingyenes ARP-t küld..A Keepalived megkapja a proxy_ip1 VRRP példányának elsőbbségi csomagját, a proxy_ip1-et BACKUP állapotba helyezi, és felszabadítja a virtuális IP-címeket.

A második teszt a külső hálózati interfész meghibásodásának szimulálása, ennek elvégzéséhez válassza le a proxy-szerv01 szerver külső hálózati interfészét a hálózatról. A naplók alapján ellenőrizzük az ellenőrzés eredményét.

a proxy-szerv01 szerverrea proxy-serv02 szerveren
Keepalived_vrrp [xxxxx]: A rendszermag jelentést készít: eth1 interfész lefelé Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Hibás állapot beírása Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) VIP protokollok eltávolítása. Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Most FAULT állapotban
Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Átmenet a MASTER STATE-hez Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) A MASTER STATE belépése Keepalived_vrrp [xxxxx]: VRRP_Insts. Proxy. Keepalived_vrrp [xxxxx]: Ingyenes ARP küldése az eth0-on a 192.168.2.101-hez
A Keepalived jelet kap arról, hogy az eth1 interfész DOWN állapotban van, és a proxy_ip1 VRRP példányát FAULT állapotba helyezi, felszabadítva a virtuális IP címeket.A Keepalived a proxy_ip1 VRRP példányát MASTER állapotba helyezi, aktiválja a 192.168.2.101 címet az eth0-on és elküldi az ingyenes ARP-t..

A harmadik ellenőrzés a Squid proxy szolgáltatás meghibásodásának utánozása, ehhez manuálisan hagyjuk a szolgáltatást a következő paranccsal: systemctl tintahal A naplók alapján ellenőrizzük az ellenőrzés eredményét.

a proxy-szerv01 szerverrea proxy-serv02 szerveren
Keepalived_vrrp [xxxxx]: VRRP_Script (chk_squid_service) nem sikerült Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Hibaállapot megadása Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1). Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Most FAULT állapotban
Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) Átmenet a MASTER STATE-hez Keepalived_vrrp [xxxxx]: VRRP_Instance (proxy_ip1) A MASTER STATE belépése Keepalived_vrrp [xxxxx]: VRRP_Insts. Proxy. Keepalived_vrrp [xxxxx]: Ingyenes ARP küldése az eth0-on a 192.168.2.101-hez
A tintahal-proxy szolgáltatás-ellenőrzési szkript sikertelen. A Keepalived a proxy_ip1 VRRP példányát FAULT állapotba helyezi, felszabadítva a virtuális IP címeket.A Keepalived a proxy_ip1 VRRP példányát MASTER állapotba helyezi, aktiválja a 192.168.2.101 címet az eth0-on és elküldi az ingyenes ARP-t..

Mindhárom ellenőrzés sikeresen befejeződött, és mindig megfelelően konfigurálva vannak. A cikk folytatásaként a Pacemaker használatával konfiguráljuk a HA fürtöt, és megvizsgáljuk ezen eszközök sajátosságait..

Végleges konfigurációs fájl /etc/keepalived/keepalived.conf a szerver számára proxy-serv01:

vrrp_script chk_squid_service script "/ usr / sbin / squid -k check" intervallum 3 vrrp_instance proxy_ip1 state MASTER interfész eth0 virtual_router_id 1. prioritás 255 virtual_ipaddress 192.168.2.101/24 dev eth0 label eth1 track_interface eth1 track_interface eth1 track1interface eth1 track_interface eth1  vrrp_instance proxy_ip2 állapot BACKUP interfész eth0 virtual_router_id 2 prioritás 100 virtuális_cím cím 192.168.2.102/24 dev eth0 címke eth0: 2 track_interface eth1 track_script chk_squid_service 

Végleges konfigurációs fájl /etc/keepalived/keepalived.conf a szerver számára proxy-serv02:

vrrp_script chk_squid_service script "/ usr / sbin / squid -k check" intervallum 3 vrrp_instance proxy_ip1 állapot BACKUP interfész eth0 virtual_router_id 1 prioritás 100 virtuális_cím cím 192.168.2.101/24 dev eth0 label eth1 eth1 eth1_et1_et1_interjú eth1_terület eth1_terület et1_interjú eth1_interjú eth1_interjú eth1_interjú eth1_interjú eth1_interjú eth1_1_1_1__1_1_1_1_1_1_1_1_1_1_1_1__1_1__1_1_0_1_1 _1  vrrp_instance proxy_ip2 állapot MASTER interfész eth0 virtual_router_id 2 prioritás 255 virtual_ipaddress 192.168.2.102/24 dev eth0 label eth0: 2 track_interface eth1 track_script chk_squid_service