1. Σκοπός εργασίας
+Η εργασία που επιλέχθηκε να πργματοποιηθεί στα πλαίσια του εργαστήρίου του μαθήματος Υ.Ν.Υ, ήταν η δημιουργία και η ανάπτυξη μία βάσης δεδομένων τύπου NoSQL, και +συγκεκριμένα η MongoDB με χρήση των εργαλέιων της πλατφόρμας Docker.
+1.1. Αρχικοί στόχοι
+Στο ξεκίνημα της ανάλυσης και ανάπτυξης της εργασίας μας θέσαμε αρχικούς στόχους :
+-
+
-
+
Σχετική εκμάθηση λειτουργίας της MongoDB.
+
+ -
+
Δημιουργία Repica set.
+
+ -
+
Δημιουργία και ανάπτυξη εφαρμογής Minio.
+
+ -
+
Σύνδεση των παραπάνω ώς μία εικονικά ενιαία εφαρμογή για τον τελικό χρήστη.
+
+
2. Δημιουργία του Docker-compose.yaml
+2.1. Δημιουργία Δικτύων
+Ξεκινήσαμε με την δημιουργία κατάλληλων δικτυώσεων.
+-
+
-
+
Ένα δίκτυο για κάθε replica set (1 primary 2 secondary).
+
+ -
+
Ένα δίκτυο που θα βρίσκονται όλα τα primary μαζί.
+
+
2.2. Δημιουργία Container
+Δημιουργήθηκαν 12 container και ποιο συγκεκριμένα 4 Replica Set των 3 container έκαστος.
+Για κάθε μέλος του Replica Set δόθηκαν οι κατάλλήλες ρυθμίσεις για την προετοιμασία ένταξης του στην ομάδα του.
+ + | ++Το επιθυμητό αποτέλεσμα ήταν να δημιουργηθεί μιά δυναμική εφαρμογή κατα την οποία ο διαχειριστής +απλά θα επιλέγει τον αριθμό των replica set και όχι το στατικό αποτέλεσμα που καταλήξαμε. + | +
2.2.1. Ονοματοδοσία
+Σε κάθε container δόθηκε ένα μοναδικό όνομα κατάλληλο για την δική μας διευκόλυνση και ευκολία.
-
+
-
+
Primary1
+
+ -
+
secondary1_1
+
+ -
+
secondary1_2
+
+ -
+
Primary2
+
+ -
+
κοκ.
+
+
2.2.2. Image
+Ως docker image του κάθε container επιλέχθηκε το official MongoDB image που υπήρχε στο Docker Hub.
+mongo:
2.2.3. Ports
+Σε κάθε container αντιστοιχήθηκε η port 27017 με μία port του εκάστοτε host που έτρεχε και για δική μας ευκολία έγινε πάλι ομαδοποίηση ανά replica set.
+-
+
-
+
Primary1 = 10001
+
+ -
+
secondary1_1 = 10002
+
+ -
+
secondary1_2 = 10003
+
+ -
+
Primary2 = 20001
+
+ -
+
κοκ.
+
+
2.2.4. Volumes
+Δημιουργήθηκε σε όλο το σμήνος που είχαμε ένας φάκελος με τα απαράιτητα αρχεία και έγινε mount σε κάθε container
./sys_files:/sys_files+
2.2.5. Networks
+Δόθηκαν οι κατάλληλες ρυθμίσεις για την ένταξη του στο ανάλογο δίκτυο. Έτσι το κάθε primary που γίνεται deploy + ανήκει σε 2 δίκτυα ( το δίκτυο των Primary και το δίκτυο του Replica set) ενώ τα secondary μόνο στο δίκτυο της Replica που ακήκουν.
+primary_network: +replica_setΧ_network:+
2.2.6. Παράμετροι Deploy
+Στις παραμέτρους του Deploy χρησιμοποιήσαμε την πολιτική Restart με καθυστέρηση 10 δευτερολέπτων, μέγιστο αριθμό επαναλήψεων 10 και με κενό μεταξύ τους 60 δευτερόλεπτα.
restart_policy: + delay: 10s + max_attempts: 10 + window: 60s+
2.2.7. Εντολή έναρξης
+Για εντολή έναρξης της βάσης δοκιμάστην διάφορες επιλογές όπως command, + Entrypoint, αλλά ενώ κάποιες επιλογές εξυπηρετούσαν τον σκοπό τους ταυτόχρονα δημιουργούσαν πρόβλημα σε κάποιες άλλες. Έτσι καταλληξαμε στην χρήση την εντολής command + με χρήση ορισμάτων μόνος ως προς την ονοματοδοδία και την ενεργοποίησει του Replica Set
+command: ["mongod", "--replSet", "rep-setX"]+
3. Σύνδεση και ενεργοποίηση Replica Set
+Για την σύνδεση και την ενεργοποίηση των replica set δημιουργήθηκε ένα script το οποίο ελέγχει ένα προς ένα όλα τα container είναι ενεργοποιημένα, + στην συνέχεια αφού ολοκληρώσει τον πρώτο έλεγχο συνεχίζει ελέγχοντας εάν ήταν επιτυχές το ανέβασμα της διεργασίας Mongod σε κάθε container και τέλος + εάν δεν συναντήσει κάποιο πρόβλημα στα παραπάνω προχωράει στην σύνδεση των κατάλληλων container για την δημιουργία των Replica set.
++ + | +
+Τα ονόματα των μελών του swarm και οι διευθύνσεις IP που έχουν, τα ονόματα των container, καθώς και μία οπτική αναπαράσταση των δικτύων μπορεί να βρεθεί στον παρακάτω συνδεσμο: + |
+
4. Μελλοντικοί στόχοι
+Τέλος θα θέλαμε να συμπληρώσουμε ότι λόγο της πίεσης που δημιουργήθηκε απο τις τελευταίες εξελίξεις ως προς την έκβαση αυτού του εξαμήνου δεν ήταν δυνάτο +να γίνει μία ποιο δομημένη και εμπεριστατωμένη ανάτπυξη της εργάσιας πάρα το μεγάλο ενδιαφέρον που μας προξένησε. +Θα γίνει προσπάθεια συνέχισης του αλλά και ολοκλήρωσης του ανεξάρτητα του μαθήματος, αλλά και ανεξάρτητα απο το εάν + θα συνέχιστει η παροχή των υπολογιστικών πόρων απο τον Ωκεανό.
+