Conservato per più di 20 indirizzi virtuali


12

Ho installato keepalived su due macchine Debian per l'alta disponibilità, ma ho incontrato il numero massimo di IP virtuali che posso assegnare al mio vrrp_instance. Come farei per configurare e fallire oltre 20+ IP virtuali?

Questa è la configurazione molto semplice:

LB01: 10.200.85.1
LB02: 10.200.85.2
Virtual IPs: 10.200.85.100 -  10.200.85.200

Ogni macchina esegue anche il collegamento Apache (in seguito Nginx) sugli IP virtuali per la terminazione del certificato client SSL e il proxy per i server Web back-end. Il motivo per cui ho bisogno di così tanti VIP è l'impossibilità di utilizzare VirtualHost su HTTPS.

Questo è il mio keepalived.conf:

vrrp_script chk_apache2 {
        script "killall -0 apache2"
        interval 2
        weight 2
}

vrrp_instance VI_1 {
        interface eth0
        state MASTER
        virtual_router_id 51
        priority 101
        virtual_ipaddress {
            10.200.85.100
            .
            . all the way to
            .
            10.200.85.200
}

Una configurazione identica si trova sulla macchina BACKUP e funziona bene, ma solo fino al 20 ° IP.

Ho trovato un HOWTO che discute questo problema. Fondamentalmente, suggeriscono di avere solo un VIP e instradare tutto il traffico "tramite" questo IP unico, e "tutto andrà bene". è un buon approccio? Sto eseguendo firewall pfSense davanti alle macchine.

Citazione dal link sopra:

ip route add $VNET/N via $VIP

or

route add $VNET netmask w.x.y.z gw $VIP

Grazie in anticipo.

MODIFICARE:

@David Schwartz ha detto che avrebbe senso aggiungere una route, quindi ho provato ad aggiungere una route statica al firewall pfSense, ma non ha funzionato come mi aspettavo.

Percorso pfSense:

Interface:            LAN
Destination network:  10.200.85.200/32 (virtual IP)
Gateway:              10.200.85.100    (floating virtual IP)
Description:          Route to VIP .100

Mi sono anche assicurato di aver abilitato l'inoltro di pacchetti sui miei host:

$ cat /etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv4.ip_nonlocal_bind=1

Sto sbagliando? Ho anche rimosso tutti i VIP da keepalived.conf in modo che non riesca solo oltre il 10.200.85.100.


Penso che questo approccio abbia un buon senso.
David Schwartz,

... o farei semplicemente vrrp_instances ciascuna con un blocco di 20 IP? Probabilmente potrei raggruppare i siti HTTPS ospitati in qualche modo dandogli un significato aggiuntivo.
cvaldemar,

La rete di destinazione dovrebbe essere l'insieme di oltre 20 IP, non un singolo IP.
David Schwartz,

Risposte:


14

La soluzione più semplice senza cambiare l'architettura attuale è quella di utilizzare virtual_ipaddress_excluded . Per esempio

vrrp_instance VI_1 {
    interface eth0
    state MASTER
    virtual_router_id 51
    priority 101

    virtual_ipaddress {
        10.200.85.100
    }

    virtual_ipaddress_excluded {
        10.200.85.101
        . all the way to
        10.200.85.200
    }
}

virtual_ipaddress_excluded contiene un elenco di indirizzi IP che keepalived porterà su e giù sul server, tuttavia non sono inclusi nel pacchetto VRRP stesso, quindi non contano ai fini del limite di 20 indirizzi IP.

Nelle mie configurazioni mi piace allocare un IP specifico per virtual_ipaddress . cioè quello che è incluso nei pacchetti VRRP e mette tutto il resto in virtual_ipaddress_excluded . Questa è una buona idea perché non vuoi cambiare l'IP principale solo perché un cliente è partito.


Eccellente. Lo sto facendo invece di più istanze vrrp. Mi hai anche fatto leggere la documentazione mantenuta. Grazie!
cvaldemar il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.