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

Ο μηχανισμός λειτουργίας Docker Swarm μπορεί να είναι δύσκολο να σπάσει στην αρχή. Αλλά μην ανησυχείτε, θα το αναλύσουμε σε αυτό το άρθρο. Τι είναι λοιπόν το Docker Swarm; Γιατί να το χρησιμοποιήσω; Και πώς λειτουργεί;

Τι είναι το Docker Swarm και πώς λειτουργεί;

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

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

instagram viewer

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

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

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

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

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

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

Γιατί να χρησιμοποιήσετε το Docker Swarm;

Το Docker Swarm είναι βολικό για την ανάπτυξη σύνθετων εφαρμογών με προοπτικές υψηλών επεκτασιμότητας. Μία από τις κύριες περιπτώσεις χρήσης του είναι η αποκέντρωση μικροϋπηρεσιών. Στη συνέχεια, κάθε microservice μοιράζεται ένα παρόμοιο δοχείο με εκείνους σε άλλους κόμβους εργαζομένων.

Ένας άλλος λόγος για να χρησιμοποιήσετε το Docker Swarm είναι ότι πολλοί κεντρικοί υπολογιστές εκτελούν εργασίες ταυτόχρονα σε ένα σύμπλεγμα. Αυτό έρχεται σε αντίθεση με το Docker Compose, το οποίο σας επιτρέπει να τρέχετε μόνο πολλά κοντέινερ σε έναν κινητήρα Docker.

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

Και τι περισσότερο; Σε αντίθεση με τα μεμονωμένα Docker Containers, όπου ένα κοντέινερ σταματά όταν αποτυγχάνει, το Docker Swarm ανακατανέμει αυτόματα τις εργασίες μεταξύ των διαθέσιμων κόμβων εργαζομένων όποτε αποτυγχάνει.

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

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

Το Docker έχει πολλές εναλλακτικές, και ένα από τα πιο κοντινά είναι το Kubernetes. Ωστόσο, το Docker Swarm είναι εύκολο στη χρήση και πιο αυτοματοποιημένο. Για παράδειγμα, ενώ μπορεί να χρειαστεί να εξισορροπήσετε το φορτίο χειροκίνητα σε ορισμένα άλλα εργαλεία ενορχήστρωσης όπως το Kubernetes, το Docker Swarm διαθέτει αυτόματη εξισορρόπηση φορτίου, η οποία διευκολύνει τη ζωή των DevOps.

The Docker Swarm Architecture

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

Υπηρεσίες

Η υπηρεσία Docker Swarm περιγράφει λεπτομερώς τη διαμόρφωση της εικόνας Docker που εκτελεί όλα τα κοντέινερ σε ένα σμήνος. Περιλαμβάνει πληροφορίες σχετικά με τις εργασίες σε ένα σύμπλεγμα. Για παράδειγμα, μια υπηρεσία μπορεί να περιγράφει α Εγκατάσταση διακομιστή SQL με Docker.

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

Οι υπηρεσίες στο Docker Swarm μπορούν να είναι καθολικές ή να αναπαράγονται.

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

Κόμβοι

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

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

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

Καθήκοντα

Μια εργασία ορίζει την εργασία που έχει ανατεθεί σε κάθε κόμβο σε ένα σμήνος Docker. Στο παρασκήνιο, ο προγραμματισμός εργασιών στο Docker Swarm ξεκινά όταν ένας ενορχηστρωτής δημιουργεί εργασίες και τις μεταβιβάζει σε έναν προγραμματιστή, ο οποίος δημιουργεί ένα κοντέινερ για κάθε εργασία.

Στη συνέχεια, ο κόμβος διαχειριστή χρησιμοποιεί τον προγραμματιστή για να εκχωρήσει και να εκχωρήσει εκ νέου εργασίες σε κόμβους όπως απαιτείται και καθορίζεται στην υπηρεσία Docker.

Docker Swarm vs. Docker Compose: Ποιες είναι οι διαφορές;

Οι άνθρωποι χρησιμοποιούν συχνά το Docker Compose και το Docker Swarm εναλλακτικά. Αν και και τα δύο περιλαμβάνουν τη λειτουργία πολλών κοντέινερ, είναι διαφορετικά.

Ενώ το Docker Compose σάς επιτρέπει να εκτελείτε πολλά κοντέινερ σε έναν μόνο κεντρικό υπολογιστή, το Docker Swarm τα διανέμει σε πολλούς κινητήρες Docker σε ένα σύμπλεγμα.

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

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

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

Το Docker Swarm σάς βοηθά να αναπτύξετε σύνθετες εφαρμογές

Το Containerization έχει ξεπεράσει τις εικονικές μηχανές στο σχεδιασμό λογισμικού συνεχούς ενοποίησης και συνεχούς παράδοσης (CI/CD). Ως εκ τούτου, η κατανόηση της στιβαρότητας του μηχανισμού Docker Swarm είναι μια επιπλέον δεξιότητα εάν θέλετε να γίνετε ένας ανεκτίμητος ειδικός στα DevOps.

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