Docke swarm
Swarm is a clustering of the docker. Its a group of server on which you have hosted to different applications in order to provide some services and it’s intention to insort that these services are always up and running. That we created cluster. Swarm support high availibility and we can join multyple manager to the cluster. So that if one manager node fails then onther can automatically take it’s place withoud impact cluster. with swarm we can scale up our application horizantaly. we can increase number of containers instances for the same application.
Manager Node : manager nodes are manage cluster management tasks.
- it’s maintain cluster state.
- scheduling services.
- Serving swarm mode HTTP API Endpoint.
Worker node : worker nodes are used to execute containers. Worker node are instances of docker engine which executes containers .Worker nodes don’t participate in the raft distributed state, make scheduling decisions, or serve the swarm mode HTTP API. All manager node are also worker.
Scenerio :
Manager node : 10.80.253.11
Worker Node : 10.80.253.12
Requirement :
- Ubuntu 16.04
- Docker need to be installed on ubuntu machine.
- Allow Firewall port 7946, 4789, 2376, 2376, 2377 and 80
How to create docker swarm cluster :
First we need to initialized manager node ip address which will act as a Manger node.
run below command on manager node.
$ docker swarm init –advertise-addr 10.80.253.11
it will give below output :
root@master:~# docker swarm init –advertise-addr 10.80.253.11
Swarm initialized: current node (1zqxojtw1db70ngtty9p80760) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join
–token SWMTKN-1-2h4urabqbxvdj1r2qj65a4b58qdxafuk9n0afhw77umd0v56l5-5zx9uh2nm2ztz7icrhnk0j1pg
10.80.253.11:2377
To add a manager to this swarm, run ‘docker swarm join-token manager’ and follow the instructions.
Above out put is a tocket which add worker node to the cluster.
Now we will check status of manager node with below command :
If everything will be fine then you should see below output.
root@master:~# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
1zqxojtw1db70ngtty9p80760 * master Ready Active Leader
root@master:~#
You can also check docker swarm cluster status by following command.
root@master:~# docker info
How to add worker node to the swarm cluster. we will execute command on worker node now.
Just go back that output on manager node copy and then past here in worker node to join swarm cluster.
root@slave1:~# docker swarm join
> –token SWMTKN-1-2h4urabqbxvdj1r2qj65a4b58qdxafuk9n0afhw77umd0v56l5-5zx9uh2nm2ztz7icrhnk0j1pg
> 10.80.253.11:2377
This node joined a swarm as a worker.
Now run below command on manager node to list worker node.
root@master:~# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
1zqxojtw1db70ngtty9p80760 * master Ready Active Leader
bday59dl1gesb0944dtj2tobe slave1 Ready Active
How to launch service in docker swarm node.
our docker swarm is now up and running. let’s test some application. we will run httpd service.
root@master:~# docker service create –name mywebserver -p 80:80 httpd
ydvq0ij2knwjlxrtsw7wf2g48
above command will create httpd service and it will mapped it to port 80.
To check service running or not by following command.
root@master:~# docker service ps mywebserver
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
xkhwxt5cs42w mywebserver.1 httpd:latest master Running Running 2 minutes ago
we can scale web services across different containers. in swarm we can scale up and down services by creating additional instances. Currently we have running only one container “mywebserver.1” on docker manager. let’s scale this to 3 instances.
root@master:~# docker service scale mywebserver=3
mywebserver scaled to 3
To check the scaling.
root@master:~# docker service ps mywebserver
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
xkhwxt5cs42w mywebserver.1 httpd:latest master Running Running 5 minutes ago
ntf2kcklonrg mywebserver.2 httpd:latest slave1 Running Running 18 seconds ago
y97ki659r1zy mywebserver.3 httpd:latest slave1 Running Running 18 seconds ago
You can see 3 node are up and running in swarm.
Now we will check docker swarm. apache service is running in manager node . we will access webserver by pointing our manager ip in web browser. http://10.80.253.11. same output will be get by worker node http://10.80.253.12.
We have successfully installed docker swarm.