Skip to main content

Secure nginx with Let's Encrypt on Ubuntu 18.04

Install and Configure Docker Swarm On Ubuntu


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.

Comments

Popular posts from this blog

Another instance of Certbot is already running - Solved - Linux guru

Error : Another instance of Certbot is already runningcertbot --server https://acme-v02.api.letsencrypt.org/directory --manual --preferred-challenges dns --installer nginx -d *.vishalvyas.com Another instance of Certbot is already running Reason : when you run certbot form your machine and unexpectedly stop the command, Then cert bot is not running but it left some .certbot.lock files behind.You need to kill the certbot instance form your machine. Solution : Run the below command to find killed certbot.find / -type f -name ".certbot.lock" You can see result of the command, If there are, you can remove them. Run below command to remove them.find / -type f -name ".certbot.lock" -exec rm {} \; And try again.

Install Apache Using Ansible Playbooks

Ansible is a automation tool which is widely used, you can install and install, configure and manage number of system and services remotely. you can install software and manage services and tasks without needing manually log in to each servers. you have to install ansible in one machine and use ssh to communicate host each other.



Ansible uses Playbooks which is written in YAML format. it's uses module base format. with playbook can run multiple tasks at time and provide more advance functionality, YAML file always start with "---" syntax. In this article we will see how to install and configure apahce2 using ansible YAML script. Master server : 10.80.253.11 [Ansible server, ] Slave 1 : 10.80.253.12 [need to install apache2 in slave 1] Slave 2 : 10.80.253.13 [need to install apache2 in slave 2] We need to configure slave server info in our ansible configuration file, click here to know how to add client machine to ansible. Let's update our apache2.yml file and install…

Create aws s3 bucket using cli

In this article i will explain you to how to manage s3 bucket and objects using AWS cli command line interface. for that you will have to configure AWS cli interface to your local linux machine. You can configure cli from. HERE.




After configured aws cli to your local machine, you can run all below commands. How to create bucket using AWS Cli.root@master:~# aws s3 mb s3://linuxgurubucket make_bucket: linuxgurubucket Listing Bucket : To list all bucket : root@master:~# aws s3 ls 2018-05-01 15:28:37 linuxgurubucket To list all objects from bucket :root@master:~# aws s3 ls s3://linuxgurubucket 2018-05-01 15:32:16 71515 vishal.jpg How to copy local file to s3 using aws cp command :root@master:~# aws s3 cp ansible.sh s3://linuxgurubucket/ upload: ./ansible.sh to s3://linuxgurubucket/ansible.sh To check it's upload or not :root@master:~# aws s3 ls s3://linuxgurubucket/ 2018-05-01 15:34:19 82 ansible.sh 2018-05-01 15:32:16 71515 vishal.jpg To remove file from s3 bucket using cli: