Για τις ανάγκες του project χρησιμοποιήσαμε το εργαστηριακό hybrid-linux του Swarmlab-Hybrid. Αρχικά, δημιουργήθηκε ένα σμήνος (swarm) μέσω της εφαρμογής. Το κάθε σμήνος (Ν nodes) αποτελείται από ένα master και Ν-1 workers. Εφόσον συνδεθούμε στον master, μπορούμε να ελέγξουμε και το υπόλοιπο σμήνος.
*Σημείωση2:* Στην περίπτωση που έχουμε δημιουργήσει ήδη κάποιο σμήνος, μπορούμε να το χρησιμοποιήσουμε. Εάν θελήσουμε να φτιάξουμε νέο, θα διαγραφεί το παλιό και ύστερα θα δημιουργηθούν τα νέα Instances.
Για να συνδεθούμε στον master, αλλά και στους workers, θα χρησιμοποιήσουμε την εφαρμογή. Πατώντας Action στην εκάστοτε μηχανή εμφανίζεται μεταξύ άλλων η επιλογή connect. Εφόσον πατηθεί, εμφανίζεται ένα pop-up μήνυμα το οποίο περιέχει τις εξής πληροφορίες:
* Την εντολή που τρέχουμε για να συνδεθούμε στο node
* Το path στο οποίο αποθηκεύεται το project μας τοπικά
* Πού αποθηκεύεται η πληροφορία του node στην εφαρμογή
Μέσω του σμήνους μας θα μπορέσουμε να συλλέξουμε δεδομένα από τον φάκελο /log-in και να τα αποθηκεύσουμε είτε προσωρινά στο φάκελο /mylogs, είτε σε μία βάση δεδομένων.
Στο terminal στο οποίο έχουμε συνδεθεί στον master, στο path /project/courses/fluentd$ τρέχουμε τις εξής εντολές:
Σε ένα άλλο terminal, συνδεόμαστε σε worker node της επιλογής μας. Θα δημιουργήσουμε ένα φάκελο μέσα στο path το οποίο θα γίνει συλλογή δεδομένων από το script και θα πραγματοποιήσουμε πολλές αλλαγές, προκειμένου να παρατηρήσουμε τα logs του worker. *Την ίδια ενέργεια θα εκτελέσουμε αργότερα και για το παράδειγμα αποθήκευσης**δεδομένων σε βάση.*
* **mkdir var/log-in/yourDIR**
* **echo "abc">> /var/log-in/yourDIR/yourFILE**
Εφόσον έχει εκτελεστεί το script, έχει δημιουργηθεί ο φάκελος /tmp/mylog/ ο οποίος περιέχει και το log του worker. Περιμένουμε λίγα δευτερόλεπτα καθώς η συλλογή δεδομένων εκτελείται ανα κύκλους και ύστερα εκτελούμε **ls -al /tmp/mylog/** . Το αρχείο log που έχει δημιουργηθεί περιέχει τις αλλαγές που έχουν γίνει στο φάκελοπου δημιουργήσαμε.
-----
### 4. Δημιουργία Βάσης Δεδομένων (Database Replication)
Στη συνέχεια είναι απαραίτητο να συνδέσουμε το σμήνος μας με το δίκτυο στο οποίο υπάρχει η mongoDB. Επιστρέφουμε στους Containers και σε κάθε node του σμήνους εκτελούμε τα βήματα:
Actions **>** Network **>** Επιλέγουμε το δίκτυο storage-mongo-replica **>** Update
Έτσι συνδέουμε τα δύο δίκτυα που υπάρχουν στην εφαρμογή μας, διαφορετικά η replica της mongo (είτε ήταν mongo1, mongo2, mongo3) δε θα μπορούσε να αναγνωρίσει τις αλλαγές που θα πραγματοποιούνταν στο σμήνος.
Στη συνέχεια, επιλέγουμε μία από τις mongo replicas και συνδεόμαστε σε αυτή, σε νέο terminal, όπως και στους nodes. Για να συνδεθούμε στη βάση που χρειαζόμαστε εκτελούμε τα ακόλουθα:
Εφόσον το **./fluentd-config-update.yml.sh** έχει τρέξει ορθά στο terminal του master, μπορούμε σε έναν οποιοδήποτε worker να εκτελέσουμε την ίδια διαδικασία δημιουργίας φακέλου και αρχείων και ύστερα να παρατηρήσουμε τις αλλαγές στο terminal της βάσης εκτελώντας **db.logs.find({})**