Intro to Scheduling with Nomad

Karl Bielefeldt

Agenda

  • What is a scheduler?
  • Nomad compared to other schedulers
  • Demo
[servers:children]
DC1
DC2

[DC1]
10.1.1.101 node_num=1 roles='["osa-cp", "dnsmasq", "zookeeper", "cassandra", "kafka"]'
10.1.1.102 node_num=2 roles='["pmaa"]'
10.1.1.103 node_num=3 roles='["osa-cp", "dnsmasq", "zookeeper", "cassandra", "kafka"]'

[DC1:vars]
node_availability=available

[DC2]
10.1.2.104 node_num=4 roles='["osa-cp", "dnsmasq", "zookeeper", "cassandra", "kafka"]'
10.1.2.105 node_num=5 roles='["pmaa"]'
10.1.2.106 node_num=6 roles='["osa-cp", "dnsmasq", "zookeeper", "cassandra", "kafka"]'

[DC2:vars]
node_availability=unavailable

[admin]
localhost ansible_connection=local

Schedulers allocate resources to nodes based on constraints

Schedulers monitor and reallocate resources to nodes based on health checks and constraints

Primary resources managed by schedulers:

  • Processes
  • Docker containers
  • Virtual Machines

Secondary resources managed by schedulers:

  • Secrets
  • Service Discovery
  • Storage
  • Networking
  • Logging
  • Access Control
  • Configuration

What makes Nomad unique?

  • Unix philosophy
  • Cross-platform and not just docker
  • Operationally simple
  • Easy multi-datacenter
  • Gradual migration path
  • Bin packing
  • Plan

Demo

https://www.nomadproject.io
https://www.consul.io