Institutional Repository
Technical University of Crete
EN  |  EL

Search

Browse

My Space

Support auto-scaling in DockerSwarm

Alexiou Michail

Full record


URI: http://purl.tuc.gr/dl/dias/FDB8799E-A21F-4BFF-8B30-B8191CFAC3BD
Year 2019
Type of Item Diploma Work
License
Details
Bibliographic Citation Michail Alexiou, "Support auto-scaling in DockerSwarm", Diploma Work, School of Electrical and Computer Engineering, Technical University of Crete, Chania, Greece, 2019 https://doi.org/10.26233/heallink.tuc.82297
Appears in Collections

Summary

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.

Available Files

Services

Statistics