Σύμπλεγμα δύο κόμβων - ο διάβολος βρίσκεται στις λεπτομέρειες

Γεια σου Χαμπρ! Σας παρουσιάζω τη μετάφραση του άρθρου "Two Nodes - The Devil is the Details" του Andrew Beekhof.

Πολλοί άνθρωποι προτιμούν τα συμπλέγματα δύο κόμβων επειδή φαίνονται εννοιολογικά πιο απλά και είναι επίσης 33% φθηνότερα από τα αντίστοιχα τριών κόμβων. Αν και είναι πολύ πιθανό να συνδυάσετε ένα καλό σύμπλεγμα δύο κόμβων, στις περισσότερες περιπτώσεις, λόγω μη μελετημένων σεναρίων, μια τέτοια διαμόρφωση θα δημιουργήσει πολλά αφανή προβλήματα.

Το πρώτο βήμα για τη δημιουργία οποιουδήποτε συστήματος υψηλής διαθεσιμότητας είναι να βρείτε και να προσπαθήσετε να εξαλείψετε μεμονωμένα σημεία αστοχίας, που συχνά συντομεύονται ως SPoF (μοναδικό σημείο αποτυχίας).

Αξίζει να έχετε κατά νου ότι είναι αδύνατο να εξαλειφθούν όλοι οι πιθανοί κίνδυνοι διακοπής λειτουργίας σε οποιοδήποτε σύστημα. Αυτό προκύπτει από το γεγονός ότι μια τυπική άμυνα ενάντια στον κίνδυνο είναι η εισαγωγή κάποιου πλεονασμού, που οδηγεί σε αυξημένη πολυπλοκότητα του συστήματος και στην εμφάνιση νέων σημείων αστοχίας. Επομένως, αρχικά κάνουμε συμβιβασμό και επικεντρωνόμαστε σε γεγονότα που σχετίζονται με μεμονωμένα σημεία αποτυχίας και όχι σε αλυσίδες σχετικών και, επομένως, ολοένα και λιγότερο πιθανών γεγονότων.

Δεδομένων των αντισταθμίσεων, δεν αναζητούμε μόνο SPoF, αλλά και εξισορροπούμε κινδύνους και συνέπειες, με αποτέλεσμα το συμπέρασμα του τι είναι κρίσιμο και τι όχι μπορεί να διαφέρει για κάθε ανάπτυξη.

Δεν χρειάζονται όλοι εναλλακτικοί προμηθευτές ηλεκτρικής ενέργειας με ανεξάρτητες γραμμές ηλεκτρικής ενέργειας. Αν και η παράνοια απέδωσε καρπούς για τουλάχιστον έναν πελάτη όταν η παρακολούθησή του εντόπισε έναν ελαττωματικό μετασχηματιστή. Ο πελάτης έκανε τηλεφωνικές κλήσεις προσπαθώντας να ειδοποιήσει την εταιρεία ηλεκτρισμού μέχρι που εξερράγη ο ελαττωματικός μετασχηματιστής.

Ένα φυσικό σημείο εκκίνησης είναι να υπάρχουν περισσότεροι από ένας κόμβοι στο σύστημα. Ωστόσο, για να μπορέσει το σύστημα να μετακινήσει υπηρεσίες στον εναπομένον κόμβο μετά από μια αποτυχία, γενικά πρέπει να διασφαλίσει ότι οι υπηρεσίες που μετακινούνται δεν είναι ενεργές αλλού.

Δεν υπάρχει κανένα μειονέκτημα σε ένα σύμπλεγμα δύο κόμβων εάν μια αποτυχία έχει ως αποτέλεσμα και οι δύο κόμβοι να εξυπηρετούν τον ίδιο στατικό ιστότοπο. Ωστόσο, τα πράγματα αλλάζουν εάν το αποτέλεσμα είναι ότι και τα δύο μέρη διαχειρίζονται ανεξάρτητα μια κοινόχρηστη ουρά εργασίας ή παρέχουν ασυντόνιστη πρόσβαση εγγραφής σε μια αναπαραγόμενη βάση δεδομένων ή κοινόχρηστο σύστημα αρχείων.

Επομένως, για να αποτρέψουμε την καταστροφή δεδομένων ως αποτέλεσμα μιας αποτυχίας μεμονωμένου κόμβου - βασιζόμαστε σε κάτι που ονομάζεται "διάσταση" (ξιφασκία).

Η αρχή της διάσπασης

Στο επίκεντρο της αρχής της διάσπασης βρίσκεται το ερώτημα: μπορεί ένας ανταγωνιστικός κόμβος να προκαλέσει καταστροφή δεδομένων; Σε περίπτωση που η καταστροφή δεδομένων είναι ένα πιθανό σενάριο, μια καλή λύση θα ήταν η απομόνωση του κόμβου τόσο από τα εισερχόμενα αιτήματα όσο και από την επίμονη αποθήκευση. Η πιο κοινή προσέγγιση για την αποσύνδεση είναι η αποσύνδεση των ελαττωματικών κόμβων.

Υπάρχουν δύο κατηγορίες μεθόδων διάσπασης, τις οποίες θα καλέσω ευθεία и έμμεση, αλλά μπορούν εξίσου να ονομαστούν ενεργός и παθητικός. Οι άμεσες μέθοδοι περιλαμβάνουν ενέργειες εκ μέρους των επιζώντων ομοτίμων, όπως η αλληλεπίδραση με μια συσκευή IPMI (Intelligent Platform Management Interface) ή iLO (μηχανισμός διαχείρισης διακομιστών χωρίς φυσική πρόσβαση σε αυτούς), ενώ οι έμμεσες μέθοδοι βασίζονται στην αποτυχία κόμβος για να αναγνωρίσει με κάποιο τρόπο ότι είναι σε ανθυγιεινή κατάσταση (ή τουλάχιστον να εμποδίζει άλλα μέλη να αναρρώσουν) και να σηματοδοτήσει φύλακας υλικού σχετικά με την ανάγκη αποσύνδεσης του αποτυχημένου κόμβου.

Η απαρτία βοηθάει όταν χρησιμοποιείτε άμεσες και έμμεσες μεθόδους.

Άμεση διάσπαση

Στην περίπτωση άμεσης διάσπασης, μπορούμε να χρησιμοποιήσουμε απαρτία για να αποτρέψουμε αγώνες διάστασης σε περίπτωση αποτυχίας δικτύου.

Με την έννοια της απαρτίας, υπάρχουν αρκετές πληροφορίες στο σύστημα (ακόμα και χωρίς σύνδεση με τους ομοτίμους του) ώστε οι κόμβοι να γνωρίζουν αυτόματα εάν θα πρέπει να ξεκινήσουν τη διάσπαση και/ή την ανάκτηση.

Χωρίς απαρτία, και οι δύο πλευρές ενός χάσματος δικτύου θα υποθέσουν σωστά ότι η άλλη πλευρά είναι νεκρή και θα επιδιώξουν να αποσυνδεθούν από την άλλη. Στη χειρότερη περίπτωση, και τα δύο μέρη καταφέρνουν να κλείσουν ολόκληρο το σύμπλεγμα. Ένα εναλλακτικό σενάριο είναι ένα deathmatch, ένας ατελείωτος κύκλος κόμβων που γεννούν, δεν βλέπουν τους ομοτίμους τους, τους επανεκκινούν και ξεκινούν την ανάκτηση μόνο για επανεκκίνηση όταν ο ομότιμος τους ακολουθεί την ίδια λογική.

Το πρόβλημα με την αποσύνδεση είναι ότι οι συσκευές που χρησιμοποιούνται πιο συχνά γίνονται μη διαθέσιμες λόγω των ίδιων συμβάντων αποτυχίας που θέλουμε να στοχεύσουμε για ανάκτηση. Οι περισσότερες κάρτες IPMI και iLO είναι εγκατεστημένες στους κεντρικούς υπολογιστές που ελέγχουν και, από προεπιλογή, χρησιμοποιούν το ίδιο δίκτυο, γεγονός που κάνει τους κεντρικούς υπολογιστές-στόχους να πιστεύουν ότι άλλοι κεντρικοί υπολογιστές είναι εκτός σύνδεσης.

Δυστυχώς, τα χαρακτηριστικά λειτουργίας των συσκευών IPMI και iLo σπάνια λαμβάνονται υπόψη κατά την αγορά του εξοπλισμού.

Έμμεση διάσταση

Η απαρτία είναι επίσης σημαντική για τη διαχείριση της έμμεσης αποσύνδεσης· εάν γίνει σωστά, η απαρτία μπορεί να επιτρέψει στους επιζώντες να υποθέσουν ότι οι χαμένοι κόμβοι θα μεταβούν σε ασφαλή κατάσταση μετά από μια ορισμένη χρονική περίοδο.

Με αυτήν τη διαμόρφωση, ο χρονοδιακόπτης παρακολούθησης υλικού επαναφέρεται κάθε N δευτερόλεπτα εάν δεν χαθεί η απαρτία. Εάν ο χρονοδιακόπτης (συνήθως πολλά πολλαπλάσια του N) λήξει, τότε η συσκευή εκτελεί μια άχαρη απενεργοποίηση (όχι τερματισμό λειτουργίας).

Αυτή η προσέγγιση είναι πολύ αποτελεσματική, αλλά χωρίς απαρτία δεν υπάρχουν αρκετές πληροφορίες μέσα στο σύμπλεγμα για τη διαχείρισή της. Δεν είναι εύκολο να διακρίνει κανείς τη διαφορά μεταξύ διακοπής δικτύου και αποτυχίας ομότιμου κόμβου. Ο λόγος που αυτό έχει σημασία είναι ότι χωρίς τη δυνατότητα διαφοροποίησης μεταξύ των δύο περιπτώσεων, αναγκάζεστε να επιλέξετε την ίδια συμπεριφορά και στις δύο περιπτώσεις.

Το πρόβλημα με την επιλογή μιας λειτουργίας είναι ότι δεν υπάρχει τρόπος δράσης που να μεγιστοποιεί τη διαθεσιμότητα και να αποτρέπει την απώλεια δεδομένων.

  • Εάν επιλέξετε να υποθέσετε ότι ένας ομότιμος κόμβος είναι ενεργός αλλά στην πραγματικότητα αποτυγχάνει, το σύμπλεγμα θα σταματήσει άσκοπα τις υπηρεσίες που θα εκτελούνταν για να αντισταθμίσει την απώλεια υπηρεσιών από τον αποτυχημένο ομότιμο κόμβο.
  • Εάν αποφασίσετε να υποθέσετε ότι ένας κόμβος είναι εκτός λειτουργίας, αλλά ήταν απλώς μια αποτυχία δικτύου και στην πραγματικότητα ο απομακρυσμένος κόμβος είναι λειτουργικός, τότε στην καλύτερη περίπτωση εγγράφεστε για κάποια μελλοντική μη αυτόματη συμφωνία των συνόλων δεδομένων που προκύπτουν.

Ανεξάρτητα από τον ευρετικό που χρησιμοποιείτε, είναι ασήμαντο να δημιουργήσετε μια αποτυχία που είτε θα προκαλέσει αποτυχία και στις δύο πλευρές είτε θα προκαλέσει τη διακοπή λειτουργίας του συμπλέγματος των κόμβων που επιβίωσαν. Η μη χρήση απαρτίας στερεί πραγματικά το σύμπλεγμα από ένα από τα πιο ισχυρά εργαλεία στο οπλοστάσιό του.

Εάν δεν υπάρχει άλλη εναλλακτική, η καλύτερη προσέγγιση είναι να θυσιάσουμε τη διαθεσιμότητα (εδώ ο συγγραφέας αναφέρεται στο θεώρημα CAP). Η υψηλή διαθεσιμότητα κατεστραμμένων δεδομένων δεν βοηθά κανέναν και η μη αυτόματη εναρμόνιση διαφορετικών συνόλων δεδομένων δεν είναι επίσης διασκεδαστική.

Απαρτία

Η απαρτία ακούγεται υπέροχο, σωστά;

Το μόνο μειονέκτημα είναι ότι για να το έχετε σε ένα σύμπλεγμα με Ν μέλη, πρέπει να έχετε μια σύνδεση μεταξύ N/2+1 από τους κόμβους σας που απομένουν. Κάτι που δεν είναι δυνατό σε ένα σύμπλεγμα δύο κόμβων μετά την αποτυχία ενός κόμβου.

Το οποίο τελικά μας φέρνει στο θεμελιώδες πρόβλημα με δύο κόμβους:
Η απαρτία δεν έχει νόημα σε δύο συμπλέγματα κόμβων και χωρίς αυτήν είναι αδύνατο να προσδιοριστεί με αξιοπιστία η πορεία δράσης που μεγιστοποιεί τη διαθεσιμότητα και αποτρέπει την απώλεια δεδομένων
Ακόμη και σε ένα σύστημα δύο κόμβων που συνδέονται με ένα καλώδιο crossover, είναι αδύνατο να γίνει οριστική διάκριση μεταξύ διακοπής δικτύου και αστοχίας του άλλου κόμβου. Η αποτυχία ενός άκρου (η πιθανότητα του οποίου είναι, φυσικά, ανάλογη της απόστασης μεταξύ των κόμβων) θα είναι αρκετή για να ακυρώσει κάθε υπόθεση ότι η υγεία του συνδέσμου είναι ίση με την υγεία του συνεργαζόμενου κόμβου.

Κάνοντας ένα σύμπλεγμα δύο κόμβων να λειτουργήσει

Μερικές φορές ο πελάτης δεν μπορεί ή δεν θέλει να αγοράσει έναν τρίτο κόμβο και αναγκαζόμαστε να αναζητήσουμε μια εναλλακτική.

Επιλογή 1 - Διπλότυπη μέθοδος διάστασης

Η συσκευή iLO ή IPMI ενός κόμβου αντιπροσωπεύει ένα σημείο αποτυχίας επειδή, εάν αποτύχει, οι επιζώντες δεν μπορούν να το χρησιμοποιήσουν για να φέρουν τον κόμβο σε ασφαλή κατάσταση. Σε ένα σύμπλεγμα 3 ή περισσότερων κόμβων, μπορούμε να το μετριάσουμε αυτό υπολογίζοντας την απαρτία και χρησιμοποιώντας ένα σύστημα παρακολούθησης υλικού (ένας έμμεσος μηχανισμός αποσύνδεσης, όπως συζητήθηκε προηγουμένως). Στην περίπτωση δύο κόμβων, πρέπει να χρησιμοποιήσουμε μονάδες διανομής ισχύος δικτύου (PDU).

Μετά από μια αποτυχία, ο επιζών προσπαθεί πρώτα να επικοινωνήσει με την κύρια συσκευή αποσύνδεσης (ενσωματωμένο iLO ή IPMI). Εάν αυτό είναι επιτυχές, η ανάκτηση συνεχίζεται ως συνήθως. Μόνο εάν αποτύχει η συσκευή iLO/IPMI γίνεται πρόσβαση στο PDU. Εάν η πρόσβαση είναι επιτυχής, η ανάκτηση μπορεί να συνεχιστεί.

Βεβαιωθείτε ότι έχετε τοποθετήσει το PDU σε διαφορετικό δίκτυο από την κίνηση του συμπλέγματος, διαφορετικά μια μεμονωμένη αποτυχία δικτύου θα εμποδίσει την πρόσβαση και στις δύο συσκευές αποσύνδεσης και θα μπλοκάρει την επαναφορά των υπηρεσιών.

Εδώ μπορείτε να ρωτήσετε - είναι το PDU ένα μόνο σημείο αποτυχίας; Στην οποία η απάντηση είναι, φυσικά και είναι.

Εάν αυτός ο κίνδυνος είναι σημαντικός για εσάς, δεν είστε μόνοι: συνδέστε και τους δύο κόμβους σε δύο PDU και πείτε στο λογισμικό ομαδοποίησης να χρησιμοποιεί και τα δύο κατά την ενεργοποίηση και απενεργοποίηση των κόμβων. Το σύμπλεγμα παραμένει πλέον ενεργό εάν ένα PDU πεθάνει και θα απαιτηθεί μια δεύτερη αποτυχία είτε του άλλου PDU είτε της συσκευής IPMI για τον αποκλεισμό της ανάκτησης.

Επιλογή 2 - Προσθήκη διαιτητή

Σε ορισμένα σενάρια, ενώ η διπλή μέθοδος αποσύνδεσης είναι τεχνικά δυνατή, είναι πολιτικά δύσκολη. Σε πολλές εταιρείες αρέσει να υπάρχει κάποιος διαχωρισμός μεταξύ των διαχειριστών και των κατόχων εφαρμογών και οι διαχειριστές δικτύου που έχουν επίγνωση της ασφάλειας δεν είναι πάντα ενθουσιώδεις για την κοινή χρήση ρυθμίσεων πρόσβασης PDU με κανέναν.

Σε αυτήν την περίπτωση, η προτεινόμενη εναλλακτική είναι η δημιουργία ενός ουδέτερου τρίτου μέρους που μπορεί να συμπληρώσει τον υπολογισμό της απαρτίας.

Σε περίπτωση αποτυχίας, ένας κόμβος πρέπει να μπορεί να δει τα ραδιοκύματα του ομοτίμου ή του διαιτητή για να αποκαταστήσει τις υπηρεσίες. Ο διαιτητής περιλαμβάνει επίσης μια συνάρτηση αποσύνδεσης εάν και οι δύο κόμβοι μπορούν να δουν τον διαιτητή αλλά δεν μπορούν να δουν ο ένας τον άλλον.

Αυτή η επιλογή πρέπει να χρησιμοποιείται σε συνδυασμό με μια μέθοδο έμμεσης αποσύνδεσης, όπως ένα χρονόμετρο παρακολούθησης υλικού, το οποίο έχει ρυθμιστεί να σκοτώνει ένα μηχάνημα εάν χάσει τη σύνδεσή του με τον κόμβο ομότιμου και διαιτητή. Έτσι, ένας επιζών μπορεί εύλογα να υποθέσει ότι ο ομότιμος κόμβος του θα βρίσκεται σε ασφαλή κατάσταση μετά τη λήξη του χρονοδιακόπτη παρακολούθησης υλικού.

Η πρακτική διαφορά μεταξύ ενός διαιτητή και ενός τρίτου κόμβου είναι ότι ένας διαιτητής απαιτεί πολύ λιγότερους πόρους για να λειτουργήσει και μπορεί ενδεχομένως να εξυπηρετήσει περισσότερα από ένα cluster.

Επιλογή 3 - Ανθρώπινος παράγοντας

Η τελική προσέγγιση είναι οι επιζώντες να συνεχίσουν να εκτελούν όποιες υπηρεσίες εκτελούσαν ήδη, αλλά να μην ξεκινήσουν νέες έως ότου επιλυθεί μόνο του το πρόβλημα (επαναφορά δικτύου, επανεκκίνηση κόμβου) ή εάν κάποιος αναλάβει την ευθύνη να επιβεβαιώσει με μη αυτόματο τρόπο ότι η άλλη πλευρά είναι νεκρή.

Επιλογή μπόνους

Ανέφερα ότι μπορείτε να προσθέσετε έναν τρίτο κόμβο;

Δύο ράφια

Για λόγους επιχειρηματολογίας, ας υποκριθούμε ότι σας έπεισα για τα πλεονεκτήματα του τρίτου κόμβου, τώρα πρέπει να εξετάσουμε τη φυσική διάταξη των κόμβων. Εάν βρίσκονται (και τροφοδοτούνται) στο ίδιο rack, αυτό αποτελεί επίσης SPoF και δεν μπορεί να επιλυθεί με την προσθήκη ενός δεύτερου rack.

Εάν αυτό είναι εκπληκτικό, σκεφτείτε τι θα συνέβαινε εάν ένα rack με δύο κόμβους αποτύγχανε και πώς ο κόμβος που επιβίωσε θα διαφοροποιούσε μεταξύ αυτού και μιας αποτυχίας δικτύου.

Η σύντομη απάντηση είναι ότι δεν είναι δυνατό, και πάλι αντιμετωπίζουμε όλα τα προβλήματα στην περίπτωση των δύο κόμβων. Ή επιζών:

  • αγνοεί την απαρτία και επιχειρεί λανθασμένα να ξεκινήσει την αποκατάσταση κατά τη διάρκεια διακοπών δικτύου (η δυνατότητα ολοκλήρωσης αποσύνδεσης είναι διαφορετική ιστορία και εξαρτάται από το εάν εμπλέκεται το PDU και εάν μοιράζονται ρεύμα με κάποιο από τα rack) ή
  • σέβεται την απαρτία και αποσυνδέεται πρόωρα όταν ο ομότιμος κόμβος του αποτυγχάνει

Σε κάθε περίπτωση, δύο rack δεν είναι καλύτερα από ένα και οι κόμβοι πρέπει είτε να λαμβάνουν ανεξάρτητα τροφοδοτικά είτε να διανέμονται σε τρία (ή περισσότερα, ανάλογα με το πόσους κόμβους έχετε) rack.

Δύο κέντρα δεδομένων

Σε αυτό το σημείο, οι αναγνώστες που δεν αποστρέφονται πλέον τον κίνδυνο μπορεί να θελήσουν να εξετάσουν το ενδεχόμενο αποκατάστασης από καταστροφές. Τι συμβαίνει όταν ένας αστεροειδής χτυπά το ίδιο κέντρο δεδομένων με τους τρεις κόμβους μας απλωμένους σε τρία διαφορετικά rack; Προφανώς κακά πράγματα, αλλά ανάλογα με τις ανάγκες σας, η προσθήκη ενός δεύτερου κέντρου δεδομένων μπορεί να μην είναι αρκετή.

Εάν γίνει σωστά, το δεύτερο κέντρο δεδομένων σάς παρέχει (και εύλογα) ένα ενημερωμένο και συνεπές αντίγραφο των υπηρεσιών σας και των δεδομένων τους. Ωστόσο, όπως σε σενάρια δύο κόμβων, δύο ραφιών, δεν υπάρχουν αρκετές πληροφορίες στο σύστημα για να διασφαλιστεί η μέγιστη διαθεσιμότητα και να αποφευχθεί η καταστροφή (ή οι αποκλίσεις των συνόλων δεδομένων). Ακόμη και με τρεις κόμβους (ή rack), η διανομή τους σε δύο μόνο κέντρα δεδομένων αφήνει το σύστημα ανίκανο να λάβει αξιόπιστα τη σωστή απόφαση σε περίπτωση ενός (τώρα πολύ πιο πιθανό) συμβάντος που και τα δύο μέρη δεν μπορούν να επικοινωνήσουν.

Αυτό δεν σημαίνει ότι μια λύση διπλού κέντρου δεδομένων δεν είναι ποτέ κατάλληλη. Οι εταιρείες συχνά θέλουν ένα άτομο να είναι ενήμερο πριν κάνει το εξαιρετικό βήμα της μετάβασης σε ένα εφεδρικό κέντρο δεδομένων. Απλώς έχετε κατά νου ότι εάν θέλετε να αυτοματοποιήσετε τη διακοπή λειτουργίας, είτε θα χρειαστείτε ένα τρίτο κέντρο δεδομένων για να έχει νόημα η απαρτία (είτε απευθείας είτε μέσω διαιτητή), είτε θα βρείτε έναν τρόπο να τερματίσετε αξιόπιστα όλα τα δεδομένα κέντρο.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο