You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
123 lines
7.0 KiB
123 lines
7.0 KiB
5 years ago
|
= Εργασία Εξαμήνου
|
||
|
Καραμιχάλης Κωνσταντίνος , Κυριακάκος Παναγιώτης, Ιωαννίδου Βασιλική
|
||
|
:nofooter:
|
||
|
:toc: right
|
||
|
:toc-title: Πίνακας περιεχομένων
|
||
|
:toclevels: 4
|
||
|
:sectnums:
|
||
|
:data-uri:
|
||
|
:icons: font
|
||
|
:ext-relative: .adoc
|
||
|
|
||
|
{empty} +
|
||
|
|
||
|
toc::[]
|
||
|
== Σκοπός εργασίας
|
||
|
[.text-justify]
|
||
|
Η εργασία που επιλέχθηκε να πργματοποιηθεί στα πλαίσια του εργαστήρίου του μαθήματος Υ.Ν.Υ, ήταν η δημιουργία και η ανάπτυξη μία βάσης δεδομένων τύπου NoSQL, και
|
||
|
συγκεκριμένα η MongoDB με χρήση των εργαλέιων της πλατφόρμας link:docker{ext-relative}[Docker].
|
||
|
|
||
|
=== Αρχικοί στόχοι
|
||
|
[.text-justify]
|
||
|
Στο ξεκίνημα της ανάλυσης και ανάπτυξης της εργασίας μας θέσαμε αρχικούς στόχους :
|
||
|
[square]
|
||
|
* Σχετική εκμάθηση λειτουργίας της link:mongodb{ext-relative}[MongoDB.]
|
||
|
* Δημιουργία Repica set.
|
||
|
* Δημιουργία και ανάπτυξη εφαρμογής Minio.
|
||
|
* Σύνδεση των παραπάνω ώς μία εικονικά ενιαία εφαρμογή για τον τελικό χρήστη.
|
||
|
|
||
|
[.text-center]
|
||
|
image::./doc_images/mongo_dbs.bmp[950,950]
|
||
|
|
||
|
== Δημιουργία του Docker-compose.yaml
|
||
|
=== Δημιουργία Δικτύων
|
||
|
Ξεκινήσαμε με την δημιουργία κατάλληλων δικτυώσεων.
|
||
|
[square]
|
||
|
* Ένα δίκτυο για κάθε replica set (1 primary 2 secondary).
|
||
|
* Ένα δίκτυο που θα βρίσκονται όλα τα primary μαζί.
|
||
|
|
||
|
=== Δημιουργία Container
|
||
|
[.text-justify]
|
||
|
Δημιουργήθηκαν 12 container και ποιο συγκεκριμένα 4 Replica Set των 3 container έκαστος. +
|
||
|
Για κάθε μέλος του Replica Set δόθηκαν οι κατάλλήλες ρυθμίσεις για την προετοιμασία ένταξης του στην ομάδα του.
|
||
|
|
||
|
|
||
|
[NOTE]
|
||
|
[.text-justify]
|
||
|
*_Το επιθυμητό αποτέλεσμα ήταν να δημιουργηθεί μιά δυναμική εφαρμογή κατα την οποία ο διαχειριστής
|
||
|
απλά θα επιλέγει τον αριθμό των replica set και όχι το στατικό αποτέλεσμα που καταλήξαμε._*
|
||
|
|
||
|
==== Ονοματοδοσία
|
||
|
Σε κάθε container δόθηκε ένα μοναδικό όνομα κατάλληλο για την δική μας διευκόλυνση και ευκολία. +
|
||
|
[square]
|
||
|
* Primary1
|
||
|
* secondary1_1
|
||
|
* secondary1_2
|
||
|
* Primary2
|
||
|
* κοκ.
|
||
|
|
||
|
==== Image
|
||
|
Ως docker image του κάθε container επιλέχθηκε το official MongoDB image που υπήρχε στο Docker Hub. +
|
||
|
mongo:
|
||
|
|
||
|
==== Ports
|
||
|
[.text-justify]
|
||
|
Σε κάθε container αντιστοιχήθηκε η port 27017 με μία port του εκάστοτε host που έτρεχε και για δική μας ευκολία έγινε πάλι ομαδοποίηση ανά replica set.
|
||
|
[square]
|
||
|
* Primary1 = 10001
|
||
|
* secondary1_1 = 10002
|
||
|
* secondary1_2 = 10003
|
||
|
* Primary2 = 20001
|
||
|
* κοκ.
|
||
|
|
||
|
==== Volumes
|
||
|
[.text-justify]
|
||
|
Δημιουργήθηκε σε όλο το σμήνος που είχαμε ένας φάκελος με τα απαράιτητα αρχεία και έγινε mount σε κάθε container +
|
||
|
[.text-left]
|
||
|
./sys_files:/sys_files
|
||
|
|
||
|
==== Networks
|
||
|
[.text-justify]
|
||
|
Δόθηκαν οι κατάλληλες ρυθμίσεις για την ένταξη του στο ανάλογο δίκτυο. Έτσι το κάθε primary που γίνεται deploy
|
||
|
ανήκει σε 2 δίκτυα ( το δίκτυο των Primary και το δίκτυο του Replica set) ενώ τα secondary μόνο στο δίκτυο της Replica που ακήκουν.
|
||
|
|
||
|
primary_network:
|
||
|
replica_setΧ_network:
|
||
|
|
||
|
==== Παράμετροι Deploy
|
||
|
Στις παραμέτρους του Deploy χρησιμοποιήσαμε την πολιτική Restart με καθυστέρηση 10 δευτερολέπτων, μέγιστο αριθμό επαναλήψεων 10 και με κενό μεταξύ τους 60 δευτερόλεπτα. +
|
||
|
|
||
|
restart_policy:
|
||
|
delay: 10s
|
||
|
max_attempts: 10
|
||
|
window: 60s
|
||
|
|
||
|
==== Εντολή έναρξης
|
||
|
[.text-justify]
|
||
|
Για εντολή έναρξης της βάσης δοκιμάστην διάφορες επιλογές όπως command,
|
||
|
Entrypoint, αλλά ενώ κάποιες επιλογές εξυπηρετούσαν τον σκοπό τους ταυτόχρονα δημιουργούσαν πρόβλημα σε κάποιες άλλες. Έτσι καταλληξαμε στην χρήση την εντολής command
|
||
|
με χρήση ορισμάτων μόνος ως προς την ονοματοδοδία και την ενεργοποίησει του Replica Set
|
||
|
|
||
|
command: ["mongod", "--replSet", "rep-setX"]
|
||
|
|
||
|
== Σύνδεση και ενεργοποίηση Replica Set
|
||
|
[.text-justify]
|
||
|
Για την σύνδεση και την ενεργοποίηση των replica set δημιουργήθηκε ένα script το οποίο ελέγχει ένα προς ένα όλα τα container είναι ενεργοποιημένα,
|
||
|
στην συνέχεια αφού ολοκληρώσει τον πρώτο έλεγχο συνεχίζει ελέγχοντας εάν ήταν επιτυχές το ανέβασμα της διεργασίας Mongod σε κάθε container και τέλος
|
||
|
εάν δεν συναντήσει κάποιο πρόβλημα στα παραπάνω προχωράει στην σύνδεση των κατάλληλων container για την δημιουργία των Replica set.
|
||
|
|
||
|
[TIP]
|
||
|
Τα ονόματα των μελών του swarm και οι διευθύνσεις IP που έχουν, τα ονόματα των container, καθώς και μία οπτική αναπαράσταση των δικτύων μπορεί να βρεθεί στον παρακάτω συνδεσμο: +
|
||
|
[.text-center]
|
||
|
http://83.212.77.43:5555/[Project Dashboard]
|
||
|
|
||
|
== Μελλοντικοί στόχοι
|
||
|
[.text-justify]
|
||
|
Τέλος θα θέλαμε να συμπληρώσουμε ότι λόγο της πίεσης που δημιουργήθηκε απο τις τελευταίες εξελίξεις ως προς την έκβαση αυτού του εξαμήνου δεν ήταν δυνάτο
|
||
|
να γίνει μία ποιο δομημένη και εμπεριστατωμένη ανάτπυξη της εργάσιας πάρα το μεγάλο ενδιαφέρον που μας προξένησε.
|
||
|
Θα γίνει προσπάθεια συνέχισης του αλλά και ολοκλήρωσης του ανεξάρτητα του μαθήματος, αλλά και ανεξάρτητα απο το εάν
|
||
|
θα συνέχιστει η παροχή των υπολογιστικών πόρων απο τον Ωκεανό.
|
||
|
|
||
|
|
||
|
|