Εισαγωγή
Προαπαιτούμενα
Ανάπτυξη
Εγκαταστήστε το Alpine Linux 3.9.0 στους διακομιστές
Διαμόρφωση διακομιστή μετά την εγκατάσταση
Εγκαταστήστε το Docker στους διακομιστές σας
Εκκινήστε ένα σμήνος Docker με έναν κόμβο διαχειριστή και έναν κόμβο εργάτη
Αναπτύξτε το Portainer με SSL για να διαχειριστείτε το σμήνος Docker σας
Εισαγωγή
Αυτός ο οδηγός θα σας δείξει πώς να δημιουργήσετε και να διαμορφώσετε ένα σμήνος Docker χρησιμοποιώντας πολλούς διακομιστές Alpine Linux 3.9.0 και Portainer. Λάβετε υπόψη ότι το Vultr προσφέρει μια εφαρμογή Docker με ένα κλικ που υποστηρίζει επί του παρόντος τόσο το CentOS 7 x64 όσο και το Ubuntu 16.04 x64.
Προαπαιτούμενα
Για να ξεκινήσετε, θα χρειαστείτε τουλάχιστον δύο διακομιστές VC2 με Alpine Linux 3.9.0. Μέσα στο σμήνος Docker, ένας από αυτούς τους διακομιστές θα λειτουργεί ως manager node
- διεπαφή με εξωτερικά δίκτυα και ανάθεση εργασιών σε κόμβους εργαζομένων. Ο άλλος διακομιστής θα ενεργήσει στη συνέχεια ως worker node
- εκτελεστικές εργασίες που του ανατίθενται από τον κόμβο διαχειριστή.
Σημειώστε ότι μπορείτε να εκκινήσετε περισσότερους από δύο διακομιστές εάν η εφαρμογή σας απαιτεί πλεονασμό ή/και μεγαλύτερη υπολογιστική ισχύ και τα βήματα που παρέχονται σε αυτόν τον οδηγό θα εξακολουθούν να ισχύουν.
Ανάπτυξη
Επισκεφτείτε τη διεπαφή ανάπτυξης διακομιστή Vultr .
Βεβαιωθείτε ότι η Vultr Cloud (VC2)
καρτέλα είναι επιλεγμένη στο επάνω μέρος της σελίδας.
Μπορείτε να επιλέξετε οποιαδήποτε τοποθεσία από την Server Location
ενότητα, ωστόσο όλοι οι διακομιστές πρέπει να βρίσκονται στην ίδια τοποθεσία , διαφορετικά δεν θα είναι δυνατή η ανάπτυξη ενός σμήνος Docker σε αυτούς.
Επιλέξτε την ISO Library
καρτέλα της Server Type
ενότητας και επιλέξτε την Alpine Linux 3.9.0 x86_64
εικόνα.
Επιλέξτε την κατάλληλη επιλογή από την Server Size
ενότητα. Αυτός ο οδηγός θα χρησιμοποιεί το μέγεθος διακομιστή SSD 25 GB, αλλά αυτό μπορεί να είναι ανεπαρκές για να καλύψει τις απαιτήσεις πόρων της εφαρμογής σας. Ενώ το Vultr διευκολύνει την αναβάθμιση του μεγέθους ενός διακομιστή αφού έχει ήδη ξεκινήσει, θα πρέπει να εξετάσετε προσεκτικά ποιο μέγεθος διακομιστή χρειάζεται η εφαρμογή σας για να αποδώσει βέλτιστα.
Στην Additional Features
ενότητα, πρέπει να επιλέξετε την Enable Private Networking
επιλογή. Ενώ οι άλλες επιλογές δεν απαιτούνται για να ακολουθήσετε αυτόν τον οδηγό, θα πρέπει να εξετάσετε εάν η καθεμία έχει νόημα ή όχι στο πλαίσιο της αίτησής σας.
Εάν είχατε ενεργοποιήσει προηγουμένως την Multiple Private Networks
επιλογή στον λογαριασμό σας, θα χρειαστεί να επιλέξετε ένα υπάρχον ή να δημιουργήσετε ένα νέο ιδιωτικό δίκτυο για τους διακομιστές σας. Εάν δεν το έχετε ενεργοποιήσει, τότε μπορείτε να αγνοήσετε αυτήν την ενότητα. Για πληροφορίες σχετικά με τη μη αυτόματη διαμόρφωση ιδιωτικών δικτύων, ανατρέξτε σε αυτόν τον οδηγό .
Παραλείψτε την Firewall Group
ενότητα προς το παρόν. Μόνο ο διακομιστής που ενεργεί ως κόμβος διαχειριστή στο σμήνος Docker θα χρειαστεί εκτεθειμένες θύρες και αυτές θα πρέπει να ρυθμιστούν μετά την ανάπτυξη του διακομιστή.
Στο κάτω μέρος της σελίδας, πρέπει να εισαγάγετε ένα Server Qty
από τουλάχιστον δύο. Όπως αναφέρθηκε προηγουμένως, μπορεί να χρειαστείτε περισσότερους από δύο διακομιστές, αλλά δύο αρκούν για να ακολουθήσετε αυτόν τον οδηγό.
Τέλος, στην Server Hostname & Label
ενότητα, εισαγάγετε ουσιαστικά και αξιομνημόνευτα ονόματα κεντρικών υπολογιστών και ετικέτες για κάθε διακομιστή. Για τους σκοπούς αυτού του οδηγού, το όνομα κεντρικού υπολογιστή και η ετικέτα του πρώτου διακομιστή θα είναι docker-manager
και Docker Manager
, αντίστοιχα- και docker-worker
και Docker Worker
για τον δεύτερο, αντίστοιχα.
Αφού ελέγξετε ξανά όλες τις διαμορφώσεις σας, μπορείτε στη συνέχεια να κάνετε κλικ στο Deploy Now
κουμπί στο κάτω μέρος της σελίδας για να εκκινήσετε τους διακομιστές σας.
Εγκαταστήστε το Alpine Linux 3.9.0 στους διακομιστές
Επειδή επιλέξατε ένα λειτουργικό σύστημα από τη βιβλιοθήκη ISO του Vultr, θα χρειαστεί να εγκαταστήσετε και να διαμορφώσετε με μη αυτόματο τρόπο το Alpine Linux 3.9.0 σε κάθε διακομιστή.
Αφού δώσετε στο Vultr ένα ή δύο λεπτά για να εκχωρήσει τους διακομιστές σας, κάντε κλικ στο εικονίδιο με την τριπλή κουκκίδα more options
για τον Docker Manager
διακομιστή στη διεπαφή διαχείρισης διακομιστή και, στη συνέχεια, επιλέξτε την View Console
επιλογή.
Θα πρέπει να ανακατευθυνθείτε σε μια κονσόλα με μια προτροπή σύνδεσης. Εάν όχι, περιμένετε άλλο ένα λεπτό μέχρι το Vultr να ολοκληρώσει την ανάπτυξη των διακομιστών σας.
Σε αυτήν την προτροπή σύνδεσης, πληκτρολογήστε root
ως όνομα χρήστη. Η ζωντανή έκδοση του Alpine Linux 3.9.0 (που είναι αυτό που τρέχουν οι διακομιστές σας αυτήν τη στιγμή) δεν απαιτεί από τον υπερχρήστη να εισάγει κωδικό πρόσβασης κατά τη σύνδεση.
Μόλις συνδεθείτε επιτυχώς στον λογαριασμό root, θα δείτε ένα μήνυμα καλωσορίσματος ακολουθούμενο από ένα μήνυμα κελύφους που μοιάζει με το ακόλουθο:
localhost:~#
Για να ξεκινήσετε το πρόγραμμα εγκατάστασης του Alpine Linux, πληκτρολογήστε την ακόλουθη εντολή:
# setup-alpine
Αρχικά, επιλέξτε μια κατάλληλη διάταξη πληκτρολογίου. Αυτός ο οδηγός θα χρησιμοποιήσει τη us
διάταξη και την παραλλαγή.
Όταν ορίζετε το όνομα κεντρικού υπολογιστή, επιλέξτε το ίδιο όνομα κεντρικού υπολογιστή που ορίσατε για αυτόν τον διακομιστή κατά την ανάπτυξη. Εάν ακολουθείτε ακριβώς αυτόν τον οδηγό, το όνομα κεντρικού υπολογιστή θα πρέπει να είναι docker-manager
.
Θα πρέπει να είναι διαθέσιμες δύο διεπαφές δικτύου: eth0
και eth1
. Εάν βλέπετε μόνο eth0
, αυτό σημαίνει ότι δεν ρυθμίσατε σωστά το ιδιωτικό δίκτυο των διακομιστών σας. Εκκίνηση eth0
με χρήση dhcp
και προετοιμασία eth1
χρησιμοποιώντας την ιδιωτική διεύθυνση IP, τη μάσκα δικτύου και την πύλη που εκχωρήθηκε σε αυτόν τον διακομιστή κατά την ανάπτυξη. Μπορείτε να αποκτήσετε πρόσβαση σε αυτές τις λεπτομέρειες από τη διεπαφή ρυθμίσεων του διακομιστή σας. Όταν σας ζητηθεί, μην εκτελέσετε καμία μη αυτόματη ρύθμιση παραμέτρων δικτύου.
Εισαγάγετε έναν νέο κωδικό πρόσβασης για τον λογαριασμό root και, στη συνέχεια, επιλέξτε μια ζώνη ώρας κατάλληλη για την τοποθεσία στην οποία επιλέξατε να αναπτύξετε αυτούς τους διακομιστές.
Εάν σκοπεύετε να χρησιμοποιήσετε διακομιστή μεσολάβησης HTTP/FTP, εισαγάγετε τη διεύθυνση URL του, διαφορετικά μην ορίσετε μια διεύθυνση URL διακομιστή μεσολάβησης.
Επιλέξτε έναν πελάτη NTP για τη διαχείριση του συγχρονισμού ρολογιού συστήματος. Αυτός ο οδηγός θα χρησιμοποιήσει busybox
.
Όταν σας ζητηθεί να χρησιμοποιήσετε έναν καθρέφτη αποθήκης πακέτων, επιλέξτε ένα ρητά εισάγοντας τον αριθμό του. εντοπίζει αυτόματα και επιλέγει το ταχύτερο πληκτρολογώντας f
; ή να επεξεργαστείτε με μη αυτόματο τρόπο το αρχείο διαμόρφωσης του αποθετηρίου πληκτρολογώντας e
, το οποίο δεν συνιστάται, εκτός εάν είστε εξοικειωμένοι με το Alpine Linux. Αυτός ο οδηγός θα χρησιμοποιήσει τον πρώτο καθρέφτη.
Εάν σκοπεύετε να χρησιμοποιήσετε SSH για πρόσβαση στους διακομιστές σας ή για να φιλοξενήσετε ένα σύστημα αρχείων που βασίζεται σε SSH, επιλέξτε έναν διακομιστή SSH για χρήση. Αυτός ο οδηγός θα χρησιμοποιήσει openssh
.
Όταν σας ζητηθεί να χρησιμοποιήσετε έναν δίσκο, επιλέξτε δίσκο vda
ως sys
τύπο.
Το Alpine Linux 3.9.0 θα πρέπει τώρα να εγκατασταθεί στον διακομιστή σας. Επαναλάβετε αυτήν τη διαδικασία για όλους τους άλλους διακομιστές που αναπτύξατε νωρίτερα, διασφαλίζοντας ότι αντικαθιστάτε τις σωστές τιμές για το όνομα κεντρικού υπολογιστή και τη eth1
διεπαφή δικτύου.
Διαμόρφωση διακομιστή μετά την εγκατάσταση
Σε αυτό το σημείο, οι διακομιστές σας εξακολουθούν να εκτελούν τη ζωντανή έκδοση ISO του Alpine Linux 3.9.0. Για εκκίνηση από την εγκατάσταση του SSD, επισκεφτείτε τη διεπαφή ρυθμίσεων του διακομιστή σας, μεταβείτε στην Custom ISO
είσοδο του πλαϊνού μενού και κάντε κλικ στο Remove ISO
κουμπί. Αυτό θα πρέπει να επανεκκινήσει τον διακομιστή. Εάν δεν το κάνει, τότε επανεκκινήστε χειροκίνητα.
Μόλις ολοκληρωθεί η επανεκκίνηση του διακομιστή, μεταβείτε ξανά στην κονσόλα Ιστού του διακομιστή Docker Manager
.
Συνδεθείτε στον λογαριασμό root χρησιμοποιώντας τον κωδικό πρόσβασης που ορίσατε νωρίτερα κατά τη διαδικασία εγκατάστασης.
Ενεργοποιήστε το αποθετήριο πακέτων κοινότητας αφαιρώντας τον σχολιασμό της τρίτης γραμμής /etc/apk/repositories
χρήσης vi
. Μπορείτε να ενεργοποιήσετε το edge και τα αποθετήρια δοκιμής με παρόμοιο τρόπο, αλλά δεν απαιτείται να ακολουθήσουν αυτόν τον οδηγό.
Συγχρονίστε το ευρετήριο τοπικού πακέτου του διακομιστή με το απομακρυσμένο αποθετήριο που επιλέξατε νωρίτερα, εισάγοντας την ακόλουθη εντολή φλοιού:
# apk update
Στη συνέχεια, αναβαθμίστε τα παλιά πακέτα:
# apk upgrade
Όπως και πριν, επαναλάβετε αυτήν τη διαδικασία διαμόρφωσης για κάθε διακομιστή που αναπτύξατε νωρίτερα.
Εγκαταστήστε το Docker στους διακομιστές σας
Πριν εγκαταστήσετε το ίδιο το πακέτο Docker, ίσως θελήσετε να δημιουργήσετε έναν ξεχωριστό docker
χρήστη. Μπορείτε να το κάνετε αυτό χρησιμοποιώντας την ακόλουθη εντολή:
# adduser docker
Σημείωση: Αυτός ο νέος χρήστης και τυχόν χρήστες που προστέθηκαν στη νέα docker
ομάδα θα έχουν δικαιώματα root μόλις εγκατασταθεί το πακέτο Docker. Δείτε το ακόλουθο τεύχος από το αποθετήριο του Moby Github:
Due to the --privileged
in docker, anyone added to the 'docker' group is root equivalent. Anyone in the docker group has a back door around all privilege escalation policy and auditing on the system.
This is different from someone being able to run running sudo to root, where they have policy, and audit applied to them.
Εάν θέλετε να δώσετε άδεια sudo στον docker
χρήστη, εγκαταστήστε πρώτα το sudo
πακέτο:
# apk add sudo
Στη συνέχεια, δημιουργήστε μια sudo
ομάδα:
# addgroup sudo
Τέλος, προσθέστε τον docker
χρήστη στην sudo
ομάδα:
# adduser docker sudo
Τώρα μπορείτε να ακολουθήσετε το βήμα 4 αυτού του οδηγού για να ολοκληρώσετε τη διαμόρφωση του sudo.
Σε αυτό το σημείο, είστε έτοιμοι να εγκαταστήσετε το πακέτο Docker. Σημειώστε ότι δεν είναι απολύτως απαραίτητο να έχετε έναν ξεχωριστό docker
χρήστη με δυνατότητα sudo για την εγκατάσταση και τη διαμόρφωση του Docker, αλλά αυτός ο οδηγός ακολουθεί αυτή τη σύμβαση.
Εγκαταστήστε το πακέτο Docker με την ακόλουθη εντολή:
# apk add docker
Στη συνέχεια, ενεργοποιήστε το σενάριο έναρξης Docker:
# rc-update add docker
Τέλος, ξεκινήστε τον δαίμονα Docker:
# rc-service docker start
Μπορείτε να επαληθεύσετε ότι το Docker εκτελείται με αυτήν την εντολή:
# docker info
Όπως και την προηγούμενη φορά, επαναλάβετε αυτήν τη διαδικασία εγκατάστασης Docker για κάθε διακομιστή που αναπτύξατε στην αρχή.
Εκκινήστε ένα σμήνος Docker με έναν κόμβο διαχειριστή και έναν κόμβο εργάτη
Με όλη αυτή τη ρύθμιση, είστε επιτέλους έτοιμοι να δημιουργήσετε το σμήνος Docker.
Δημιουργήστε ένα σμήνος και προσθέστε έναν κόμβο διαχειριστή
Πλοηγηθείτε πίσω στην κονσόλα Ιστού του Docker Manager
διακομιστή σας . Θα διαμορφώσετε αυτόν τον διακομιστή ως κόμβο διαχειριστή στο σμήνος σας. Εάν επιλέξατε να δημιουργήσετε τον docker
χρήστη νωρίτερα, συνδεθείτε χρησιμοποιώντας αυτόν τον λογαριασμό και όχι τον υπερχρήστη.
Εισαγάγετε την ακόλουθη εντολή, αλλά αντικαταστήστε την 192.0.2.1
με την ιδιωτική, (όχι τη δημόσια), διεύθυνση IP που Docker Manager
εκχωρήθηκε στον διακομιστή σας :
$ docker swarm init --advertise-addr 192.0.2.1
Το Docker θα εμφανίσει μια εντολή που μπορείτε να εκτελέσετε σε άλλους διακομιστές στο ιδιωτικό δίκτυο για να τους προσθέσετε ως κόμβους εργαζομένων σε αυτό το νέο σμήνος. Αποθηκεύστε αυτήν την εντολή.
Προσθέστε έναν κόμβο εργασίας
Τώρα πλοηγηθείτε στην κονσόλα Ιστού του Docker Worker
διακομιστή σας , συνδέοντας τον docker
χρήστη εάν τον δημιουργήσατε εσείς.
Για να προσθέσετε αυτόν τον διακομιστή ως κόμβο εργασίας στο σμήνος που μόλις δημιουργήσατε, εκτελέστε την εντολή που αποθηκεύσατε από την έξοδο της εντολής δημιουργίας σμήνου. Θα μοιάζει με το παρακάτω:
$ docker swarm join --token SWMTKN-1-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXX 192.0.2.1:2377
Το Docker θα εξάγει εάν ο κόμβος μπόρεσε να ενταχθεί στο σμήνος. Εάν αντιμετωπίσετε προβλήματα με την προσθήκη κόμβων εργαζομένων στο σμήνος, ελέγξτε ξανά τη διαμόρφωση του ιδιωτικού δικτύου σας και ανατρέξτε σε αυτόν τον οδηγό για αντιμετώπιση προβλημάτων.
Εάν αναπτύξατε περισσότερους από δύο διακομιστές στην αρχή, μπορείτε να προσθέσετε τους υπόλοιπους ως κόμβους εργαζομένων στο σμήνος σας χρησιμοποιώντας την παραπάνω εντολή, αυξάνοντας τους διαθέσιμους πόρους στην εφαρμογή σας. Εναλλακτικά, μπορείτε να προσθέσετε επιπλέον κόμβους διαχειριστή, αλλά αυτό είναι πέρα από το πεδίο εφαρμογής αυτού του οδηγού.
Αναπτύξτε το Portainer με SSL για να διαχειριστείτε το σμήνος Docker σας
Σε αυτό το σημείο το σμήνος Docker είναι έτοιμο για χρήση. Μπορείτε, ωστόσο, προαιρετικά να εκκινήσετε μια στοίβα Portainer στον κόμβο διαχειριστή στο σμήνος σας. Το Portainer προσφέρει μια βολική διεπαφή ιστού για τη διαχείριση του σμήνος σας και των κόμβων σε αυτό.
Ήρθε τώρα η ώρα να δημιουργήσετε μια ομάδα τείχους προστασίας για το σμήνος σας. Εκτός εάν το απαιτεί συγκεκριμένα η εφαρμογή σας, εκθέστε μόνο θύρες στους κόμβους διαχειριστή σας . Η έκθεση των θυρών στους κόμβους εργαζομένων σας χωρίς προσεκτική εξέταση μπορεί να δημιουργήσει τρωτά σημεία.
Μεταβείτε στη διεπαφή διαχείρισης τείχους προστασίας και δημιουργήστε μια νέα ομάδα τείχους προστασίας. Η εφαρμογή σας θα πρέπει να υπαγορεύει ποιες θύρες θα εκτίθενται, αλλά πρέπει, τουλάχιστον, να εκθέσετε τη θύρα 9000
για το Portainer. Εφαρμόστε αυτήν την ομάδα τείχους προστασίας στον Docker Manager
διακομιστή.
Αν ��αι δεν απαιτείται, συνιστάται ανεπιφύλακτα η ασφάλιση του Portainer με SSL. Για χάρη αυτού του οδηγού, θα χρησιμοποιείτε μόνο ένα αυτο-υπογεγραμμένο πιστοποιητικό OpenSSL, αλλά θα πρέπει να σκεφτείτε να χρησιμοποιήσετε το Let's Encrypt στην παραγωγή.
Πλοηγηθείτε στην κονσόλα Ιστού του Docker Manager
διακομιστή, συνδεθείτε χρησιμοποιώντας τον docker
χρήστη και χρησιμοποιήστε τις ακόλουθες εντολές για να δημιουργήσετε ένα αυτο-υπογεγραμμένο πιστοποιητικό OpenSSL:
$ mkdir ~/certs
$ openssl genrsa -out ~/certs/portainer.key 2048
$ openssl req -new -x509 -sha256 -key ~/certs/portainer.key -out ~/certs/portainer.pem -days 3650
Δημιουργήστε ένα νέο αρχείο, ~/portainer-agent-stack.yml
, με τα ακόλουθα περιεχόμενα:
version: '3.2'
services:
agent:
image: portainer/agent
environment:
AGENT_CLUSTER_ADDR: tasks.agent
CAP_HOST_MANAGEMENT: 1
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/lib/docker/volumes:/var/lib/docker/volumes
- /:/host
networks:
- agent_network
deploy:
mode: global
portainer:
image: portainer/portainer
command: -H tcp://tasks.agent:9001 --tlsskipverify --ssl --sslcert /certs/portainer.pem --sslkey /certs/portainer.key
ports:
- target: 9000
published: 9000
protocol: tcp
mode: host
volumes:
- portainer_data:/data
- /home/docker/certs:/certs
networks:
- agent_network
deploy:
mode: replicated
replicas: 1
placement:
constraints: [node.role == manager]
networks:
agent_network:
driver: overlay
attachable: true
volumes:
portainer_data:
Αφού τροποποιήσετε αυτό το αρχείο διαμόρφωσης στοίβας Docker ώστε να συμμορφώνεται με τις απαιτήσεις σας, μπορείτε να το αναπτύξετε:
$ docker stack deploy --compose-file ~/portainer-agent-stack.yml portainer
Για να επαληθεύσετε ότι το Portainer λειτουργεί, εκτελέστε την ακόλουθη εντολή αφού δώσετε στον Docker ένα ή δύο λεπτά για να αναπτύξει τη στοίβα:
$ docker ps
Θα δείτε δύο κοντέινερ με τις εικόνες portainer/portainer:latest
και portainer/agent:latest
, επιβεβαιώνοντας ότι το Portainer ξεκίνησε σωστά.
Τώρα μπορείτε να διαμορφώσετε και να διαχειριστείτε το σμήνος Docker επισκεπτόμενοι τη δημόσια διεύθυνση IP του Docker Manager
διακομιστή σας στη θύρα 9000
χρησιμοποιώντας HTTPS.