Διαδρομή 05Μάθημα 7 / 8

Ορίστε ασφαλή όρια για το self-healing

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

Προχωρημένο επίπεδο12 minΕλέγχθηκε

Εκδότης Πώς γράφουμε

Ελέγξτε τι κατανοήσατεΟ controller έχει επανεκκινήσει έναν worker δύο φορές. Η ουρά συνεχίζει να μεγαλώνει και η βάση δεδομένων δεν είναι προσβάσιμη. Τι πρέπει να κάνει η πολιτική;Κάντε την άσκηση
Ο controller έχει επανεκκινήσει έναν worker δύο φορές. Η ουρά συνεχίζει να μεγαλώνει και η βάση δεδομένων δεν είναι προσβάσιμη. Τι πρέπει να κάνει η πολιτική;

Τι θα μάθετε

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

Αντιμετωπίστε μια γνωστή κατάσταση αστοχίας

Το self-healing εντοπίζει αυτόματα μια καθορισμένη αστοχία και επιχειρεί μια εξουσιοδοτημένη ενέργεια ανάκτησης. Παραδείγματα μπορεί να είναι η επανεκκίνηση μιας διεργασίας που απέτυχε ή η αντικατάσταση ενός instance που δεν λειτουργεί σωστά. Η ενέργεια πρέπει να ταιριάζει στην αστοχία και στο μοντέλο κατάστασης της υπηρεσίας.

Το Kubernetes μπορεί να αντικαθιστά instances φόρτου εργασίας που απέτυχαν και να επαναφέρει το σύστημα στη δηλωμένη κατάσταση. Αυτό δεν διορθώνει ελαττωματική λογική εφαρμογής ή κάθε αστοχία αποθήκευσης. Η ανάκτηση υποδομής και η ορθότητα λογισμικού χρειάζονται διαφορετικούς ελέγχους. Self-healing στο Kubernetes.

Ορίστε τον στόχο πριν από τον μηχανισμό. Η αποκατάσταση μιας εξαγωγής σημαίνει ότι οι εργασίες που πληρούν τις προϋποθέσεις ολοκληρώνονται σωστά. Ένα container που εκτελείται είναι μόνο μία προϋπόθεση.

Διαχωρίστε τρία είδη αλλαγής

ΑλλαγήΠαράδειγμαΑπαιτούμενη απόφαση
Ανάκτηση κατά τη λειτουργίαΑντικατάσταση ενός stateless worker που απέτυχεΜια προεγκεκριμένη πολιτική ανάκτησης μπορεί να το εξουσιοδοτεί
Διόρθωση λογισμικούΔιόρθωση της διαρροής μνήμης που σταματά τον workerΑνασκόπηση, δοκιμές, έλεγχοι διάθεσης και επαλήθευση στο production
Αλλαγή πολιτικήςΑύξηση του επιτρεπόμενου ρυθμού επανεκκίνησης ή του πεδίου πρόσβασηςΡητή έγκριση από τον υπεύθυνο πολιτικής

Ένας agent μπορεί να προτείνει διόρθωση μετά την ανάκτηση. Αυτή η πρόταση είναι νέα αλλαγή λογισμικού. Δεν πρέπει να κληρονομεί απεριόριστη εξουσία από τον controller ανάκτησης.

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

Γράψτε την πολιτική ανάκτησης πριν την ενεργοποιήσετε

Η ακόλουθη πολιτική είναι υποθετική. Οι αριθμοί της δείχνουν επιλογές σχεδιασμού· δεν αποτελούν συνιστώμενες προεπιλογές.

Πεδίο πολιτικήςΥποθετικός κανόνας για τον worker εξαγωγής
Συνθήκη ενεργοποίησηςΤο heartbeat του worker απουσιάζει για 90 δευτερόλεπτα και υπάρχουν εργασίες στην ουρά
ΠροϋποθέσειςΈνας άλλος worker λειτουργεί σωστά· οι έλεγχοι εξαρτήσεων περνούν· δεν υπάρχει υποψία παραβίασης ή αστοχίας ακεραιότητας
Επιτρεπόμενη ενέργειαΑντικατάσταση ενός worker με το artifact που είναι εγκεκριμένο αυτή τη στιγμή
Προστασία κατάστασηςΟι εργασίες χρησιμοποιούν ανθεκτική αποθήκευση και επαληθευμένο idempotency key
ΌριοΤο πολύ δύο αντικαταστάσεις σε 15 λεπτά· ποτέ περισσότερες από μία κάθε φορά
Χρόνος αναμονήςΑναμονή πέντε λεπτών μετά την αντικατάσταση πριν από άλλη προσπάθεια
ΕπιτυχίαΜια εργασία με συνθετικά δεδομένα ολοκληρώνεται σωστά και η επηρεαζόμενη ουρά αρχίζει να αδειάζει
Διακοπή και κλιμάκωσηΟποιαδήποτε προϋπόθεση δεν ισχύει, το όριο έχει εξαντληθεί ή η επιτυχία δεν μπορεί να επαληθευτεί

Χρησιμοποιήστε ταυτότητα με τα ελάχιστα αναγκαία προνόμια. Καταγράψτε την έκδοση πολιτικής, τα στοιχεία ενεργοποίησης, την ενέργεια, τον πόρο και το αποτέλεσμα. Παρέχετε ανεξάρτητο τρόπο απενεργοποίησης του controller. Ορίστε τον άνθρωπο που είναι υπεύθυνος να λαμβάνει την κλιμάκωση.

Δοκιμάστε τις διαδρομές αστοχίας και την επιτυχημένη ανάκτηση

Μια επαναπροσπάθεια μπορεί να επαναλάβει μια παρενέργεια. Ένας worker μπορεί να αποθηκεύσει ένα αρχείο και να σταματήσει πριν επιβεβαιώσει την ολοκλήρωση της εργασίας. Επαληθεύστε την idempotency πριν επιτρέψετε άλλη εκτέλεση. Δείτε το παράδειγμα αστοχίας cloud native.

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

Δοκιμάστε την υποθετική πολιτική σε τρεις περιπτώσεις. Ένας μεμονωμένος worker που σταμάτησε πρέπει να ανακάμψει. Μια διακοπή της βάσης δεδομένων πρέπει να εμποδίσει την επαναλαμβανόμενη αντικατάσταση. Μια αβέβαιη αστοχία ακεραιότητας πρέπει να σταματήσει τον αυτοματισμό και να ζητήσει απόφαση απόκρισης.

Ελέγξτε επίσης την τηλεμετρία που λείπει. Η απουσία heartbeat μπορεί να σημαίνει αστοχία του worker ή της διαδρομής συλλογής. Ο controller χρειάζεται επαρκή στοιχεία για την ενέργειά του, όχι εμπιστοσύνη σε μια εξήγηση AI.

Μετρήστε αν βοηθά η πολιτική

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

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

Κάντε την άσκηση

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

Λήψη φύλλου εργασίας (Markdown)
Ελέγξτε τι κατανοήσατε ↑

Συνεχίστε τη μάθηση

Πηγές και πρόσθετη μελέτη

Σχετικό υλικό από την Taiga

Προηγούμενο μάθημα: Συνδέστε την παράδοση λογισμικού με το SOC και τη SIRT