Οι επιχειρήσεις συνεπάγονται μεγάλο όγκο δεδομένων και αυτό καθιστά το πρόβλημα του χειρισμού και της διαχείρισής τους πιο δύσκολο. Παραδοσιακά, ο κλάδος χρησιμοποιεί συστήματα RDBMS εδώ και δεκαετίες, αλλά με την έλευση των Big Data στον 21ο αιώνα, οι βάσεις δεδομένων NoSQL (Not only SQL) μπήκαν στο προσκήνιο για μη δομημένα και ημι-δομημένα δεδομένα μεγάλης κλίμακας.
Σε αυτή την ανάρτηση, πρόκειται να δημιουργήσω ένα MongoDB cluster.
MongoDB είναι μια δωρεάν και ανοιχτού κώδικα NoSQL βάση δεδομένων εγγράφων, η οποία χρησιμοποιείται ευρέως λόγω του υψηλού επιπέδου επεκτασιμότητας και ευελιξίας που παρέχει.
Για τη διάθεση του MongoDB σε περιβάλλον παραγωγής, συνιστάται η χρήση Replica Sets. Τα Replica sets είναι το αντίστοιχο μιας εγκατάστασης Master/Slave του MongoDB στον σχεσιακό κόσμο, αλλά σε αντίθεση, η ρύθμισή τους είναι πολύ εύκολη, καθώς όλα είναι ενσωματωμένα. Για περισσότερα σχετικά με τα Replica Sets, δείτε το τον ορισμό του TutorialsPoint’s για τη διαδικασία του replication.
Σχεδιασμός του MongoDB Cloud Server Cluster σας
Πρόκειται να δημιουργήσω ένα cluster 3 κόμβων. Είναι σημαντικό να τους δώσετε ίσους πόρους επειδή οποιοσδήποτε από αυτούς μπορεί να γίνει ο κύριος (δηλ. master) διακομιστής. Αυτοί οι κόμβοι ή μηχανήματα μπορούν να τρέξουν σε οποιοδήποτε λειτουργικό σύστημα, αλλά σε αυτόν τον οδηγό, πρόκειται να χρησιμοποιήσω το Ubuntu 18.04 LTS. Για το πώς να συνδέσετε και να ρυθμίσετε την προεγκατεστημένη εικόνα από τη βιβλιοθήκη της CloudSigma’s, μπορείτε να ανατρέξετε στο αυτόν τον οδηγό.
Εφόσον το όλο νόημα με ένα Replica Set είναι ότι το cluster θα πρέπει να επιβιώσει αν ένας μεμονωμένος κόμβος τεθεί εκτός λειτουργίας, θα ήταν μάλλον άσκοπο αν όλοι οι διακομιστές σας βρίσκονταν στον ίδιο φυσικό κεντρικό υπολογιστή. Ευτυχώς, η CloudSigma προσφέρει κάτι που ονομάζεται availability groups. Αυτό σημαίνει ότι μπορείτε να δώσετε εντολή στο σύστημα να ομαδοποιήσει και τους τρεις διακομιστές σας σε διαφορετικές ομάδες. Με αυτόν τον τρόπο, δεν θα βρίσκονται ποτέ στον ίδιο φυσικό κεντρικό υπολογιστή. Περισσότερες πληροφορίες σχετικά με αυτό και άλλα χαρακτηριστικά ασφάλειας και επιχειρηματικής συνέχειας μπορείτε να βρείτε εδώ.
Είναι επίσης σημαντικό να χρησιμοποιήσετε μια έκδοση 64-bit του Linux. Ο λόγος είναι απλώς ότι το MongoDB δεν λειτουργεί καλά σε συστήματα 32-bit (περισσότερα σχετικά με αυτό εδώ).
Εγκατάσταση του MongoDB στο Cloud
Αυτή η ενότητα είναι αρκετά απλή. Είτε χρησιμοποιήστε μία από τις προ-ρυθμισμένες Ubuntu 18.04 εικόνες είτε εγκαταστήστε το μόνοι σας.
Η διαμόρφωση CPU, RAM και δίσκου είναι πραγματικά εξατομικευμένη και εξαρτάται από το φορτίο σας. Για μια μικρή εγκατάσταση, 4 GHz CPU, 4 GB RAM και 10 GB δίσκος (για το σύστημα) θα πρέπει να είναι επαρκή. Όταν συνδέετε τους δίσκους σας, βεβαιωθείτε ότι χρησιμοποιείτε VirtIO. Εάν χρησιμοποιήσετε IDE, η απόδοση θα μειωθεί σημαντικά. Επίσης, εφόσον δημιουργείτε ένα Replica Set, πρέπει όλοι οι κόμβοι (και οι διακομιστές εφαρμογών) να βρίσκονται στο ίδιο VLAN.
Σε αντίθεση με πολλούς άλλους παρόχους cloud, δεν χρειάζεται να διαμορφώσετε τον αποθηκευτικό σας χώρο με RAID10 ή παρόμοιο για να βελτιώσετε την απόδοση. Όπως αναφέρουν πολλοί από τους πελάτες μας, θα έχετε εκπληκτική απόδοση αμέσως χρησιμοποιώντας τόσο SSD όσο και μαγνητικούς δίσκους στην CloudSigma.
Εξακολουθώ να συνιστώ τη διατήρηση των δεδομένων του MongoDB σε ξεχωριστό δίσκο. Ο λόγος για αυτό είναι απλώς ότι κάποια στιγμή μπορεί να χρειαστεί να κάνετε κάποιες βελτιστοποιήσεις στο σύστημα αρχείων που δεν θα θέλατε να κάνετε σε ολόκληρο το σύστημα αρχείων σας.
Έχοντας αυτό κατά νου, είναι ευκολότερο να προσθέσετε απλώς αυτόν τον δίσκο μετά τη ρύθμιση των διακομιστών. Προς το παρόν, ας εστιάσουμε μόνο στην εγκατάσταση του συστήματος. Εάν κάνετε την εγκατάσταση μόνοι σας (αντί να χρησιμοποιήσετε τα προ-ρυθμισμένα συστήματα), θα συνιστούσα να πατήσετε το F4 στο μενού εκκίνησης και να επιλέξετε ‘Install a minimal virtual machine’.
Δημιουργώ 3 μηχανήματα, το καθένα με τις ακόλουθες προδιαγραφές:
- CPU: 4 GHz
- RAM: 4 GB
- SSD: 10 GB (Ubuntu 18.04 LTS), 20 GB (επιπλέον δίσκος)
Όπως αναφέρεται στο τμήμα SSD, συνδέω έναν δίσκο μεγέθους 10 GB με εγκατεστημένο το Ubuntu 18.04 LTS σε αυτόν.
Επιπλέον, συνδέω έναν άλλο κενό δίσκο μεγέθους 20 GB μαζί με αυτόν για την αποθήκευση δεδομένων MongoDB. Το μέγεθος αυτού εξαρτάται σε μεγάλο βαθμό από τη χρήση σας, αλλά για ένα μικρό σύστημα, τα 20GB θα πρέπει πιθανώς να είναι επαρκή. Ωστόσο, επειδή μερικές φορές είναι δύσκολο να προβλεφθεί πόσα δεδομένα θα αποθηκεύσετε, θα χρησιμοποιήσουμε LVM. Αυτό θα σας επιτρέψει να προσθέσετε απλά έναν άλλο δίσκο αργότερα και να επεκτείνετε τον τόμο χωρίς να χρειαστεί να ξεκινήσετε από την αρχή. Εναλλακτικά, μπορείτε να χρησιμοποιήσετε έναν μόνο δίσκο και να τον κλιμακώσετε αργότερα μεresize2fs.
Για να προσθέσετε τον δίσκο, απλώς μεταβείτε στην ενότητα ‘Drives’, κάντε κλικ στο εικονίδιο ‘Create a new drive’ στο επάνω μέρος, δώστε ένα όνομα στον νέο δίσκο και ορίστε το μέγεθός του στα 20 GB. Μόλις αποθηκευτεί, μεταβείτε στη συγκεκριμένη μηχανή στην οποία θέλετε να τον προσαρτήσετε και στην ενότητα drives των λεπτομερειών αυτής της μηχανής, μπορείτε να κάνετε κλικ στο ‘Attach a drive’ και να επιλέξετε τον δίσκο.
Τώρα που έχετε τρεις μηχανές, μπορείτε να προχωρήσετε στην προσάρτηση του επιπλέον δίσκου που προσθέσατε για την αποθήκευση δεδομένων του MongoDB σε κάθε μηχανή. Συνιστώ να προσθέσετε αυτόν τον δίσκο ως διαμέρισμα. Η χρήση διαμερισμάτων επιτρέπει στο λειτουργικό σύστημα να διαχειρίζεται τις πληροφορίες σε κάθε περιοχή ξεχωριστά. Για να προσθέσω τον δίσκο ως διαμέρισμα, θα ελέγξω πρώτα όλους τους δίσκους που είναι προσαρτημένοι στη μηχανή μας. Για τον σκοπό αυτό, θα εκτελέσω την ακόλουθη εντολή:
|
1 |
fdisk -l |
Όταν εκτελώ την εντολή, λαμβάνω το αποτέλεσμα που αναφέρει τους δίσκους και τις συσκευές στη μηχανή μου.

Στην εικόνα, έχω επισημάνει έναν δίσκο 10 GB ως αυτόν στον οποίο είναι εγκατεστημένο το λειτουργικό μας σύστημα. Στη συνέχεια, υπάρχει ένας άλλος δίσκος 20 GB που έχει πλέον προσαρτηθεί. Η τοποθεσία του δίσκου είναι /dev/vdb. Μπορείτε να δημιουργήσετε ένα διαμέρισμα σε αυτόν τον δίσκο χρησιμοποιώντας τις ακόλουθες εντολές:
|
1 |
sudo fdisk /dev/vdb |
Θα ανοίξει το εργαλείο fdisk, ένα εργαλείο γραμμής εντολών που παρέχει λειτουργίες διαμέρισης δίσκου, όπου μπορείτε να δημιουργήσετε διαμερίσματα στον δίσκο μας. Θα εμφανίσει ένα μήνυμα προτροπής “Command (m for help):” όπου πρέπει να εισαγάγετε n για να δημιουργήσετε ένα νέο διαμέρισμα, και στη συνέχεια απλώς συνεχίστε να πατάτε enter για να αποδεχτείτε τις προεπιλεγμένες τιμές. Και αφού δημιουργήσει το διαμέρισμα, εισαγάγετε w για την εγγραφή των αλλαγών. Θα μοιάζει κάπως έτσι:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Command (m για βοήθεια): <strong>n</strong> Διαμέρισμα τύπος p κύριο (0 κύριο, 0 εκτεταμένο, 4 ελεύθερο) e εκτεταμένο (κοντέινερ για λογικά διαμερίσματα) Επιλογή (προεπιλογή p): Χρήση προεπιλεγμένης απάντησης p. Διαμέρισμα αριθμός (1-4, προεπιλογή 1): Πρώτος τομέας (2048-41943039, προεπιλογή 2048): Τελευταίος τομέας, +τομείς ή +μέγεθος{K,M,G,T,P} (2048-41943039, προεπιλογή 41943039): Δημιουργήθηκε ένα νέο διαμέρισμα 1 τύπου τύπου 'Linux' και με μέγεθος 20 GiB. Command (m για βοήθεια): <strong>w</strong> Ο πίνακας διαμερισμάτων έχει ήδη τροποποιηθεί. Κλήση ioctl() για εκ νέου-ανάγνωση του πίνακα διαμερισμάτων. Συγχρονισμός δίσκων. |
Έχει δημιουργηθεί ένα νέο διαμέρισμα 1 τύπου ‘Linux’ και μεγέθους 20 GiB. Τώρα που το διαμέρισμα έχει δημιουργηθεί, ας δημιουργήσουμε ένα LVM pool:
|
1 2 3 |
sudo pvcreate /dev/vdb1 sudo vgcreate mongodb /dev/vdb1 sudo lvcreate -n db -L 19.5g mongodb |
Έχω εισαγάγει ‘19.5g’ εφόσον το μέγεθος του διαμερίσματός μου είναι 20g. Στη συνέχεια, εκτελέστε την ακόλουθη εντολή για να βρείτε το όνομα του δίσκου:
|
1 |
fdisk -l | grep mongo | awk '{print $2'} |
Μετά από αυτό, διαμορφώστε τον δίσκο χρησιμοποιώντας τη μέθοδο ext4 με την ακόλουθη εντολή:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
sudo mkfs.ext4 /dev/mapper/mongodb-db Έξοδος: root@m4:/home/cloudsigma# sudo mkfs.ext4 /dev/mapper/mongodb-db mke2fs 1.44.1 (24-Μαρ-2018) Δημιουργία συστήματος αρχείων με 5217280 4k blocks και 1305600 inodes Σύστημα αρχείων UUID: 695a62e6-021d-4fc0-945c-cc51a92d86da Superblock αντίγραφα ασφαλείας αποθηκευμένα σε blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 Κατανομή ομάδας πινάκων: ολοκληρώθηκε Εγγραφή inode πινάκων: ολοκληρώθηκε Δημιουργία journal (32768 blocks): ολοκληρώθηκε Εγγραφή superblocks και συστήματος αρχείων λογιστικών πληροφοριών: ολοκληρώθηκε |
Στη συνέχεια, ας δημιουργήσουμε μια τοποθεσία για την προσάρτηση του δίσκου και έναν φάκελο στον οποίο θα διατηρούνται τα δεδομένα σας MongoDB.
|
1 |
sudo mkdir -p /mongodb/data |
Για να προσθέσετε μια καταχώριση στο fstab σχετικά με τον νέο σας δίσκο που πρόκειται να προσαρτηθεί, μπορείτε να χρησιμοποιήσετε απευθείας την παρακάτω εντολή:
|
1 |
echo -e "` blkid | grep mongodb | awk {'print $2'}`\t/mongodb\text4 auto,noexec,rw,sync,nouser\t0\t0" >> /etc/fstab |
Στην εντολή, blkid σας δίνει ένα UUID – Καθολικά Μοναδικό Αναγνωριστικό (Universally Unique Identifier) κάθε δίσκου. Εδώ απομονώνω με grep αυτό για τον δίσκο MongoDB και συνδυάζω αυτό το UUID με την τοποθεσία του φακέλου προσάρτησης, τον τύπο συστήματος αρχείων και άλλες επιλογές για τον δίσκο αντίστοιχα. Προσθέτω αυτή τη γραμμή στο /etc/fstab. Αν δεν το κάνετε αυτό, θα λάβετε σφάλμα κατά την προσάρτηση του δίσκου. Η καταχώριση μοιάζει με αυτό:
UUID=”695a62e6-021d-4fc0-945c-cc51a92d86da” /mongodb ext4 auto,noexec,rw,sync,nouser 0 0
Τώρα, μπορείτε να προσαρτήσετε τον δίσκο στην τοποθεσία /mongodb:
|
1 |
sudo mount /mongodb |
Εγκατάσταση του MongoDB
Με το σύστημα προετοιμασμένο, ας προχωρήσουμε στην εγκατάσταση του MongoDB. Παρόλο που το Ubuntu προσφέρει μια έκδοση του MongoDB στο δικό του αποθετήριο, σας συνιστώ να χρησιμοποιήσετε την επίσημη έκδοση του MongoDB. Ο λόγος είναι ότι το αποθετήριο του Ubuntu είναι αρκετά πίσω στις εκδόσεις, οπότε αν θέλετε να αξιοποιήσετε στο έπακρο το MongoDB, θα πρέπει να στραφείτε στις επίσημες εκδόσεις.
Εφόσον το MongoDB προσφέρει το δικό του αποθετήριο, μπορείτε απλά να το προσθέσετε στο σύστημά σας και στη συνέχεια να εγκαταστήσετε το MongoDB κανονικά. Ακολουθούν τα βήματα που πρέπει να ακολουθήσετε:
Πρώτα, εισαγάγετε το δημόσιο κλειδί που χρησιμοποιείται από το σύστημα διαχείρισης πακέτων:
|
1 |
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 |
Στη συνέχεια, δημιουργώ ένα αρχείο λίστας. Αυτό θα περιέχει το αποθετήριο όπου βρίσκεται το MongoDB, ώστε το σύστημά σας να μπορεί να το κατεβάσει από εκεί:
|
1 |
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list |
Τώρα, ενημερώνω την τοπική βάση δεδομένων πακέτων μου, ώστε να λάβω υπόψη τις αλλαγές.
|
1 |
sudo apt-get update |
Τώρα, μπορώ απλά να εγκαταστήσω το πακέτο χρησιμοποιώντας την ακόλουθη εντολή:
|
1 |
sudo apt-get install -y mongodb-org |
Έχω εγκαταστήσει το MongoDB σε καθεμία από τις μηχανές.
|
1 |
sudo service mongod start |
Τώρα το MongoDB είναι σε λειτουργία, με τα δεδομένα στον δίσκο που δημιουργήθηκε. Εάν αναμένεται μεγάλο φορτίο ή/και πολλές συνδέσεις, ίσως χρειαστεί να αυξήσετε τις τιμές ulimit.
Αν θέλετε να αποκτήσετε περισσότερες πληροφορίες για τα δεδομένα σας, ίσως θέλετε επίσης να εγγραφείτε στο MMS, το οποίο είναι μια δωρεάν υπηρεσία παρακολούθησης που βασίζεται στο cloud για το MongoDB.
Δημιουργία του Replica Set για το MongoDB Cloud σας
Τώρα, ας δημιουργήσουμε ένα replica set. Πριν από αυτό, πρέπει να βεβαιωθείτε ότι κάθε μία από τις μηχανές μπορεί να επικοινωνήσει με τις άλλες. Για το σκοπό αυτό, πηγαίνετε και προσθέστε αυτές τις καταχωρίσεις στο /etc/hosts
|
1 2 3 |
IP-1 m1.mongo.cluster m1 IP-2 m2.mongo.cluster m2 IP-3 m3.mongo.cluster m3 |
Για επαλήθευση, μπορείτε να δοκιμάσετε να κάνετε ping στα μηχανήματα χρησιμοποιώντας το hostname. Έτσι, αν η IP του μηχανήματος 1’s είναι IP-1, ας πούμε, 213.189.123.12, τότε αντί να γράψετε
|
1 |
ping 123.189.123.12 |
θα γράψω,
|
1 2 3 |
ping m1.mongo.cluster ή ping m1. |
Αν έχετε ενεργοποιήσει το firewall (κάτι που πραγματικά θα έπρεπε), βεβαιωθείτε ότι οι κόμβοι μπορούν να στέλνουν και να λαμβάνουν κίνηση TCP στις θύρες 28017 και 27017 στην εσωτερική διεπαφή.
Τώρα, σε κάθε ένα από τα μηχανήματα, προχωρήστε και εκκινήστε την υπηρεσία mongod χρησιμοποιώντας τις ακόλουθες εντολές.
Στο μηχάνημα m1,
|
1 |
mongod --dbpath /mongodb/data --replSet rs0 --bind_ip localhost,m1.mongo.cluster |
Στη συνέχεια, στο μηχάνημα m2,
|
1 |
mongod --dbpath /mongodb/data --replSet rs0 --bind_ip localhost,m2.mongo.cluster |
Στο μηχάνημα m3,
|
1 |
mongod --dbpath /mongodb/data --replSet rs0 --bind_ip localhost,m3.mongo.cluster |
Εδώ,
mongod είναι το όνομα της υπηρεσίας
dbpath είναι η τοποθεσία του καταλόγου της βάσης δεδομένων μας
replSet είναι το όνομα του replication set μας. Θα πρέπει να είναι το ίδιο για κάθε ένα από τα μηχανήματα στο ίδιο replica set
bind_ip είναι το hostname του μηχανήματος στο οποίο το εκτελείτε.
Μόλις εκκινήσετε την υπηρεσία mongod, μεταβείτε στον κύριο διακομιστή (στην περίπτωσή μου, έχω επιλέξει το m1) και εκτελέστε το mongo.
|
1 |
mongo |
Θα ξεκινήσει το τερματικό της MongoDB. Στο τερματικό, μεταβείτε και αρχικοποιήστε το replicaSet χρησιμοποιώντας την παρακάτω εντολή. Θα δημιουργήσει το replicaSet με τις προεπιλεγμένες ρυθμίσεις:
|
1 |
rs.initiate() |
Τώρα, ας προσθέσουμε τα άλλα δύο μηχανήματα ως αντίγραφα χρησιμοποιώντας τις ακόλουθες εντολές:
|
1 2 |
rs.add("m2.mongo.cluster") rs.add("m3.mongo.cluster") |
Μπορείτε να παρακολουθείτε την κατάσταση χρησιμοποιώντας την εντολή:
|
1 |
rs.status() |
Αυτό ήταν όλο. Θα πρέπει τώρα να είστε έτοιμοι και να λειτουργείτε με το MongoDB cluster σας στο αστραπιαία γρήγορο cloud της CloudSigma’s.
Σχόλια
Δεν υπάρχουν σχόλια ακόμα. Γράψτε το πρώτο.