Skip to content

mahmadakbar/dockerSwarmVOD

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DevOps - A simple Docker Swarm application using node.js to run Video on Demand services

Download This video with 4k resolution and then rename it with DolbyVision.mkv

alt text

Install the program

  1. Build Node js app in docker
docker build -t <app name> .
  1. running the services (but we want to run Docker swarm, so we do not need to do)
docker run -it -p 3000:8000 <app name>

Run Docker Swarm

  1. Create swarm services (in some case firewall was blocked by ubuntu, you must enable it first with "sudo ufw allow 2377")
docker swarm init --advertise-addr <ip>
  1. Copy token to node os
  2. Vertify node
docker node ls
  1. create services
# for running in one node
docker service create --name <name> -p 3000:8000 <image-name>

or

# for running in global nodes (all nodes connected to the token)
docker service create --name <name> -p 3000:8000 --mode global <image-name>

or

# enter manually the desired number of nodes
docker service create --name <name> -p 3000:8000 --relplicas <n node> <image-name>
  1. Check running aplication
docker ps
  1. List of Services
docker service ls
  1. List task of services
docker service ps <name>
  1. Scale app services
docker service scale <name>=<n node>
  1. Remove node app (optional)
docker node rm <name>
  1. Remove service (optional)
docker service rm <name>
  1. Turn off node (optional)
docker node update --availability drain <Node ID>
  1. Turn on node (optional)
docker node update --availability active <Node ID>

NGINX Load Balancing

alt text

  1. Prepare the Diretory
sudo mkdir -p /data/loadbalancer
  1. Create load balancer setup file with name "default.conf"
sudo nano /data/loadbalancer/default.conf
  1. Write load balancer "default.conf"
server {
   listen 8000;
   location / {
      proxy_pass http://backend;
   }
}
upstream backend {
   server <manager ip>:3000;
   server <worker-1 ip>:3000;
   server <worker-2 ip>:3000;
}
  1. create new docker service for nginx load balancer
docker service create \
--name loadbalancer \
--mount type=bind,source=/data/loadbalancer,target=/etc/nginx/conf.d \
--publish 80:80 \
swarm-lb

About

DevOps - A simple Docker Swarm application using node.js to run Video on Demand services

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published