Vultr ti consente di combinare due delle nostre funzionalità (IP mobili e BGP) al fine di ottenere un'alta disponibilità.
Impostare
Ti occorreranno due istanze nella stessa posizione e un IP mobile. Dovrai anche aprire un ticket che richiede che BGP sia configurato su un ASN privato per IP mobili. (Puoi anche utilizzare questa funzione se esegui BGP con noi su un ASN pubblico)
Avrai bisogno anche di un demone BGP, consigliamo BIRD. BIRD è generalmente disponibile tramite il gestore di pacchetti del sistema operativo.
Useremo 192.0.2.10/32come esempio IP mobile e 198.51.100.99come indirizzo IP di una delle nostre istanze.
Nota: non è necessario collegare l'IP mobile a nessuna istanza particolare tramite il pannello di controllo. Se un IP è collegato tramite il pannello di controllo, l'alta disponibilità non funzionerà correttamente.
Configurazione IP
Utilizzeremo un'interfaccia "fittizia" di Linux per associare l'indirizzo IP. Puoi crearlo con i seguenti comandi:
ip link add dev dummy1 type dummy
ip link set dummy1 up
ip addr add dev dummy1 192.0.2.10/32
Conferma che questo è stato configurato correttamente:
# ip addr show dev dummy1
5: dummy1: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
link/ether ba:23:57:2c:ad:bc brd ff:ff:ff:ff:ff:ff
inet 192.0.2.10/32 scope global dummy1
Configurazione BIRD
Successivamente, configureremo BIRD. Queste istruzioni variano leggermente tra i sistemi operativi host, vedere le note in fondo a questa sezione.
Crea un /etc/bird.conffile:
log "/var/log/bird" all;
router id 198.51.100.99;
protocol device
{
scan time 60;
}
protocol direct
{
interface "dummy1";
}
protocol bgp vultr
{
local as <<YOURAS>>;
source address 198.51.100.99;
import none;
export all;
graceful restart on;
next hop self;
multihop 2;
neighbor 169.254.169.254 as 64515;
password "<<YOURPASSWORD>>";
}
Dovrai aggiornare YOURASe YOURPASSWORDcon il numero AS e la password BGP assegnati al tuo account. Queste informazioni sono disponibili nella scheda BGP di una pagina di istanza nel pannello di controllo Vultr .
Questo file di configurazione indicherà a BIRD di cercare l'interfaccia dummy1 e pubblicizzerà tutti gli IP che trova sulla nostra infrastruttura tramite BGP. Ciò significa che non appena l'istanza è in esecuzione, inizierai a ricevere il traffico e, in caso di crash, il traffico verrà interrotto.
Configurazione di FreeBSD
Se stai usando FreeBSD come host anziché Linux, ci sono alcune differenze.
-
Il kernel deve essere ricompilato per il supporto della firma TCP MD5. Queste istruzioni non rientrano nell'ambito di questo articolo. Se il tuo kernel BSD non supporta le firme TCP MD5, vedrai il seguente output nel registro BIRD.
$ cat /var/log/bird
2017-12-15 01:35:00 <INFO> Started
2017-12-15 01:35:00 <ERR> vultr: Socket error: Kernel does not support TCP MD5 signatures
-
Il file di configurazione BIRD si trova /usr/local/etc/bird.confsu BSD.
Verifica la connettività BGP
Avviare il servizio BIRD service bird starte attendere qualche secondo. Verificare che la sessione BGP sia stata stabilita:
# birdc show proto all vultr
BIRD 1.5.0 ready.
name proto table state since info
vultr BGP master up 2016-01-15 Established
Preference: 100
Input filter: REJECT
Output filter: ACCEPT
Routes: 0 imported, 1 exported, 0 preferred
Route change stats: received rejected filtered ignored accepted
Import updates: 255919581 0 255919581 0 0
Import withdraws: 1905513 0 --- 257825094 0
Export updates: 1 0 0 --- 1
Export withdraws: 0 --- --- --- 0
BGP state: Established
Neighbor address: 169.254.169.254
Neighbor AS: YOURAS
Neighbor ID: x.x.x.x (Host IP)
Neighbor caps: refresh enhanced-refresh restart-able AS4
Session: external multihop AS4
Source address: 198.51.100.99
Hold timer: 184/240
Keepalive timer: 30/80
Se tutto funziona correttamente, dovresti vedere "Stabilito" accanto allo stato BGP. Un problema comune qui è avere un firewall che blocca la porta BGP (TCP 179). Inoltre, se questa istanza è stata distribuita prima che Vultr configurasse la sessione BGP, dovrà essere riavviato tramite il pannello di controllo prima che BGP sia disponibile. Se i problemi persistono, consultare /var/log/birdulteriori dettagli.
analisi
Puoi assicurarti che BIRD stia pubblicizzando il percorso verso il tuo IP mobile con quanto segue:
# birdc show route
BIRD 1.5.0 ready.
192.0.2.10/32 dev dummy1 [direct1 2015-12-29] * (240)
Per confermare che funziona correttamente, è possibile disabilitare l'interfaccia dummy1 (con ip link set dummy1 down), quindi ripetere il show routecomando. BIRD avrà notato che l'interfaccia è scomparsa e ritirerà il percorso.
Utilizzo di produzione
Al fine di garantire che il tuo sito rimanga attivo, si desidera che più di un server esegua la stessa configurazione BGP. Se una delle istanze si interrompe, il traffico verrebbe reindirizzato dinamicamente a una delle altre istanze. Non vi è alcun limite al numero di istanze che è possibile eseguire con questa configurazione in una posizione particolare, tuttavia solo una di esse sarà attiva in un dato momento.
In alcune delle nostre sedi, il traffico verrà distribuito casualmente tra le istanze configurate in questo modo. Alla fine, tutte le posizioni saranno configurate in questo modo. Se desideri che un'istanza riceva tutto il traffico a meno che non sia offline, ti consigliamo di utilizzare le anteprime per indirizzare il traffico.
Ad esempio, se hai due istanze:
- Istanza A - istanza principale, dovrebbe ricevere tutto il traffico normalmente
- Istanza B: istanza di backup, dovrebbe ricevere traffico solo se l'istanza A è inattiva
Per fare ciò, aggiungi la seguente sezione alla tua configurazione BIRD sull'istanza B come segue:
export filter {
bgp_path.prepend(YOURAS);
accept;
};
Ciò garantirebbe che il traffico passerà sempre all'istanza A, a meno che non sia inattivo.
Se hai un'istanza C, che dovrebbe ricevere traffico solo quando A e B sono inattivi, puoi semplicemente aggiungere un'altra riga 'bgp_path.prepend' per farlo.
Configurazione IPv6
Questo processo funzionerà anche con le sottoreti riservate IPv6, sebbene utilizzerai "bird6" invece di "bird" e "birdc6" anziché "birdc".