constantine_karamichalis
5 years ago
1 changed files with 0 additions and 122 deletions
@ -1,122 +0,0 @@ |
|||||
= Εργασία Εξαμήνου |
|
||||
Καραμιχάλης Κωνσταντίνος , Κυριακάκος Παναγιώτης, Ιωαννίδου Βασιλική |
|
||||
: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] |
|
||||
Τέλος θα θέλαμε να συμπληρώσουμε ότι λόγο της πίεσης που δημιουργήθηκε απο τις τελευταίες εξελίξεις ως προς την έκβαση αυτού του εξαμήνου δεν ήταν δυνάτο |
|
||||
να γίνει μία ποιο δομημένη και εμπεριστατωμένη ανάτπυξη της εργάσιας πάρα το μεγάλο ενδιαφέρον που μας προξένησε. |
|
||||
Θα γίνει προσπάθεια συνέχισης του αλλά και ολοκλήρωσης του ανεξάρτητα του μαθήματος, αλλά και ανεξάρτητα απο το εάν |
|
||||
θα συνέχιστει η παροχή των υπολογιστικών πόρων απο τον Ωκεανό. |
|
||||
|
|
||||
|
|
||||
|
|
Loading…
Reference in new issue