Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Scheduling Applications at Scale

Scheduling Applications at Scale

Tools like Docker and rkt make it easier than ever to package and distribute applications. Unfortunately, not all organizations have the luxury of being able to package their applications in a container runtime.

Many organizations have virtualized workloads that cannot be easily containerized, such as applications that require full hardware isolation or virtual appliances. On the opposite end of the spectrum, some organizations deploy workloads that are already static binaries such as Go applications or Java applications that only rely on the JVM. These types of applications do not benefit from containerization as they are already self-contained. To address the growing heterogeneity of workloads, HashiCorp created Nomad – a globally aware, distributed scheduler and cluster manager.

Nomad is designed to handle many types of workloads, on a variety of operating systems, at massive scale. Nomad empowers developers to specify jobs and tasks using a high-level specification in a plain-text file. Nomad accepts the job specification, parses the information, determines which compatible hosts have available resources, and then automatically manages the placement, healing, and scaling of the application. By placing multiple applications per host, Nomad maximizes resource utilization and dramatically reduces infrastructure costs.

The flexibility of Nomad’s design brings the benefits of a scheduled application workflow to organizations with heterogeneous workloads and operating systems. This talk will discuss the pros and cons of running in a scheduled environment and includes a series of live demos to supplement the learning experience.

Seth Vargo

April 28, 2016
Tweet

More Decks by Seth Vargo

Other Decks in Technology

Transcript

  1. sched·ul·er COMPUTING (n.) a program that arranges jobs or a

    computer's operations into an appropriate sequence.
  2.   Operator Datacenter RUBY PYTHON PYTHON PYTHON GOLANG GOLANG

    GOLANG GOLANG NODE Skywalker Vader Leia Solo
  3.   Operator Datacenter RUBY PYTHON PYTHON PYTHON GOLANG GOLANG

    GOLANG GOLANG NODE Skywalker Vader Leia Solo RUBY VADER LEIA SOLO 192.168.1.4 192.168.1.5 192.168.1.7 192.168.1.253 88:45:13:B6:87:C4 94:CE:4F:C8:54:C3 CA:9A:3D:7F:8B:CB 72:30:9C:0D:1E:74 Randomly kills applications
  4.   Operator Datacenter RUBY PYTHON PYTHON PYTHON GOLANG GOLANG

    GOLANG GOLANG NODE Skywalker Leia Solo RUBY VADER LEIA SOLO 192.168.1.4 192.168.1.5 192.168.1.7 192.168.1.253 88:45:13:B6:87:C4 94:CE:4F:C8:54:C3 CA:9A:3D:7F:8B:CB 72:30:9C:0D:1E:74 Randomly kills applications F F Vader
  5.   Operator Datacenter RUBY PYTHON PYTHON PYTHON GOLANG GOLANG

    GOLANG GOLANG NODE Skywalker Leia Solo RUBY VADER LEIA SOLO 192.168.1.4 192.168.1.5 192.168.1.7 192.168.1.253 88:45:13:B6:87:C4 94:CE:4F:C8:54:C3 CA:9A:3D:7F:8B:CB 72:30:9C:0D:1E:74 Randomly kills applications F F Vader PYTHON PYTHON PYTHON
  6.   Operator Datacenter RUBY GOLANG GOLANG GOLANG GOLANG NODE

    Skywalker Leia Solo RUBY VADER LEIA SOLO 192.168.1.4 192.168.1.5 192.168.1.7 192.168.1.253 88:45:13:B6:87:C4 94:CE:4F:C8:54:C3 CA:9A:3D:7F:8B:CB 72:30:9C:0D:1E:74 Randomly kills applications Vader PYTHON PYTHON PYTHON
  7.   Operator Datacenter RUBY GOLANG GOLANG GOLANG GOLANG NODE

    Skywalker Leia Solo RUBY VADER LEIA SOLO 192.168.1.4 192.168.1.9 192.168.1.7 192.168.1.253 88:45:13:B6:87:C4 94:CE:4F:C8:54:C3 CA:9A:3D:7F:8B:CB 72:30:9C:0D:1E:74 Rebuilt on 04/20/2016 Vader PYTHON PYTHON PYTHON
  8.   Operator Datacenter RUBY GOLANG GOLANG GOLANG GOLANG NODE

    Skywalker Leia Solo RUBY VADER LEIA SOLO 192.168.1.4 192.168.1.9 192.168.1.7 192.168.1.253 88:45:13:B6:87:C4 94:CE:4F:C8:54:C3 CA:9A:3D:7F:8B:CB 72:30:9C:0D:1E:74 Rebuilt on 04/20/2016 Vader PYTHON PYTHON PYTHON
  9. Schedulers in the Wild Type Work Resources CPU Scheduler Threads

    Physical Cores EC2 / Nova Virtual Machines Hypervisors Hadoop YARN MapReduce Jobs Client Nodes Cluster Scheduler Applications Machines
  10. job "redis" { datacenters = ["us-east-1"] task "redis" { driver

    = "docker" config { image = "redis:latest" } resources { cpu = 500 # Mhz memory = 256 # MB network { mbits = 10 dynamic_ports = ["redis"] } } } } example.nomad
  11. Optimistic vs Pessimistic Internal vs External State Single vs Multi

    Level Fixed vs Pluggable Service vs Batch Oriented
  12. Consul Architecture CLIENT CLIENT CLIENT CLIENT CLIENT CLIENT SERVER SERVER

    SERVER REPLICATION REPLICATION RPC RPC LAN GOSSIP SERVER SERVER SERVER REPLICATION REPLICATION WAN GOSSIP
  13. Single-Region Architecture SERVER SERVER SERVER CLIENT CLIENT CLIENT DC1 DC2

    DC3 FOLLOWER LEADER FOLLOWER REPLICATION FORWARDING REPLICATION FORWARDING RPC RPC RPC
  14. 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
  15. Fingerprinting Type Examples Operating System Kernel, OS, Version Hardware CPU,

    Memory, Disk Apps (Capabilities) Docker, Java, Consul Environment AWS, GCE
  16. Containerized Virtualized Standalone Docker Qemu / KVM Java Jar rkt

    Windows Server Containers Hyper-V Xen C# Static Binaries
  17. “ – Negative Nancy No one would ever need to

    schedule a million containers.