Hoe configureert u Keepalived voor hoge beschikbaarheid en IP-failover op CentOS en RHEL?

Hoe u een failover instelt voor uw Linux-proxyservers met keepalived

Het opzetten van hoge beschikbaarheid op Linux is niet altijd even eenvoudig, vooral als je je proxyservers soepel wilt laten draaien. Je merkt misschien dat als een server crasht of je netwerk hapert, je clients foutmeldingen krijgen omdat het IP-adres niet correct wordt doorgegeven. Dat is waar keepalived in uitblinkt: het zorgt ervoor dat een server naadloos de taken overneemt wanneer de andere uitvalt, waardoor die vervelende downtime wordt voorkomen. De truc is om VRRP correct te configureren, zodat de virtuele IP-adressen tussen je servers wisselen. Zorg ervoor dat je duidelijk weet welke IP-adressen echt en welke virtueel zijn, want een verkeerde indeling kan tot allerlei netwerkproblemen leiden. Hier is een stapsgewijze handleiding voor het opzetten van een Linux failover-cluster met keepalived, specifiek afgestemd op Squid-proxyservers. Het werkt tot nu toe op CentOS 7, en veel van deze stappen zijn ook van toepassing op RHEL-gebaseerde distributies.

Hoe bouw je een failovercluster met keepalived op Linux?

Principes van VRRP en wat u moet weten

Als je nog nooit met VRRP hebt gewerkt, even een korte uitleg: een VIP (Virtual IP) is het zwevende IP-adres dat tussen servers wisselt. Iedereen kent dat concept wel, maar VRRP maakt het dynamisch. Dus als je primaire server (de Master) uitvalt, neemt de Backup het over. Deze gebruikt een Virtual Router ID (VRID) om conflicten tussen meerdere groepen te voorkomen, en prioriteitsnummers bepalen welke server de Master wordt. De heartbeat-pakketten (multicasts op 224.0.0.18) laten alle andere servers weten: “Hé, ik ben er nog”, en als de Backup geen bericht van de Master ontvangt, neemt deze het over. Let op: zorg ervoor dat je switch multicast-verkeer ondersteunt, anders krijg je waarschijnlijk problemen. Gebruik ook niet je echte IP-adressen als virtuele IP-adressen, want als een server uitvalt en je IP-adres verandert, kan het zijn dat de server na de herstart de verbinding met het netwerk verliest totdat VRRP het probleem heeft opgelost. In sommige configuraties kan dit vreemd zijn, maar vermijd het hergebruiken van echte IP-adressen als VIP’s om alles overzichtelijk te houden.

Stap 1: Keepalived en basisconfiguratie installeren

  • Gebruik yum (of yum/dnf ) om te installeren:
# yum install keepalived
  • Na de installatie open je het bestand `/etc/keepalived/keepalived.conf` om te beginnen met configureren. Wees niet verlegen. Hier is een kort voorbeeld van hoe je configuratie er op elke server uit zou kunnen zien:
  • 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_script { chk_squid_service } } 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 } } 

    Stap 2: Netwerk- en firewallinstellingen configureren

    Controleer je iptables-regels voordat je keepalived start. Je moet VRRP-verkeer (multicast 224.0.0.18/8) toestaan. Zoiets als:

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

    In sommige configuraties blokkeert de standaardfirewall dit, dus zorg ervoor dat je het toestaat. Vergeet niet om keepalived in te schakelen zodat het automatisch start bij het opstarten van de computer.

    # systemctl enable keepalived # systemctl start keepalived

    Controleer na het opstarten uw interfaces:

    # ip a show eth0

    Zodra beide servers operationeel zijn, zou u de virtuele IP-adressen die aan de interface zijn toegewezen moeten zien.

    Stap 3: Zorg ervoor dat Keepalived reageert op service- en interfacefouten.

    Dat is het belangrijkste punt: het monitoren van je apps (zoals Squid) en interfaces. Zo voeg je controles toe:

    vrrp_script chk_squid_service { script "/usr/sbin/squid -k check" interval 3 } vrrp_instance proxy_ip1 {...track_script { chk_squid_service } } vrrp_instance proxy_ip2 {...track_script { chk_squid_service } } 

    Dit script wordt elke 3 seconden uitgevoerd. Als Squid niet beschikbaar is, zal keepalived de server als defect verklaren en zal het VIP-adres worden verplaatst naar de werkende server. Dit is erg handig om problemen zoals app-crashes of offline netwerkinterfaces op te sporen.

    Stap 4: Failover testen — Ja, maak dingen expres kapot.

    Zodra alles is ingesteld, is het tijd om te testen. Schakel eth0 uit op proxy-serv01 ( ifconfig eth0 downof ip link set eth0 down), en controleer vervolgens of proxy-serv02 het VIP overneemt. Voer het volgende commando uit:

    # ip a show eth0

    En houd de logbestanden in de gaten:

    # cat /var/log/messages | grep -i keepalived

    Je zou berichten moeten zien die aangeven dat de eerste server de status FAULT krijgt en de back-upserver overschakelt naar MASTER. Wanneer je eth0 weer inschakelt, zou de server automatisch terug moeten schakelen, waarbij de logbestanden de wijziging bevestigen.

    Hetzelfde geldt voor het simuleren van externe netwerkstoringen: schakel eth1 uit en je zou moeten zien dat keepalived dit afhandelt (indien geconfigureerd met track_interface), waarbij de rollen naar behoefte worden omgewisseld.

    Vergeet niet om Squid handmatig te stoppen om het failsafe-gedrag te controleren:

    # systemctl stop squid

    Uit de logbestanden blijkt dat keepalived detecteert dat de service niet meer werkt en de IP-adressen dienovereenkomstig wijzigt.

    Samenvatting

    Deze configuratie, hoewel omslachtig, bleek na wat aanpassingen verrassend betrouwbaar. De sleutel is ervoor te zorgen dat uw virtuele IP-adressen niet rechtstreeks aan echte interfaces zijn gekoppeld en dat uw controles nauwkeurig zijn. Op één machine kan het een of twee keer misgaan voordat het stabiliseert, maar in een werkende omgeving zorgt het ervoor dat onverwachte storingen worden opgevangen. Het implementeren van gezondheidscontroles voor zowel netwerkinterfaces als applicatieservices voegt een extra laag van veerkracht toe die problemen kan voorkomen.

    Samenvatting

    • Installeer keepalived met yum install keepalived
    • Definieer uw VRRP-instanties zorgvuldig, stel prioriteiten in en specificeer virtuele IP-adressen.
    • Configureer firewallregels voor multicastverkeer.
    • Voeg gezondheidscontroles toe voor apps en interfaces.
    • Test door opzettelijk het netwerk en de services te verstoren.

    Slotwoorden

    Het opzetten van hoge beschikbaarheid is best een puzzel, maar als het eenmaal werkt, is het een enorme opluchting. Het belangrijkste is om alles grondig te monitoren en te testen. Hopelijk biedt dit een solide basis voor een robuuste proxy-configuratie. Het is in ieder geval iets dat op verschillende systemen werkte, en hopelijk helpt het iemand om de downtime te verminderen.