Nomad 是一个集群管理器和调度器,专为微服务和批量处理工作流设计。Nomad 是分布式,高可用,可扩展到跨数据中心和区域的数千个节点。
Nomad
提供一个常规工作流跨基础设施部署应用。开发者使用一个声明式作业规范来定义应用该如何部署,资源有什么要求(CPU,内存,硬盘)。Nomad 接收这些作业,查找可用的资源来运行应用。调度算法确保所有的约束都满足,尽量在一个主机部署尽可能多的应用,优化资源利用。此外,Nomad 支持在所有主流操作系统运行虚拟化,容器化或者是独立的应用,灵活的支持广泛的工作流负载。
Nomad 已经在生产环境使用,主要特性:
*
**Docker**:Nomad 支持 Docker 作为第一类的工作负载类型
*
**操作简单**
*
**多个数据中心和多个区域 **
*
**灵活的工作负载**
*
**可扩展**
代码示例:
<pre class="brush:java;toolbar: true; auto-links: false;"># Define the hashicorp/web/frontend job
job "hashicorp/web/frontend" {
# Run in two datacenters
datacenters = ["us-west-1", "us-east-1"]
# Only run our workload on linux
constraint {
attribute = "$attr.kernel.name"
value = "linux"
}
# Configure the job to do rolling updates
update {
# Stagger updates every 30 seconds
stagger = "30s"
# Update a single task at a time
max_parallel = 1
}
# Define the task group
group "frontend" {
# Ensure we have enough servers to handle traffic
count = 10
task "web" {
# Use Docker to run our server
driver = "docker"
config {
image = "hashicorp/web-frontend:latest"
}
# Ask for some resources
resources {
cpu = 500
memory = 128
network {
mbits = 10
dynamic_ports = ["http"]
}
}
}
}
}</pre>