Skip to content

maxotta/kiv-ds-vagrant

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

85 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DS Logo Distributed Systems Lab Demo Projects

CC BY-SA 4.0

Introduction

This repository serves as a collection of small demo projects for students enrolled to the Distributed Systems course taught at DCSE / UWB

Distributed systems demos

The provided demos serve as a template and knowledge base for projects, that students work out in the Lab. The demos are:

  • Demo-1 - the simplest demo showing the basic use of Vagrant and Docker. Starts one Linux node running a SSH server.
  • Demo-2 - shows how to setup and start two connected nodes/containers. It's a simple frontend web server (proxy) connected to a backend server.
  • Demo-3 - extends demo-2 in making the backend scalable (N backend servers) and configures the proxy server to act as a load balancer.
  • Demo-4 - a basic demo of a single Apache ZooKeeper running in standalone mode and serving several clients.
  • Demo-5 - shows how to setup a cluster of ZooKeeper servers (ensemble).
  • Demo-6 - shows how to use Docker volumes in extending the previous demo with persistent data storage, so the ZooKeeper container can be removed, upgraded, etc. without any loss of data. Also, it shows how to setup and use container service health check provided by Docker.

Required Software

Operating Systems

If you want to play with the provided examples you will need one of the following operating systems:

Linux Linux (Debian/Ubuntu based distributions preferred)

macOS macOS from Apple

Win Windows Subsystem for Linux - WSL2 from Microsoft

If you encounter difficulties with setting up the following software, please don't waste your time and install a Debian or Ubuntu based Linux distro inside a VM on the Oracle VirtualBox and use it as your development environment.

Git Git

You will need Git the be able to clone this repo to your machine or even to actively contribute to the continuous improvement of this project. Pull requests are welcome!

Docker Docker

All nodes/services of the provided distributed systems examples are running inside Containers. Containers are simple and lightweight and do not consume much of your computer's resources unlike virtual machines.

Vagrant Vagrant

The Vagrant tool will help us to easily set-up and dispose distributed systems consisting of multiple nodes. With Vagrant, you will start to think about the infrastructure like of code (IaC). A good intro to IaC (in czech language) can be found at Zdrojak.CZ

However, the official intro to Vagrant aptly states that Vagrant is a tool for building and managing virtual machine environments in a single workflow. With an easy-to-use workflow and focus on automation, Vagrant lowers development environment setup time, increases production parity, and makes the "works on my machine" excuse a relic of the past. :-)

For installation, follow the instructions for the OS of your choice at the Vagrant Downloads page

Verify your installation by trying out the Demo-1


This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

CC BY-SA 4.0