Nomad集群管理器和調(diào)度器
Nomad 是一個(gè)集群管理器和調(diào)度器,專(zhuān)為微服務(wù)和批量處理工作流設(shè)計(jì)。Nomad 是分布式,高可用,可擴(kuò)展到跨數(shù)據(jù)中心和區(qū)域的數(shù)千個(gè)節(jié)點(diǎn)。
Nomad 提供一個(gè)常規(guī)工作流跨基礎(chǔ)設(shè)施部署應(yīng)用。開(kāi)發(fā)者使用一個(gè)聲明式作業(yè)規(guī)范來(lái)定義應(yīng)用該如何部署,資源有什么要求(CPU,內(nèi)存,硬盤(pán))。Nomad 接收這些作業(yè),查找可用的資源來(lái)運(yùn)行應(yīng)用。調(diào)度算法確保所有的約束都滿足,盡量在一個(gè)主機(jī)部署盡可能多的應(yīng)用,優(yōu)化資源利用。此外,Nomad 支持在所有主流操作系統(tǒng)運(yùn)行虛擬化,容器化或者是獨(dú)立的應(yīng)用,靈活的支持廣泛的工作流負(fù)載。
Nomad 已經(jīng)在生產(chǎn)環(huán)境使用,主要特性:
-
Docker:Nomad 支持 Docker 作為第一類(lèi)的工作負(fù)載類(lèi)型
-
操作簡(jiǎn)單
-
多個(gè)數(shù)據(jù)中心和多個(gè)區(qū)域
-
靈活的工作負(fù)載
-
可擴(kuò)展
代碼示例:
# 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"]
}
}
}
}
}
評(píng)論
圖片
表情
