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.

198 lines
12 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]
_ΑΣΚΗΣΗ 2020_
****
[.lead]
Η άσκηση περιλαμβάνει τη δημιουργία ενός εικονικού εργαστηρίου(vlab) σε περιβάλλον *docker swarm* που θα εκτελεί αυτόματα τις λειτουργίες που διαθέτει.
4 years ago
== Δημιουργία εικονικού εργαστηρίου
4 years ago
*Κάθε vlab θα διαθέτει:*
* [*] δικό του δίκτυο
* [*] web περιβάλλον για προβολή των αποτελεσμάτων και δυνατότητα download
4 years ago
* [*] χώρο αποθήκευσης!footnote:disclaimer[Σχετικά με την υποστήριξη 'χώρου αποθήκευσης' _(η οποία αποτελεί μια πιο απαιτητική διαδικασία ενσωμάτωσης - θα ασχοληθούμε μεταξύ άλλων με αυτό στα εργαστηριακά μαθήματα που θα ακολουθήσουν)_, μπορείτε να θεωρήσετε ότι δεν ανήκει καταρχήν στις βασικές απαιτήσεις υλοποίησης της εργασίας σας και να ξεκινήσετε-προχωρήσετε την υλοποίησή σας χωρίς την υποστήριξή και της δυνατότητας αυτής `_(εκτός αν η επιλογή του project που θα κάνετε το απαιτεί εκ των πραγμάτων - π.χ. hadoop)._` Και στη συνέχεια, αφού ολοκληρώσετε τη βασική σας υλοποίηση, να προσπαθήσετε να την επεκτείνετε και με την υποστήριξη 'χώρου αποθήκευσης' στο βαθμό και στη μορφή που χρειάζεται ανάλογα με το project που θα έχετε επιλέξει.] https://docs.docker.com/storage/volumes/#share-data-among-machines[Howto], https://docs.docker.com/storage/volumes/#create-a-service-which-creates-an-nfs-volume[Howto]
4 years ago
* [*] Αυτόματη διαδικασία εκτέλεσης των υπηρεσιών μέσω make (https://git.swarmlab.io:3000/swarmlab/examples-mpi/src/branch/master/swarmlab[Παράδειγμα])
4 years ago
* [*] μία υπηρεσία ανά container!footnote:disclaimer[Γενικά διαχωρίζουμε τους τομείς χρησιμοποιώντας μία υπηρεσία ανά container. Αυτή η υπηρεσία μπορεί, σε διάφορες περιπτώσεις, να εκτελεστεί σε πολλές διεργασίες (για παράδειγμα, ο διακομιστής web Apache ξεκινά πολλές διεργασίες).]
4 years ago
* [*] replicated mode https://docs.docker.com/compose/compose-file/#replicas[Howto]
* [*] Containers/Replica θα "τρέχουν" μόνο σε workers https://docs.docker.com/compose/compose-file/#placement[Howto]
4 years ago
* [*] 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]
4 years ago
4 years ago
.Πληροφορία
[NOTE]
====
Για την υλοποίησή σας μπορείτε να στηριχτείτε στη βασική αρχιτεκτονική-σχεδιασμό και παραδείγματα που επιδείχθηκαν στο http://docs.swarmlab.io/lab/DockerSwarm/swarm-deploy.adoc.html[Eργαστήριο Deploy Services]
και στο
https://docs.docker.com/compose/compose-file/#deploy[Service Deploy reference]
.Reminder
****
https://docs.docker.com/compose/compose-file/#not-supported-for-docker-stack-deploy[not-supported-for-docker-stack-deploy]
****
====
4 years ago
4 years ago
== Παράδοση εργασίας
4 years ago
*Παράδοση εργασίας:*
* [*] Το κείμενο της εργασίας θα είναι σε μορφή *asciidoc*
* [*] Θα περιέχει *Dockerfile* για την δημιουργία των images
* [*] Θα περιέχει *Stack Yaml File* για Deploy της υπηρεσίας
* [*] Θα περιέχει *README* file με πληροφορίες σχετικά με το εικονικό εργαστήριο και τις υπηρεσίες/εργαλεία που χρησιμοποιήθηκαν
* [*] Θα περιέχει *INSTALL* file με πληροφορίες σχετικά με την εγκατάσταση του εικονικού εργαστηρίου
* [*] Θα περιέχει *DOC* file/dir με πληροφορίες σχετικά με την χρήση του εικονικού εργαστηρίου
* [*] Θα περιέχει *Demo* site για την εκτέλεση των διαθέσιμων υπηρεσιών
.Πληροφορία
[NOTE]
====
Το κείμενα θα είναι *όλα* σε μορφή asciidoc ή markdown (Παραδείγματα: http://docs.swarmlab.io/Howtos/asciidoc/install-asciidoc.adoc.html#cheat-useadoc[1], http://docs.swarmlab.io/Howtos/asciidoc/QuickStart.adoc.html#_copy_paste_asciidoc_source[2], http://docs.swarmlab.io/Howtos/asciidoc/AsciiDocSyntaxQuickReference.adoc.html[Reference])
====
.Git
[NOTE]
====
Ολα τα αρχεία θα πρέπει να "ανέβουν" σε υπηρεσία git
* https://git.swarmlab.io:3000 - Προτείνεται
* https://about.gitlab.com/ - Δεύτερη επιλογή
* https://github.com/
====
4 years ago
== Projects
4 years ago
4 years ago
Κάθε ομάδα θα πρέπει να επιλέξει προς υλοποίηση ένα από τα κάτωθι προτεινόμενα *projects* `_(μπορεί επίσης να προτείνει και κάποιο δικό της αρκεί να τηρούνται οι βασικές κατευθύνσεις αρχιτεκτονικής/σχεδιασμού που εδείχθησαν στα παραδείγματα-άσκηση του εργαστηρίου)_`
4 years ago
.Επιλογή
[NOTE]
====
Η επιλογή project ανα ομάδα πρέπει να πραγματοποιηθεί μέχρι *03.05*
====
4 years ago
=== Katex https://en.wikipedia.org/wiki/KaTeX[wikipedia]
* Katex - https://en.wikipedia.org/wiki/KaTeX, https://en.wikipedia.org/wiki/Mathematical_notation
4 years ago
** https://github.com/KaTeX/KaTeX
** https://katex.org/#demo
4 years ago
=== wordpress
4 years ago
* wordpress
** https://github.com/gabidavila/docker-wordpress-ssl-nginx-mysql
4 years ago
=== mongo replicated
4 years ago
* mongo replicated - https://en.wikipedia.org/wiki/MongoDB, https://github.com/mongodb/mongo/wiki/Replication-Internals , https://en.wikipedia.org/wiki/NoSQL
4 years ago
** https://www.xosofox.de/2017/06/running-mongodb-as-a-replicaset-in-docker/
** https://www.sohamkamani.com/blog/2016/06/30/docker-mongo-replica-set/#setting-up-replication
4 years ago
=== mysql replicated
4 years ago
* mysql replicated - https://en.wikipedia.org/wiki/Multi-master_replication
4 years ago
** https://github.com/gritt/docker-mysql-replication
** https://hub.docker.com/r/actency/docker-mysql-replication
4 years ago
=== asciidoc + online editor
4 years ago
* asciidoc + online editor - https://en.wikipedia.org/wiki/AsciiDoc, https://en.wikipedia.org/wiki/DocBook
4 years ago
** https://github.com/bodiam/awesome-asciidoc
** https://github.com/asciidoctor/docker-asciidoctor
4 years ago
=== collaborative LaTeX editor
4 years ago
* collaborative LaTeX editor - https://en.wikipedia.org/wiki/LaTeX
4 years ago
** https://github.com/overleaf/overleaf
4 years ago
=== Realtime database backend
4 years ago
* Realtime database backend - https://en.wikipedia.org/wiki/Operational_transformation
4 years ago
** https://github.com/share/sharedb
4 years ago
=== collaborative editor (like google docs)
4 years ago
* collaborative editor - https://en.wikipedia.org/wiki/CodeMirror
4 years ago
** https://github.com/hectorj2f/codemirror-dockerhttps://github.com/jitsi/docker-jitsi-meet
** https://codemirror.net/
** https://codemirror.net/mode/dockerfile/
4 years ago
=== hadoop
4 years ago
* hadoop - https://en.wikipedia.org/wiki/Apache_Hadoop
4 years ago
** https://github.com/big-data-europe/docker-hadoop
** https://hub.docker.com/r/sequenceiq/hadoop-docker/
** https://www.alibabacloud.com/blog/setup-a-single-node-hadoop-cluster-using-docker_595278
4 years ago
=== collaborative eclass meeting chat
4 years ago
* collaborative eclass meeting chat - https://en.wikipedia.org/wiki/Jitsi
4 years ago
** https://github.com/jitsi/docker-jitsi-meet
4 years ago
=== collaboration solution
4 years ago
* collaboration solution - https://en.wikipedia.org/wiki/Mattermost
4 years ago
** https://mattermost.com/mattermost-vs-slack/
** https://github.com/mattermost/mattermost-docker
** https://hub.docker.com/r/jasl8r/mattermost
4 years ago
=== R and Octave (statistical computing and graphics)
* R & Octave - https://en.wikipedia.org/wiki/R_(programming_language), https://en.wikipedia.org/wiki/GNU_Octave
** https://github.com/INWTlab/r-docker
** https://www.r-project.org/
** https://www.gnu.org/software/octave/
4 years ago
=== Ruby, php and Node.js
4 years ago
* Ruby, php and Node.js
** https://hub.docker.com/r/ethanw93/docker-ruby-php-node/
** https://github.com/dsferruzza/docker-php-node-ruby-build/blob/master/Dockerfile
4 years ago
=== java
4 years ago
* java and scala
4 years ago
** https://github.com/docker-java/docker-java
4 years ago
** https://www.scala-lang.org/documentation/your-first-lines-of-scala.html
** https://github.com/hseeberger/scala-sbt
4 years ago
4 years ago
=== phonegap cordova
4 years ago
* phonegap cordova - https://en.wikipedia.org/wiki/Apache_Cordova
4 years ago
** https://hub.docker.com/r/webratio/phonegap/
** https://github.com/idotta/docker-phonegap
** https://github.com/oren/docker-cordova
** https://github.com/walterwhites/docker-cordova
4 years ago
=== visualization software
* Graphviz + PlantUML - https://en.wikipedia.org/wiki/PlantUML, https://en.wikipedia.org/wiki/Unified_Modeling_Language, https://en.wikipedia.org/wiki/Graphviz
** https://github.com/plantuml/plantuml-server
** https://github.com/emfloyd2/docker-graphviz
** https://github.com/omerio/graphviz-server
4 years ago
=== collaboration platform
* Nextdloud (similar to Dropbox, Office 365 or Google Drive) - https://en.wikipedia.org/wiki/Nextcloud,
** https://github.com/nextcloud/docker/tree/63438ef792fdedd4ceb80664d22391aca21f6bd1
** https://github.com/nextcloud/docker
4 years ago
4 years ago
== Q&A
4 years ago
[qanda]
Το project υλοποιείται σε ομάδες?::
Ναι. Είναι οι ομάδες που έχουμε ήδη δημιουργήσει
Εγώ δεν βρήκα ομάδα. Τι κάνω?::
4 years ago
Προσπάθησε να ενταχθείς σε μία ομάδα και ενημέρωσε μέσω εμαιλ για την ομάδα που θα συμμετέχεις. Σε περίπτωση που δεν είναι αυτό δυνατό τότε χρησιμοποίησε το *docker-compose*.footnote:disclaimer[Tο docker-compose έχει εγκατασταθεί στο http://docs.swarmlab.io/Howtos/docker/install.adoc.html#cheat-compose[1ο εργαστήριο]] (https://docs.docker.com/compose/[Overview of Docker Compose]) για να δημιουργήσεις το project που θα επιλέξεις σε http://docs.swarmlab.io/lab/DockerSwarm/Intro-Cloud.adoc.html#_short_answer[ένα μηχάνημα]
4 years ago
Μπορώ να υλοποιήσω κάποιο άλλο project εκτός λίστας?::
Ναι. Αρκεί *να μην είναι "stand alone application".* To project πρέπει να υλοποιηθεί σύμφωνα με τις προδιαγραφές που περιγράφονται και για τα υπόλοιπα.
Δεν γνωρίζω asciidoc θα χρειαστεί χρόνο για να το μάθω?::
4 years ago
Οχι είναι απλό. Δεν θα χρειαστείς πάνω από 5 λεπτά και σε περίπτωση που θέλεις κάτι ακόμη πιο απλό γράψε σε markdown - online Editor: https://stackedit.io/app[markdown], https://asciidoclive.com/edit/scratch/1[asciidoc]
4 years ago
Δεν γνωρίζω 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]