Clustering of Docker Containers using Docker Swarm
Docker Swarm is native clustering for Docker, which combines a group of Docker Containing hosts to form a Cluster. In this Tutorial we will form a Three Node cluster, a Master and agent node. This will contain 3 steps.
- Set up Nodes
- Setup up a Discovery Method.
- Forming Cluster.
Setup Nodes for Swarm:
Upgrade Packages all system packages with
sudo apt-get update && sudo apt-get -y upgrade
Install Docker on all nodes.
curl -sSL https://get.docker.com/ | sh
Stop Docker and run it to listen on a port so swarm can connect
sudo service docker stop
sudo docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
After Installing Docker engines and set it to listen on port 2375, we now have to setup a discovery backend that can form a cluster
Setting a Discovery Backend for Clustering:
Discovery backend helps in identifying and grouping the clusters. There are multiple backend discovery services available like
- staticfile on master
In this tutorial we will use consul as Discovery Service.
docker run -d -p 8500:8500 --name=consul progrium/consul -server -bootstrap
Forming a Cluster:
On Manager Run this command
docker run -d -p 4000:4000 swarm manage -H :4000 --replication --advertise <manager0_ip>:4000 consul://<consul_ip>:8500
run docker ps to see if swarm container is running.
On Agent Nodes run the following command to join the cluster.
docker run -d swarm join --advertise=<node_ip>:2375 consul://<consul_ip>:8500
Your cluster is now formed.
From Manager node run this commands:
docker -H :4000 run -itd ubuntudocker -H :4000 info
You can see that ubuntu is launched in one of the agent nodes which denotes a successful Cluster.