Coursework Aim:
The aim of the resit coursework is to understand and deploy Docker Swarm Technologies in OpenStack ecosystem.
Cloud computing and virtualisations have been widely adopted to extend the physical limitations of the server infrastructure, as they provide abstraction of the software or hardware running behind the environment. An evolution towards virtualisation is the container technology1. This technology is much lighter than Virtual Machines (VM), consisting of dependencies (code, frameworks, libraries, etc.) required to run an application. Docker containers have gained popularity for creating and distributing containerized applications2. In this environment, it is necessary to figure out, how to monitor the status of the hosted application, manage scaling and detect and resolve unexpected errors.
Container Orchestration Engines (COEs) are used to carry out containers` operations. The most common function that can found in COEs include the following:
• Resource optimisation: the orchestration aims to minimize the use of communication, computation, and storage resources such as memory, CPU/GPU, disk space, storage, IP addresses and port numbers.
• Container scheduler: It includes functions such as starting and stopping containers; - restoration of corrupted containers; autoscaling (either automatic or manual) and migration moving containers across different physical machines.
• High availability (HA): HA of containers or applications in them.
• Container check: check of containers or applications in them.
Docker Swarm is an orchestration management tool that runs on Docker applications. It helps end-users in creating and deploying a cluster of Docker nodes. It provides a way to configure and manage containers that can be distributed over the network. The key characteristics of a Docker swarm are the following:
1. Raft Consensus Group: It consists of internal distributed state database and manager to communicate with the worker nodes. An internal distributed state database stores information about the containers` cluster.
2. Manager Node: It schedules tasks to worker nodes. It receives commands to establish and deploy new services and monitors the status of the worker nodes. A service is a group of tasks of the same image that enables the scaling of applications. A task can be understood as a combination of a single Docker container and commands that define how that container will be launched. The manager node knows the status of the worker nodes in a cluster, and the worker nodes accept tasks that are sent from the manager node. Scheduling strategies include the default Spread strategy selecting the node having the least number of containers, the Binpack strategy selecting the most packed containers, and the Random strategy selecting randomly a slave node3.
3. Worker Nodes: The worker nodes receive tasks directly from the manager node. Additionally, every worker node has an agent that sends periodic reports about his status to the manager node. This way, the manager node can maintain the desired state of the cluster.
Figure 1: Docker Swarm Architecture
The main added value of Docker Swarm is that it is a fault tolerant environment. It allows the presence of several manager nodes within the cluster. To connect containers hosted on different nodes under the same network, Docker Swarm offers an overlay network which exploits the VXLAN tunnel for creating a virtual network among hosts. As an effect, the container cluster can recover from errors without being forced to interrupt its operation. If, by chance, the management node currently selected as the leader unexpectedly interrupts or it is unavailable for some reason, the Raft Consensus group selects a new leader to perform the specified orchestration tasks.
The tasks of the resits coursework is to design and develop a simulation tool to mimic Docker Swarm functionality as described above. It is expected to provide the following:
1. Docker Swarm Emulation. You must design and develop an emulation tool that will mimic Docker swarm functionality, as described above. You are free to choose any programming language environment to build this emulation. You must provide and describe the following:
• UML diagram.
• Message Sequence Diagram.
• Activity Diagram.
• Source code.
2. Failure Scenarios: You must define at least two different failure scenarios used to assess and evaluate docker swarm.
3. You need to pick-up two services from OpenStack, that can benefit from Docker Swarm:
• You must justify your selection.
Structure of your report:
1. Abstract (150 words): An abstract is included at the beginning of the paper that articulates the research topic and provides a clear rationale for a specific experimentation.
2. Introduction (500-600 words)
A well- articulated introduction section that provides a clear and logical, description which draws the reader`s attention to a central concern, debate, or contention. The section must contain the following:
o Content discussed in the report
o The scope of the report by providing justification for what is covered and most importantly, what is not covered on the topic.
o How the remainder of the paper is organized.
3. Docker Swarm simulation tool description (1000 words).
4. Docker Swarm what-if-scenarios (1000 words).
5. Docker-Swarm Deployment in OpenStack (800-1300 words).
6. Conclusion (150 words)
7. Appendix (Source Code)
Learning Outcome 1: Understand the limitations of Internet technologies.
Learning Outcome 2: Describe the programmable and virtualised network technologies and their architecture.
Learning Outcome 3: Demonstrate an understanding of programmable and virtualised network technologies and their integration into AI, Machine learning, Computing Systems and interworking with IoT technologies.
Explain how Open based network technologies can be used to support use cases as defined by B5G and 6G (e.g. Smart City, Immersive Media, Industry 4.0 applications which include, but is not limited to smart cities, connected robotics, Intelligent Chatbots, digital counselling and mentoring, guided selling and social co-
learning etc).
Design and develop the knowledge necessary to identify and formalise a given technical problem using suitable techniques to design, develop and deploy an open based Collaborative
Computing Systems and solution.
All IP Networks and Cloud Computing.