title: Support auto-scaling in DockerSwarm
title: Αυτόματη διαχείριση υπολογιστικών πόρων σε περιβάλλον DockerSwarm
Creators: name: Αλεξιου Μιχαηλ
Publisher: name: Technical University of Crete
Year: 2019

description: Docker Swarm is an open-source container orchestration platform natively managing a cluster of Docker engines. Docker Swarm utilizes the same command line from Docker to create a cluster of Docker engines (referred to as a swarm), deploy application services to a swarm, scale up or down containers running inside swarm nodes, and manage swarm behavior in general. Yet for all its advantages, Docker Swarm currently lacks the necessary tools for supporting automatic scaling of resources inside each swarm, resulting in a rather static environment incapable of adapting to the requirements of an online application. Unlike other competing tehcnologies, such as Kubernetes or Amazon EC2, which support auto-scaling in a containerized environment, to the best of our knowledge, no such solutions exist for Docker Swarm. This is exactly the problem our work is dealing with. Building upon Docker Swarm, we propose Elixir, an autonomous agent that runs on top of Docker Swarm (i.e. the infrastructure provider side) and is capable of managing multiple and different online applications for each provider, monitoring the running worker nodes (Virtual Machines) required by each application, and automatically scaling up or down the used resources (CPU, Disk, etc.) on demand when necessary. The decisions for scaling are determined by the infrastructure provider and are based on resources metrics measured in real time such as CPU, or memory usages (or a combination of the above), during monitoring. Elixir contributes to achieving fault tolerance and high availability for a Docker Swarm system managing multiple applications rather than a single application. Elixir’s node scaling approach is horizontal meaning that rather than reconfiguring the worker nodes of each application with larger or smaller characteristics (as would be in the case of vertical scaling), it will add/delete worker nodes with the same characteristics to the application’s swarm. We run several experiments based on a simulated, but realistic use case scenario. The experimental results demonstrate that the implementation of Elixir in a system managing an application, has a significant impact on the availability and response time of an application charged constantly with an increasing workload.
description: To Docker Swarm είναι μία πλατφόρμα ανοιχτού κώδικα ενορχηστρώσεων κιβωτίων εφαρμογών, που διαχειρίζεται ένα σύνολο Docker μηχανών. Tο Docker Swarm χρησιμοποιεί την ίδια γραμμή εντολών με του Docker, για να δημιουργήσει μία από ομάδα από Docker μηχανές (που αποκαλείται σμήνος), να αναπτύξει υπηρεσίες εφαρμογών, να αυξήσει ή μειώσει το πλήθος των τρεχούμενων κιβωτίων εφαρμογών και να διαχειριστεί γενικά τη συμπεριφορά του σμήνους. Ωστόσο, παρά τα πλεονεκτήματα του, το Docker Swarm δεν διαθέτει ακόμα τα απαραίτητα εργαλεία υποστήριξης αυτόματης διαχείρισης υπολογιστικών πόρων μέσα σε κάθε σμήνος, με αποτέλεσμα ένα στατικό περιβάλλον ανάπτυξης εφαρμογών ανίκανο να προσαρμοστείς στις απαιτήσεις μιας online εφαρμογής. Αντίθετα με άλλες ανταγωνιστικές τεχνολογίες, όπως Kubernetes ή το Amazon EC2, που υποστηρίζουν αυτόματη διαχείριση υπολογιστικών πόρων  περιβάλλοντα, εξ όσων γνωρίζουμε μέχρι τώρα, δεν υπάρχουν αντίστοιχες λύσεις για το Docker Swarm. Με αυτό το πρόβλημα ασχολείται η δουλειά μας. Χτίζοντας πάνω στο Docker Swarm, προτείνουμε  το Elixir, έναν αυτόνομο πράκτορα που τρέχει ένα επίπεδο πάνω από το Docker Swarm (στην πλευρά του παρόχου της υποδομής) και είναι ικανός να διαχειρίζεται πολλαπλές και διαφορετικές ηλεκτρονικές εφαρμογές για κάθε πάροχο, παρακολουθώντας τους εργάτες κόμβους που βρίσκονται σε λειτουργία και απαιτούνται για κάθε εφαρμογή και αυξάνοντας ή μειώνοντας τους χρησιμοποιούμενους πόρους (CPU, Δίσκος κτλ.) όταν είναι απαραίτητο. Οι αποφάσεις για την κλιμάκωση διευκρινίζονται από τον πάροχο της υποδομής και βασίζονται σε μετρήσεις που ελήφθησαν κατά την παρακολούθηση πόρων, όπως ποσοστό χρήσης CPU ή ποσοστό χρήσης μνήμης (ή συνδυασμός και των δύο). Το Elixir συνεισφέρει στην επίτευξη ανοχής σφάλφατος και υψηλής διαθεσιμότητας για ένα σύστημα που διαχειρίζεται ταυτόχρονα πολλαπλές διαδικτυακές εφαρμογές. To Elixir υποστηρίζει οριζόντια κλιμάκωση υπολογιστικών πόρων, που σημαίνει ότι αντί να αναδιαμορφώσει τους υπάρχοντες εργάτες κόμβους κάθε εφαρμογής με υψηλότερα ή χαμηλότερα χαρακτηριστικά (όπως ισχύει στην κάθερη κλιμάκωση), θα προσθέσει/διαγράψει εργάτες κόμβους από το σμήνος της εφαρμογής. Εκτελούμε διάφορα πειράματα με βάση ένα προσομοιωμένο, αλλά ρεαλιστικό σενάριο χρήσης. Τα πειραμτικά αποτελέσματα αποδεικνύουν ότι η χρήση του Elixir σε ένα σύστημα διαχείρισης εφαρμογων, έχει σημαντικό αντίκτυπο στη διαθεσιμότητα αυτής της εφαρμογής και κατ' επέκταση στον χρόνο ανταπόκρισης του συστήματος, κατά τη διάρκεια συνεχόμενα αυξανόμενου φόρτου εργασίας.