Έτρεξε το σενάριο up του OpenVPN πολύ νωρίς, ή δεν ήταν ποτέ έτοιμο;
Το άγκιστρο up εκτελείται όταν εμφανίζεται η συσκευή σήραγγας, πριν από τις διαδρομές και την ετοιμότητα των εφαρμογών. Προσαρμόστε το σενάριο στο συμβάν που χρειάζεται αντί να προσθέσετε αναμονή.
Το σενάριο up εκτελείται, εξέρχεται με μηδέν, και η εργασία μέσα του αποτυγχάνει να προσεγγίσει μια ιδιωτική υπηρεσία που δύο δευτερόλεπτα αργότερα λειτουργεί άψογα από ένα τερματικό. Το ένστικτο λέει χρονισμός, και η συνήθης διόρθωση είναι μια αναμονή, που κρύβει την κούρσα χωρίς να την κατανοεί. Η πιο χρήσιμη ανάγνωση είναι ότι το “up” ονομάζει ένα άγκιστρο, όχι μια εγγύηση ετοιμότητας. Ενεργοποιείται όταν ρυθμιστεί η συσκευή σήραγγας, που είναι νωρίτερα από τις διαδρομές, το DNS και σίγουρα νωρίτερα από οποιαδήποτε εφαρμογή πίσω από τη σήραγγα.
Το τεστ στο κέλυφος πέτυχε επειδή εκτελέστηκε αφού σταθεροποιήθηκαν όλα. Το άγκιστρο εκτελέστηκε σε μία συγκεκριμένη στιγμή.
Πού βρίσκεται το up στη σειρά εκκίνησης
OpenVPN ρυθμίζει τη συσκευή σήραγγας και μετά εκτελεί το άγκιστρο up. Η εγκατάσταση διαδρομών είναι μεταγενέστερο στάδιο και έχει το δικό του άγκιστρο, γι’ αυτό μια εργασία που εξαρτάται από διαδρομή και τοποθετείται στο up μπορεί να δει συσκευή χωρίς χρήσιμη διαδρομή. Βάλτε την εργασία διαδρομών στο route-up και το πρόβλημα χρονισμού συνήθως εξαφανίζεται.
Το εγχειρίδιο τεκμηριώνει αυτή τη σειρά και το περιβάλλον που λαμβάνει κάθε άγκιστρο. Αυτή η σειρά είναι όλη η εξήγηση για την κλασική αναφορά “δουλεύει από το κέλυφός μου”, και είναι επίσης ο λόγος που το ίδιο σενάριο μπορεί να περάσει σε ένα μηχάνημα και να αποτύχει σε άλλο με πιο αργό στάδιο διαδρομών. Κανένα από τα δύο αποτελέσματα δεν λέει τίποτα για την ποιότητα του σεναρίου.
Η ετοιμότητα DNS και εφαρμογών έρχεται ακόμη αργότερα. Ούτε οι εγκατεστημένες διαδρομές αποτελούν απόδειξη ότι το απομακρυσμένο άκρο ακούει, ότι ένα όνομα επιλύεται ή ότι υπάρχει συνεδρία επιφάνειας εργασίας για εργασία συνδεδεμένη με χρήστη.
Τι κληρονομεί στην πραγματικότητα το άγκιστρο
Ένα άγκιστρο εκτελείται κάτω από τον λογαριασμό και το περιβάλλον της διεργασίας OpenVPN, που δεν είναι το ίδιο με το διαδραστικό σας κέλυφος. Μπορεί να του λείπει ο δίαυλος συνεδρίας του χρήστη, ένα περιβάλλον επιφάνειας εργασίας ή ένα διαπιστευτήριο που ξεκλειδώνεται μόνο κατά τη σύνδεση. Σημειώστε ποια από αυτά χρειάζεται πραγματικά η εργασία.
Αυτό έχει σημασία για εργασίες που μοιάζουν δικτυακές αλλά εξαρτώνται από το περιβάλλον χρήστη: προσάρτηση κοινοχρησίας με διαπιστευτήριο χρήστη, ρύθμιση διαμεσολαβητή ανά χρήστη ή διαμόρφωση εκτυπωτή. Ένα προνομιούχο άγκιστρο σήραγγας είναι το λάθος μέρος γι’ αυτές, και καμία ποσότητα αναμονής δεν διορθώνει μια συνεδρία που λείπει.
Όταν μια εργασία αποτυγχάνει σε ένα άγκιστρο, καταγράψτε τον λογαριασμό, το περιβάλλον και την πρώτη λειτουργία που απέτυχε. Αυτό διαχωρίζει τον πρόωρο χρονισμό από πρόβλημα δικαιωμάτων ή περιβάλλοντος, και τα δύο έχουν εντελώς διαφορετικές διορθώσεις. Το να μαντεύετε ανάμεσά τους είναι πώς μια διόρθωση πέντε λεπτών γίνεται ένα ολόκληρο απόγευμα.
Γιατί η προσθήκη αναμονής δεν είναι έλεγχος ετοιμότητας
Η αναμονή καθυστερεί το σενάριο και μετατοπίζει το παράθυρο της κούρσας. Σε μια γρήγορη μέρα η εργασία πετυχαίνει· σε μια αργή μέρα αποτυγχάνει ξανά, και η αποτυχία γίνεται δυσκολότερο να αναπαραχθεί επειδή η καθυστέρηση φαίνεται να λειτουργεί. Μια καθυστέρηση που λειτουργεί μόνο υπό ελαφρύ φορτίο είναι σύμπτωση, όχι διόρθωση.
Αν η εξάρτηση είναι διαδρομή, χρησιμοποιήστε το άγκιστρο που αντιστοιχεί στην εγκατάσταση διαδρομής. Αν η εξάρτηση είναι υπηρεσία πίσω από τη σήραγγα, χρησιμοποιήστε έναν περιορισμένο έλεγχο που περιμένει αυτή τη συγκεκριμένη συνθήκη και αποτυγχάνει καθαρά όταν δεν έρθει ποτέ.
Κρατήστε την αποτυχία ρητή. Ένα άγκιστρο που εξέρχεται με μηδέν ενώ η πραγματική εργασία του απέτυχε είναι χειρότερο από ένα άγκιστρο που αποτυγχάνει, επειδή ο διαχειριστής υπηρεσιών καταγράφει επιτυχία και κανείς δεν ξανακοιτάζει. Μια γραμμή αρχείου καταγραφής από το ίδιο το σενάριο είναι ο φθηνότερος τρόπος να κρατήσετε αυτό ειλικρινές.
Ο καθαρισμός και η επανασύνδεση αξίζουν την ίδια φροντίδα
Ένα σενάριο που αλλάζει κοινόχρηστη κατάσταση χρειάζεται αντίστοιχη διαδρομή αναίρεσης. Διαδρομές, καταχωρίσεις επιλυτή και σημάνσεις τείχους προστασίας που προσθέτει ένα άγκιστρο πρέπει να είναι αδύναμες σε επανάληψη και αναστρέψιμες, αλλιώς μια επανασύνδεση θα στοιβάξει ένα δεύτερο αντίγραφο πάνω στο πρώτο.
Οι επανασυνδέσεις μπορούν επίσης να εκτελούν άγκιστρα συχνότερα από μια πλήρη εκκίνηση υπηρεσίας. Μια επίμονη διεπαφή που επανιδρύει μια συνεδρία μπορεί να προκαλέσει ξανά τον κύκλο up και route-up, οπότε ένα σενάριο που υποθέτει μία εκτέλεση ανά εκκίνηση θα συμπεριφερθεί τελικά λανθασμένα. Μετρήστε τις εκτελέσεις στο αρχείο καταγραφής κατά τη διάρκεια μιας ημέρας αναταράξεων για να δείτε πόσο συχνά εκτελείται πραγματικά. Έπειτα κάντε το σενάριο ασφαλές για τόσες εκτελέσεις.
Δοκιμάστε τον κύκλο ζωής που απέτυχε, όχι μια μεταγενέστερη εντολή. Αναπαράγετε την εκκίνηση ή την επανασύνδεση, παρακολουθήστε το άγκιστρο να εκτελείται και επιβεβαιώστε ότι η εργασία πέτυχε τη στιγμή που εκτελείται πραγματικά. Μια επιτυχία από διαδραστικό κέλυφος μετά είναι απόδειξη για την εξάρτηση, όχι απόδειξη ότι η διαδρομή εκκίνησης λειτουργεί.
Ονομάστε το συμβάν από το οποίο εξαρτάται κάθε εργασία και μετά συνδέστε την με αυτό το συμβάν. Όλα τα άλλα είναι καθυστέρηση που προσποιείται ότι είναι έλεγχος.