What is HashiCorp Nomad?

nomad
Reading Time: 3 minutes

Introduction

HashiCorp Nomad is a modern, lightweight, workload scheduler. Nomad is also known as orchestrating engine like Kubernetes. HashiCorp Nomad makes it easy for any organization to easily deploy and manage its applications. It can not only orchestrate containerized applications but also legacy applications using a single, unified workflow. Nomad can also run Docker, non-containerized, microservice, and batch applications.

Problems Nomad trying to solve

Nomad can deploy containers and legacy applications on the same infrastructure. Nomad can orchestrate containers, binaries, batch applications(java ) and etc. For example, an organization wants to move its legacy application to the cloud but is not ready to put everything into a container. They want to utilize flexibility and elasticity provided by the cloud Nomad can help in achieving that. nomad supports various task drivers for these jobs

Architecture

HashiCorp Nomad arch

Nomad has a single binary configured as the client as well as the server. We need to change the configuration according. let’s look into architecture.

  • Server: A nomad agent running as a server as we mentioned there is only a single binary for both client and server. sever is the brain of the nomad cluster and manages all the jobs and client-run evaluations and then creates task allocations. In case of high availability, sever also performs election, and data replicated to every sever.
  • Leader: A leader is a nomad server that manages the cluster. It is in charge of applying plans and creating vault tokens for the workloads.
  • Follower: Followers are also the sever we can increase the number of followers as we want for high availability .when the leader goes down election will perform to ensure high availability. Scheduling is planned and submitted to the leader to provide more scheduling capacity to the cluster.
  • Client: A nomad binary running as a client. A user writes jobs and submits them to the client and the client is responsible for running those jobs to the server. It watches for any work assigned and executes jobs.

Install HashiCorp Nomad for Linux

Add the HashiCorp GPG key.

curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -

Add the official HashiCorp Linux repository.

sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"

Update and install.

sudo apt-get update && sudo apt-get install nomad

Type nomad on your Linux terminal

If you are getting the above output. you have successfully installed nomad. Let’s run the nomad server locally. for that, we need to run this command and also need to specify an agent -dev. For experiment or testing, we can use the dev agent. It is the special configuration that can run the client and server mode without persist its cluster state on disk.

nomad agent -dev 
server and client mode

Do not close this terminal window and now hit on your http://localhost:4646/ you will see nomad GUI.

Nomad gui

Conclusion

Nomad is an orchestrating engine. we can run any kind of workload whether it is docker, java, or binaries. it provides task drivers for these kinds of jobs. native integration support with hashicorp products.Single binary to spin up the cluster. we have covered basic architecture and installation.

knoldus

Written by 

Shivam Pateriya is a DevOps intern at Knoldus. He likes to learn about emerging technologies. His keen interest in python and cloud.