Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Taming the public and private clouds with Nomad
Search
Diptanu Choudhury
April 11, 2016
210
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Taming the public and private clouds with Nomad
Diptanu Choudhury
April 11, 2016
More Decks by Diptanu Choudhury
See All by Diptanu Choudhury
Towards Running Stateful Applications on Nomad
diptanu
0
1k
Chaos Engineering and design principles for building Highly Available services on the cloud
diptanu
0
490
Distributed Scheduling with Apache Mesos in the Cloud
diptanu
1
490
Reliably shipping containers in a resource rich world using Titan
diptanu
8
2.4k
Distributed Scheduling with Apache Mesos in the Cloud
diptanu
0
400
Featured
See All Featured
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
200
Being A Developer After 40
akosma
91
590k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
150
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Ruling the World: When Life Gets Gamed
codingconduct
0
260
Practical Orchestrator
shlominoach
191
11k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
610
How to train your dragon (web standard)
notwaldorf
97
6.7k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
540
How to Think Like a Performance Engineer
csswizardry
28
2.7k
Are puppies a ranking factor?
jonoalderson
1
3.7k
Transcript
HASHICORP Taming the modern public and private clouds with Nomad
Diptanu Gon Choudhury @diptanu PhillyETE 2016
HASHICORP Evolution of compute infrastructure 1995 2000 2015
HASHICORP Evolution of compute infrastructure
HASHICORP Evolution of compute infrastructure Global Public Cloud AWS -
US-West-2 AWS - US-East-1 GCP - US-Central-1 Private Clouds Private Clouds
HASHICORP Challenges of the modern cloud 10s of 1000s of
compute nodes to manage Compute clusters are spread across the globe Static and offline partitioning of clusters are no longer efficient
HASHICORP Challenges of the modern cloud Heterogenous API for accessing
compute infrastructure Heterogenous primitives for managing network, secrets, etc
HASHICORP Evolution of application architecture SOA and Micro Services are
replacing monoliths Distributed Systems are the new normal
HASHICORP Challenges in running modern services Orchestrated deployment and rollback
strategies More modes of failures
HASHICORP Cluster Schedulers to the rescue Decouple Work from Resources
Better Quality of Service Higher Resource Utilization
Nomad HASHICORP Multi-Datacenter Multi-Region Flexible Workloads Job Priorities Bin Packing
Large Scale Operationally Simple
HASHICORP Nomad as Cluster Scheduler Bin Packing Job Queueing Over-Subscription
Higher Resource Utilization Decouple Work from Resources Better Quality of Service
HASHICORP Nomad as the Cluster Scheduler Abstraction API Contracts Standardization
Higher Resource Utilization Decouple Work from Resources Better Quality of Service
HASHICORP Nomad as the Cluster Scheduler Priorities Resource Isolation Pre-emption
Higher Resource Utilization Decouple Work from Resources Better Quality of Service
HASHICORP Job Specification Declares what to run
HASHICORP example.nomad # Define our simple redis job job "redis"
{ # Run only in us-east-1 datacenters = ["us-east-1"] # Define the single redis task using Docker task "redis" { driver = "docker" config { image = "redis:latest" } resources { cpu = 500 # Mhz memory = 256 # MB network { mbits = 10 dynamic_ports = ["redis"] } } } }
HASHICORP Job Specification Nomad determines where and manages how to
run
HASHICORP Job Specification Abstract work from resources
HASHICORP Supports multiple Clouds, DCs and Regions Resources across DCs
are presented as single pool Developers can target multiple datacenter in the same job file Unified interface for developers across clouds
HASHICORP Unified interface across hybrid clouds AWS GCP Azure On-Prem
DC Nomad Job Spec
HASHICORP Single Region Architecture SERVER SERVER SERVER CLIENT CLIENT CLIENT
DC1 DC2 DC3 FOLLOWER LEADER FOLLOWER REPLICATION FORWARDING REPLICATION FORWARDING RPC RPC RPC
HASHICORP Multi Region Architecture SERVER SERVER SERVER FOLLOWER LEADER FOLLOWER
REPLICATION FORWARDING REPLICATION REGION B GOSSIP REPLICATION REPLICATION FORWARDING REGION FORWARDING REGION A SERVER FOLLOWER SERVER SERVER LEADER FOLLOWER
Nomad HASHICORP Region is Isolation Domain 1-N Datacenters Per Region
Flexibility to do 1:1 (Consul) Scheduling Boundary
HASHICORP Data Model
HASHICORP Evaluations ~= State Change Event
HASHICORP Create / Update / Delete Job Node Up /
Node Down Allocation Failed
HASHICORP External Event Evaluation Creation Evaluation Queuing Evaluation Processing Optimistic
Coordination State Updates
HASHICORP Scheduler Architecture Concurrent and optimistic scheduling Event Driven invocation
of schedulers No head of line blocking for different type of workloads
HASHICORP Client Architecture Broad OS Support Host Fingerprinting Pluggable Drivers
HASHICORP Drivers Execute Tasks Provide Resource Isolation
HASHICORP Containerized Virtualized Standalone Docker Qemu / KVM Java Jar
Static Binaries Rocket
HASHICORP Containerized Virtualized Standalone Docker Rocket Windows Server Containers Qemu
/ KVM Hyper-V Xen Java Jar Static Binaries C#
HASHICORP Maintainance Primitives First class support for doing maintenance on
nodes Drain allocations running on a node nomad node-drain -enable 149cc920 Are you sure you want to enable drain mode for node "149cc920"? [y/N]
HASHICORP Service Discovery Aware Allows developers to define services exposed
by a job Keep services and checks synced
HASHICORP example.nomad job "redis" { task "redis" { ……… service
{ name = “binstore” tags = [“env:staging”, “stack:beta”] port = “http” check { name = “binstore-http” type = “http” path = “/status” interval = “30s” timeout = “2s” } } ………… } }
HASHICORP System Job Scheduler Runs a job on every node
on the cluster Great for running monitoring, logging, auditing software
HASHICORP Log Management Takes care of rotating logs of services
Log forwarding coming soon
HASHICORP Thanks! https://github.com/hashicorp/nomad https://www.nomadproject.io/