Ρύθμιση
Διαμόρφωση IP
Διαμόρφωση BIRD
Επαληθεύστε τη συνδεσιμότητα BGP
Δοκιμές
Χρήση Παραγωγής
Ρύθμιση IPv6
Το Vultr σάς επιτρέπει να συνδυάσετε δύο από τις λειτουργίες μας (Floating IP και BGP) προκειμένου να επιτύχετε υψηλή διαθεσιμότητα.
Ρύθμιση
Θα χρειαστείτε δύο παρουσίες στην ίδια τοποθεσία και μια κινητή IP. Θα χρειαστεί επίσης να ανοίξετε ένα εισιτήριο με αίτημα να ρυθμιστεί το BGP σε ιδιωτικό ASN για κυμαινόμενες IP. (Μπορείτε επίσης να χρησιμοποιήσετε αυτήν τη δυνατότητα εάν εκτελείτε BGP μαζί μας σε δημόσιο ASN)
Θα χρειαστείτε επίσης έναν δαίμονα BGP, προτείνουμε το BIRD. Το BIRD είναι συνήθως διαθέσιμο μέσω του διαχειριστή πακέτων του λειτουργικού σας συστήματος.
Θα χρησιμοποιήσουμε 192.0.2.10/32ως παράδειγμά μας την κινητή IP και 198.51.100.99ως τη διεύθυνση IP μιας από τις παρουσίες μας.
Σημείωση: Δεν πρέπει να επισυνάψετε την αιωρούμενη IP σε καμία συγκεκριμένη παρουσία μέσω του πίνακα ελέγχου σας. Εάν συνδεθεί μια IP μέσω του πίνακα ελέγχου, η υψηλή διαθεσιμότητα δεν θα λειτουργήσει σωστά.
Διαμόρφωση IP
Θα χρησιμοποιήσουμε μια "εικονική" διεπαφή Linux για να συνδέσουμε τη διεύθυνση IP. Μπορείτε να το δημιουργήσετε με τις ακόλουθες εντολές:
ip link add dev dummy1 type dummy
ip link set dummy1 up
ip addr add dev dummy1 192.0.2.10/32
Επιβεβαιώστε ότι έχει ρυθμιστεί σωστά:
# 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
Διαμόρφωση BIRD
Στη συνέχεια, θα διαμορφώσουμε το BIRD. Αυτές οι οδηγίες διαφέρουν ελαφρώς μεταξύ των λειτουργικών συστημάτων κεντρικού υπολογιστή, δείτε τις υποσημειώσεις στο κάτω μέρος αυτής της ενότητας.
Δημιουργήστε ένα /etc/bird.confαρχείο:
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>>";
}
Θα χρειαστεί να ενημερώσετε YOURASκαι YOURPASSWORDμε τον αριθμό AS και τον κωδικό πρόσβασης BGP που έχουν εκχωρηθεί στον λογαριασμό σας. Αυτές οι πληροφορίες βρίσκονται στην καρτέλα BGP μιας σελίδας παρουσίας στον πίνακα ελέγχου Vultr .
Αυτό το αρχείο διαμόρφωσης θα πει στο BIRD να αναζητήσει τη διεπαφή dummy1 και να διαφημίσει τυχόν IP που βρει στην υποδομή μας μέσω BGP. Αυτό σημαίνει ότι μόλις εκτελείται η παρουσία σας, θα αρχίσετε να λαμβάνετε επισκεψιμότητα και, αν ποτέ κολλήσει, η κυκλοφορία θα σταματήσει.
Διαμόρφωση FreeBSD
Εάν χρησιμοποιείτε το FreeBSD ως κεντρικό υπολογιστή αντί για Linux, υπάρχουν μερικές διαφορές.
Ο πυρήνας πρέπει να μεταγλωττιστεί ξανά για υποστήριξη υπογραφής TCP MD5. Αυτές οι οδηγίες δεν εμπίπτουν στο πεδίο εφαρμογής αυτού του άρθρου. Εάν ο πυρήνας BSD σας δεν υποστηρίζει υπογραφές TCP MD5, θα δείτε την ακόλουθη έξοδο στο αρχείο καταγραφής 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
Το αρχείο διαμόρφωσης BIRD βρίσκεται στο /usr/local/etc/bird.confBSD.
Επαληθεύστε τη συνδεσιμότητα BGP
Ξεκινήστε την υπηρεσία BIRD service bird startκαι περιμένετε μερικά δευτερόλεπτα. Ελέγξτε ότι η συνεδρία BGP έχει καθιερωθεί:
# 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
Εάν όλα λειτουργούν σωστά, θα πρέπει να δείτε την ένδειξη "Εγκαταστάθηκε" δίπλα στην κατάσταση BGP. Ένα κοινό πρόβλημα εδώ είναι το τείχος προστασίας που μπλοκάρει τη θύρα BGP (TCP 179). Επίσης, εάν αυτό το στιγμιότυπο αναπτύχθηκε πριν το Vultr να ρυθμίσει τη συνεδρία BGP, θα πρέπει να επανεκκινηθεί μέσω του πίνακα ελέγχου προτού το BGP είναι διαθέσιμο. Εάν εξακολουθείτε να αντιμετωπίζετε προβλήματα, κοιτάξτε /var/log/birdγια περισσότερες λεπτομέρειες.
Δοκιμές
Μπορείτε να βεβαιωθείτε ότι το BIRD διαφημίζει τη διαδρομή προς την κινητή IP σας με τα εξής:
# birdc show route
BIRD 1.5.0 ready.
192.0.2.10/32 dev dummy1 [direct1 2015-12-29] * (240)
Για να επιβεβαιώσετε ότι λειτουργεί σωστά, μπορείτε να απενεργοποιήσετε τη διεπαφή dummy1 (με ip link set dummy1 down) και μετά να επαναλάβετε την show routeεντολή. Το BIRD θα έχει παρατηρήσει ότι η διεπαφή έχει εξαφανιστεί και θα αποσύρει τη διαδρομή.
Χρήση Παραγωγής
Για να διασφαλίσετε ότι ο ιστότοπός σας παραμένει ανοιχτός, θα θέλατε περισσότερους από έναν διακομιστές να εκτελούν την ίδια διαμόρφωση BGP. Εάν κάποια από τις παρουσίες μειωθεί, η κυκλοφορία θα ανακατευθυνθεί δυναμικά σε μία από τις άλλες παρουσίες. Δεν υπάρχει όριο στον αριθμό των περιπτώσεων που μπορείτε να εκτελέσετε με αυτήν τη διαμόρφωση σε μια συγκεκριμένη τοποθεσία, ωστόσο μόνο μία από αυτές θα είναι ενεργή ανά πάσα στιγμή.
Σε ορισμένες από τις τοποθεσίες μας, η κίνηση θα κατανέμεται τυχαία μεταξύ οποιωνδήποτε παρουσιών που έχετε διαμορφώσει με αυτόν τον τρόπο. Τελικά, όλες οι τοποθεσίες θα διαμορφωθούν με αυτόν τον τρόπο. Εάν θέλετε να έχετε μια παρουσία να λαμβάνει όλη την επισκεψιμότητα εκτός και αν είναι εκτός σύνδεσης, θα θέλατε να χρησιμοποιήσετε τα prepends για να κατευθύνετε την κυκλοφορία.
Για παράδειγμα, εάν έχετε δύο περιπτώσεις:
- Το παράδειγμα Α - το κύριο παράδειγμα, θα πρέπει να λαμβάνει όλη την κίνηση κανονικά
- Παράδειγμα Β - εφεδρικό στιγμιότυπο, θα πρέπει να λαμβάνει επισκεψιμότητα μόνο εάν το Στιγμιότυπο Α είναι εκτός λειτουργίας
Για να το επιτύχετε αυτό, προσθέστε την ακόλουθη ενότητα στη διαμόρφωση BIRD στο παράδειγμα Β ως εξής:
export filter {
bgp_path.prepend(YOURAS);
accept;
};
Αυτό θα διασφάλιζε ότι η επισκεψιμότητα θα πηγαίνει πάντα στην Περίπτωση Α, εκτός εάν είναι μειωμένη.
Εάν διαθέτετε ένα Instance C, το οποίο θα πρέπει να λαμβάνει κίνηση μόνο όταν το A και το B είναι εκτός λειτουργίας, μπορείτε απλώς να προσθέσετε μια άλλη γραμμή 'bgp_path.prepend' για να το πετύχετε.
Ρύθμιση IPv6
Αυτή η διαδικασία θα λειτουργήσει επίσης με δεσμευμένα υποδίκτυα IPv6, αν και θα χρησιμοποιήσετε το "bird6" αντί για το "bird" και το "birdc6" αντί για το "birdc".