iproute multi-bilanciamento del carico ADSL tramite VM


10

Per molto tempo (2 anni?) Ho eseguito una macchina virtuale (server Ubuntu 12.04) con una funzionalità di bilanciamento del carico in uscita molto semplice, inviando diverse connessioni in uscita da router ADSL diversi.

Configurato semplicemente utilizzando iproute senza mascheramento NAT, NAT è gestito dagli stessi router ADSL in uscita che consentono alle connessioni di instradare direttamente al mittente ignorando la VM del router di bilanciamento del carico. Non esistono inoltre regole firewall (iptables) sulla VM del router.

echo 1 > /proc/sys/net/ipv4/ip_forward

# flush initially
ip route flush cache

# remove whatever is there for the default to begin with
ip route delete default

# default load balancing rule
ip route add default scope global \
    nexthop via ${ROUTER2} dev ${INTERFACE} weight 6 \
    nexthop via ${ROUTER1} dev ${INTERFACE} weight 4

Questo ha funzionato bene per molto tempo.

Recentemente ho aggiornato (do-release-upgrade -d) il bilanciamento del carico (macchina virtuale del server Ubuntu 12.04) a Ubuntu 14.04.

Poiché le connessioni Internet di aggiornamento che utilizzano il comando "ip route add default" sopra riportato causano sporadici problemi di connessione e creano un'esperienza inutilizzabile. Quasi come se i singoli pacchetti venissero inviati su entrambi i router e non su connessioni complete.

Questo è stato tentato con una seconda macchina virtuale 14.04 con lo stesso effetto.

Mi piacerebbe avere le stesse funzionalità su Ubuntu 14.04 (kernel corrente: 3.13.0-24). Non capisco cosa sia cambiato.

Eventuali suggerimenti?


Molte persone si lamentano dei problemi di rete. Puoi aggiornare il tuo kernel a 3.14? Ecco alcune istruzioni per l'installazione: linuxg.net/…
Sacx,

L'aggiornamento a 3.14 ha causato l'arresto della VM. Panico del kernel. Forse non l'ho fatto bene, ma ho seguito quelle istruzioni. Nel frattempo, ho eseguito il downgrade a 12.04 (reinstallato VM) per continuare a utilizzare la vecchia funzionalità funzionante, il supporto fino al 2017 è probabilmente OK.
Ha disegnato Anderson il

Quindi le persone sono consapevoli, non ho più bisogno di questa soluzione (lavori cambiati), quindi non saprò se riesco a farlo funzionare in 14.04.
Anderson il

entrambi i router sono nella stessa rete L3? meglio avere 1 sottorete per NIC / route.
user158798,

Risposte:


2

Mi rendo conto che il poster originale non ha più bisogno di una soluzione, ma ecco la mia opinione sulla soluzione migliore per questo problema. Mi rendo anche conto che il poster preferirebbe usare Ubuntu, ma configurare le regole di routing manualmente in quel modo non è l'ideale per trasferire la proprietà ad altri o addirittura fare riferimento a te stesso anni dopo.

Personalmente suggerirei una configurazione più solida usando una VM PFSense per bilanciare il carico delle connessioni. Probabilmente suggerirei anche di eseguire NAT sul box PFSense stesso piuttosto che sui modem. Ho qualcosa di simile a questo configurato in una macchina virtuale e funziona bene.

Per le connessioni tra i modem e la VM PFSense, utilizzo uno switch abilitato vlan per connettere 3 VLan separati alla VM e suddividerli su 3 porte separate sullo switch. Questo in effetti fornisce un cavo diretto (virtuale) da ciascun modem alla scatola pfsense e un altro cavo verso la lan. È quindi possibile configurare i modem per il passthrough, che varia da provider a provider.

È vero che questo elude il problema piuttosto che affrontarlo direttamente, ma mettere il NAT sui modem stessi mi sembra come chiedere solo problemi. Inoltre, PFSense è specificamente progettato come soluzione router preconfezionata, quindi supporta e continuerà a essere testato con configurazioni come questa, garantendo una migliore affidabilità attraverso gli aggiornamenti.


questa risposta potrebbe essere stata migliore come commento, ma non ne ho la reputazione.
scalpellino
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.