4.1 KiB
Node.js Vlab!
Αναλάβαμε σαν ομάδα το ανωτέρο project (Node.js) στο εργαστηριακό μάθημα Υπολογιστική Νέφους και Υπηρεσίες και το υλοποιήσαμε σύμφωνα με τις προϋποθέσεις που έχουν τεθεί για το vlab. Πιό συγκεκριμένα :
- δικό του δίκτυο
- web περιβάλλον για προβολή των αποτελεσμάτων και δυνατότητα download Minio Browser
- χώρο αποθήκευσης
- Αυτόματη διαδικασία εκτέλεσης των υπηρεσιών μέσω make
- μία υπηρεσία ανά container
- replicated mode
- Containers/Replica θα "τρέχουν" μόνο σε workers
- resource config για Out Of Memory Exceptions
Αναφορικά με τα παραπάνω, η λειτουργία της υπηρεσίας είναι μέσα απο ενα Web περιβάλλον ο χρήστης να ανεβάζει το node.js κώδικα του, να αποθηκεύεται σε ένα χώρο αποθήκευσης, να γίνεται download τοπικά,
Swarm
Στη συνέχεια δημηουργούμε :
- 1 manager
- 3 workers
Δημιουργούνται επίσης οι υπηρεσίες
- minio_stack
- node_stack
Μέσα απο τον manager και τους workers, στη πόρτα 9443, μπορούμε να έχουμε πρόσβαση στο Minio Browser και να ακολουθήσει η παραπάνω λειτουργία.
Αφου γίνει αποθήκευση του project μέσα απο τους workers και μόνο και στην πόρτα 3000 ανεβαίνει η υπηρεσία που έχει γίνει deploy, και βλέπουμε το αποτέλεσμα στον browser. Αυτό σημβαίνει κάθε προκαθορισμένο χρονικό διάστημα οριζόμενο απο εμάς.
$$Πιο$$ $$αναλυτικά..... $$
Minio/Bucket
To Bucket είναι ένας χώρος αποθήκευσης που δημιουργούμε στο Minio ,όπου ο κάθε χρήστης μπορεί να ανεβάσει εκεί τα αρχεία του.
- Αρχικά δημιουργούνται 4 υπηρεσίες Minio ( Minio1-Minio2-Minio3-Minio4) , μια για τον κάθε ένα node απο το swarm.
- Η σύνδεση στην υπηρεσία γίνεται με χρήση key και secret
- Μέσα απο το καθορισμένο bucket στη συνέχεια αποθηκεύουμε τα αρχεία μεσω της δωθήσας υπηρεσίας aws s3 στο localdir του μηχανήματος μας.
- Έπειτα δημιουργούνται τα replicas
Τέσσερα αρχικα, ( ένα για κάθε node {1,2,3,4}) Δύο ακόμη για webUI που τρέχει η υπηρεσία για το γραφικό περιβάλλον του Minio
- Τέλος δημιουργείται η εφαρμογή που είναι ουσιαστικά μια υπηρεσία στο Minio με 9 replicas.
CRON
Tέλος, εκτελείτε η υπηρεσία **Cron**, όπου ανα προκαθορισμένο χρόνο μέσω του αρχείου **Makefile** "τραβάμε" τα περιεχόμενα από το bucket που έχουμε δημιουργήσει και τα αποθηκεύουμε στο localdir. Τα κάνουμε **build*** και στη συνέχεια deploy*** στο stack όπου εκτελείτε η υπηρεσία στους workers και τα αποτελέσματα εμφανίζονται με τη διεύθυνση του κάθε worker στη πόρτα :3000.