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.

147 lines
7.7 KiB

4 years ago
= Υπολογιστική Νέφους και Υπηρεσίες
:description: ΑΣΚΗΣΗ 2020
:keywords: Cloud, swarm
:data-uri:
:toc: right
:toc-title: Πίνακας περιεχομένων
:toclevels: 4
:source-highlighter: coderay
:icons: font
:sectnums:
.ΕΡΓΑΣΤΗΡΙΟ ΜΑΘΗΜΑΤΟΣ
[NOTE]
****
[.text-center]
*«Υπολογιστική Νέφους και Υπηρεσίες»*
[.text-center]
_ΑΣΚΗΣΗ 2021_
****
[.lead]
Η άσκηση περιλαμβάνει τη δημιουργία ενός εικονικού εργαστηρίου(vlab) σε περιβάλλον *docker-compose* που θα εκτελεί αυτόματα τις λειτουργίες που διαθέτει.
== Δημιουργία εικονικού εργαστηρίου
*Κάθε vlab θα διαθέτει:*
* [*] δικό του δίκτυο
* [*] περιβάλλον _(GUI/CLI)_ για προβολή των αποτελεσμάτων
* [*] χώρο αποθήκευσης!footnote:disclaimer[Σχετικά με την υποστήριξη 'χώρου αποθήκευσης', μπορείτε να χρησιμοποιήσετε την υπηρεσία storage-mongo-replica του swarmlab.io (https://git.swarmlab.io:3000/swarmlab/storage-mongo-replica[git^]) ή όποια άλλη βάση επιθυμείτε ]
* [*] Αυτόματη διαδικασία εκτέλεσης των υπηρεσιών (https://git.swarmlab.io:3000/swarmlab/examples-mpi/src/branch/master/swarmlab[π.χ. μέσω make - Παράδειγμα])
* [*] μία υπηρεσία ανά container!footnote:disclaimer[Γενικά διαχωρίζουμε τους τομείς χρησιμοποιώντας μία υπηρεσία ανά container. Αυτή η υπηρεσία μπορεί, σε διάφορες περιπτώσεις, να εκτελεστεί σε πολλές διεργασίες (για παράδειγμα, ο διακομιστής web Apache ξεκινά πολλές διεργασίες).]
* [*] resource config για Out Of Memory Exceptions https://docs.docker.com/config/containers/resource_constraints/#understand-the-risks-of-running-out-of-memory[(OOME)], https://docs.docker.com/compose/compose-file/#resources[Howto]
.Πληροφορία
[NOTE]
====
Για την υλοποίησή σας μπορείτε να στηριχτείτε στη βασική αρχιτεκτονική-σχεδιασμό και παραδείγματα που επιδείχθηκαν στο Εργαστήριο
.Reminder
****
https://docs.docker.com/compose/compose-file/#not-supported-for-docker-stack-deploy[not-supported-for-docker-stack-deploy]
****
====
== Παράδοση εργασίας
*Παράδοση εργασίας:*
* [*] Το κείμενο της εργασίας θα είναι σε μορφή *asciidoc* ή markdown
* [*] Θα περιέχει *Yaml File* για Deploy της υπηρεσίας
* [*] Θα περιέχει *README* file με πληροφορίες σχετικά με το εικονικό εργαστήριο και τις υπηρεσίες/εργαλεία που χρησιμοποιήθηκαν
* [*] Θα περιέχει *INSTALL* file με πληροφορίες σχετικά με την εγκατάσταση του εικονικού εργαστηρίου
* [*] Θα περιέχει *DOC* file/dir με πληροφορίες σχετικά με την χρήση του εικονικού εργαστηρίου
* [*] Θα περιέχει *Demo* για την εκτέλεση των διαθέσιμων υπηρεσιών
.Πληροφορία
[NOTE]
====
Το κείμενα θα είναι *όλα* σε μορφή asciidoc ή markdown (https://asciidoctor.org/docs/asciidoc-writers-guide/[Asccidoc^], https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet[Markdown^])
====
.Git
[NOTE]
====
Ολα τα αρχεία θα πρέπει να "ανέβουν" σε υπηρεσία git
* https://git.swarmlab.io:3000[ swarmlab - Προτείνεται^]
* https://gitlab.com/explore[gitlab^]
* https://github.com/[github^]
====
== Projects
Κάθε ομάδα θα πρέπει να επιλέξει προς υλοποίηση ένα από τα κάτωθι προτεινόμενα projects (μπορεί επίσης να προτείνει και κάποιο δικό της αρκεί να τηρούνται οι βασικές κατευθύνσεις αρχιτεκτονικής/σχεδιασμού)
.Επιλογή
[NOTE]
====
4 years ago
Η επιλογή project ανα ομάδα πρέπει να πραγματοποιηθεί μέχρι *14.04*
4 years ago
====
=== Data collector service
* Swarmlab
** Swarmlab-hybrid, Menou: *hybrid-linux -> courses/fluentd*
** https://git.swarmlab.io:3000/swarmlab/hybrid-linux/src/branch/master/install/usr/share/swarmlab.io/sec/project/courses/fluentd[git^]
** https://vimeo.com/525221045[video1 ^]
** https://www.twitch.tv/videos/973658726[video2 ^]
[NOTE]
====
To project _"Data collector service"_ αποτελεί τη βασική επιλογή για την εξέταση του εργαστηρίου και χωρίζεται σε 3 ενότητες:
* Πρώτη
** Δημιουργία δικτύου
** Αυτόματη εγκατάσταση προγράμματος για την συλλογή των δεδομένων
** onEvent - τοπική/προσωρινή αποθήκευση των δεδομένων
* Δεύτερη
** Δημιουργία βάσης δεδομένων(Database replication)
** onEvent αποθήκευση των δεδομένων στην βάση
* Τρίτη
** Δημιουργία GUI ή
** Δημιουργία Websocket σύνδεσης με την βάση ή με τις βασικές υπηρεσίες για άμεση μεταφορά των δεδομένων
====
=== Realtime database backend
* Realtime database backend - https://en.wikipedia.org/wiki/Operational_transformation
** https://github.com/share/sharedb[git^]
=== Fediverse system
* Pleroma - https://en.wikipedia.org/wiki/Fediverse[Wikipedia^]
** https://docs.pleroma.social/backend/installation/otp_en/[docs^]
=== Distributed file system.
* IPFS Cluster - https://en.wikipedia.org/wiki/Fediverse[Wikipedia^]
** https://github.com/ipfs/ipfs-cluster[git^]
=== Object Storage
* Minio s3 (amazon s3) - https://en.wikipedia.org/wiki/Amazon_S3[Wikipedia^]
** https://github.com/minio/minio[git^]
== Q&A
[qanda]
Το project υλοποιείται σε ομάδες?::
Ναι.
Εγώ δεν βρήκα ομάδα. Τι κάνω?::
Προσπάθησε να ενταχθείς σε μία ομάδα και ενημέρωσε μέσω εμαιλ για την ομάδα που θα συμμετέχεις.
Μπορώ να υλοποιήσω κάποιο άλλο project εκτός λίστας?::
Ναι. Αρκεί *να μην είναι "stand alone application".* To project πρέπει να υλοποιηθεί σύμφωνα με τις προδιαγραφές που περιγράφονται και για τα υπόλοιπα.
Δεν γνωρίζω asciidoc θα χρειαστεί χρόνο για να το μάθω?::
Οχι είναι απλό. Δεν θα χρειαστείς πάνω από 5 λεπτά και σε περίπτωση που θέλεις κάτι ακόμη πιο απλό γράψε σε markdown - online Editor: https://stackedit.io/app[markdown], https://asciidoclive.com/edit/scratch/1[asciidoc]
Δεν γνωρίζω git θα χρειαστεί χρόνο για να το μάθω?::
Οχι είναι απλό. Δεν θα χρειαστείς πάνω από 10 λεπτά - Βοήθεια: http://docs.swarmlab.io/SwarmLab-HowTos/HowTo-gitea.adoc.html[Gitea], https://classic.scottr.org/presentations/git-in-5-minutes/[Git In Five Minutes]