github.com/quite/nomad@v0.8.6/website/source/index.html.erb (about) 1 --- 2 description: |- 3 Nomad is a highly available, distributed, data-center aware cluster and 4 application scheduler designed to support the modern datacenter with support 5 for long-running services, batch jobs, and much more. 6 --- 7 8 <header> 9 <div class="container hero"> 10 <div class="row"> 11 <div class="col-md-offset-2 col-md-8"> 12 <%= inline_svg "logo-hashicorp.svg", height: 120, class: "logo" %> 13 14 <h1>Easily Deploy Applications at Any Scale</h1> 15 16 <a class="button primary" href="/intro/index.html">Get Started</a> 17 <a class="button" href="/downloads.html">Download <%= latest_version %></a> 18 </div> 19 </div> 20 </div> 21 </header> 22 23 <section id="features" class="marketing green"> 24 <div class="container"> 25 <div class="row"> 26 <div class="col-sm-12"> 27 <h2>Simple and Lightweight</h2> 28 <p class="lead"> 29 HashiCorp Nomad is a single binary that schedules applications and services on 30 Linux, Windows, and Mac. It is an open source scheduler that uses a 31 declarative job file for scheduling virtualized, containerized, and 32 standalone applications. 33 </p> 34 </div> 35 </div> 36 <div class="row"> 37 <div class="col-sm-6"> 38 <h3>1. Declare Jobs</h3> 39 <p> 40 Users compose and submit high-level job files. Nomad handles the 41 scheduling and upgrading of the applications over time. 42 </p> 43 <p> 44 This flexibility makes it easy to deploy one container, dozens of 45 containers, or even <a 46 href="https://www.hashicorp.com/c1m/">millions</a>. 47 </p> 48 </div> 49 <div class="col-sm-6"> 50 <h3>2. Plan Changes</h3> 51 <p> 52 With built-in dry-run execution, Nomad shows what scheduling decisions 53 it will take before it takes them. Operators can approve or deny these 54 changes to create a safe and reproducible workflow. 55 </p> 56 </div> 57 </div> 58 <div class="row"> 59 <div class="col-sm-6"> 60 <h3>3. Run Applications</h3> 61 <p> 62 Nomad runs applications and ensures they keep running in failure 63 scenarios. In addition to long-running services, Nomad can schedule 64 batch jobs, distributed cron jobs, and parameterized jobs. 65 </p> 66 </div> 67 <div class="col-sm-6"> 68 <h3>4. Monitor Progress</h3> 69 <p> 70 Stream logs, send signals, and interact with the file system of 71 scheduled applications. These operator-friendly commands bring the 72 familiar debugging tools to a scheduled world. 73 </p> 74 </div> 75 </div> 76 </div> 77 </section> 78 79 <section id="hybrid-multi-cloud" class="marketing"> 80 <div class="container"> 81 <div class="row"> 82 <div class="col-sm-12"> 83 <span class="callout">Combine</span> 84 <h2>Hybrid & Multi Cloud</h2> 85 <p class="lead"> 86 As more organizations adopt cloud technologies, the desire to run in 87 multiple datacenters and multiple regions becomes critical. Nomad can 88 span public and private clouds and treat all your infrastructure as a 89 pool of resources. 90 </p> 91 </div> 92 </div> 93 94 <div class="row"> 95 <div class="col-sm-12"> 96 <%= inline_svg "feature-public-private-clouds.svg" %> 97 </div> 98 </div> 99 100 <div class="row"> 101 <div class="col-sm-6"> 102 <h3>Hybrid Cloud</h3> 103 <p> 104 Nomad bridges the gap between the public and private cloud, creating a 105 unified interface for developers to run any application on any 106 infrastructure. Easily run services across your internal private cloud 107 and external public cloud transparently to application developers. 108 </p> 109 </div> 110 <div class="col-sm-6"> 111 <h3>Multi Cloud</h3> 112 <p> 113 As more organizations adopt cloud technologies, the desire to run 114 applications simultaneously across multiple clouds increases. Nomad 115 combines the power of all cloud providers into a single, unified 116 interface for deploying applications and running services. 117 </p> 118 </div> 119 </div> 120 </div> 121 </section> 122 123 <section id="simplify" class="marketing green"> 124 <div class="container"> 125 <div class="row"> 126 <div class="col-sm-12"> 127 <span class="callout">Maintain</span> 128 <h2>Simplify Operations</h2> 129 <p class="lead"> 130 Nomad simplifies operations by supporting several deployment 131 strategies to safely upgrade jobs, automatically handling machine 132 failures, and providing a single workflow to deploy applications. 133 </p> 134 </div> 135 </div> 136 137 <div class="row"> 138 <div class="col-sm-offset-5 col-sm-6"> 139 <h3>Rolling Deploys</h3> 140 </div> 141 </div> 142 <div class="row"> 143 <div class="col-sm-5" id="feature-rolling-deploys"> 144 <%= inline_svg "feature-rolling-deploys.svg" %> 145 </div> 146 <div class="col-sm-7"> 147 <p> 148 In order to update an application while reducing downtime, Nomad 149 provides a built-in mechanism for rolling upgrades. Operators specify 150 the rate at which they would like to upgrade their service in the 151 declarative job file, plan the changes, and submit the new job. Nomad 152 then updates the service to the newest version using task health and 153 Consul health check information to ensure replacement allocations are 154 healthy. With full control over the update strategy, rolling upgrades 155 make application deployments simple and safe. 156 </p> 157 </div> 158 </div> 159 160 <div class="row"> 161 <div class="col-sm-12"> 162 <h3>Blue/Green Deployments</h3> 163 </div> 164 </div> 165 <div class="row"> 166 <div class="col-sm-7"> 167 <p> 168 Nomad supports native blue/green and canary deployments through the 169 declarative job file syntax. Instead of doing a rolling upgrade of the 170 existing allocations, the new version of the group is deployed along 171 side the existing set. While this duplicates the resources required 172 during the upgrade process, it allows very safe deployments as the 173 original version of the group is untouched till the operator promotes 174 the new version. 175 </p> 176 </div> 177 <div class="col-sm-5"> 178 <%= inline_svg "feature-blue-green.svg" %> 179 </div> 180 </div> 181 182 <div class="row"> 183 <div class="col-sm-offset-5 col-sm-6"> 184 <h3>Automatic Machine Failures</h3> 185 </div> 186 </div> 187 <div class="row"> 188 <div class="col-sm-5"> 189 <%= inline_svg "feature-machine-failure.svg" %> 190 </div> 191 <div class="col-sm-7"> 192 <p> 193 Because it knows the state of all nodes and applications, if a 194 node becomes unhealthy, Nomad will automatically reschedule the 195 applications that were previously running on the unhealthy host 196 onto a new, healthy host if capacity exists. As new clients are 197 added to the cluster, they can share the responsibility of 198 running applications and services. 199 </p> 200 </div> 201 </div> 202 </div> 203 </section> 204 205 <section id="flexible-workloads" class="marketing"> 206 <div class="container"> 207 <div class="row"> 208 <div class="col-sm-12"> 209 <span class="callout">Support</span> 210 <h2>Flexible Workloads</h2> 211 <p class="lead"> 212 In addition to supporting Linux, Windows, and Mac, Nomad has 213 extensible support for containerized, virtualized, and standalone 214 applications. Easily start Docker containers, VMs, or application 215 runtimes like Java. 216 </p> 217 </div> 218 </div> 219 220 <div class="row"> 221 <div class="col-sm-12"> 222 <%= inline_svg "feature-flexible-workloads.svg" %> 223 </div> 224 </div> 225 226 <div class="row"> 227 <div class="col-sm-6"> 228 <h3>Diverse Technologies</h3> 229 <p> 230 By supporting a wide range of technologies such as Docker, rkt, and 231 LXC, Nomad does not force you into a single technology. Easily use 232 multiple container or virtualization runtimes simultaneously. 233 Applications with their own runtime such as Java or Go can be 234 scheduled directly without the overhead of a container. 235 </p> 236 </div> 237 <div class="col-sm-6"> 238 <h3>Multi OS</h3> 239 <p> 240 The Nomad client runs on Linux, Windows, and Mac OS. This diverse 241 operating system support enables using the same application scheduler 242 for all your scheduling and runtime needs. 243 </p> 244 </div> 245 </div> 246 </div> 247 </section> 248 249 250 <section id="binpacking" class="marketing black"> 251 <div class="container"> 252 <div class="row"> 253 <div class="col-sm-12"> 254 <span class="callout">Maximize</span> 255 <h2>Increase Utilization & Reduce Costs</h2> 256 <p class="lead"> 257 Nomad uses bin packing to optimize application placement onto servers 258 to maximize resource utilization, increase density, and help reduce 259 costs. 260 </p> 261 </div> 262 </div> 263 264 <div class="row"> 265 <div class="col-sm-12"> 266 <%= inline_svg "feature-binpacking.svg" %> 267 </div> 268 </div> 269 270 <div class="row"> 271 <div class="col-sm-6"> 272 <h3>Increase Density</h3> 273 <p> 274 Nomad places applications and services based on a bin packing 275 algorithm, which is used to optimize the resource utilization and 276 density of applications. Nomad automatically augments the bin-packing 277 algorithm with anti-affinity rules to avoid colocating instances of 278 the same service to reduce the probability of correlated failures. 279 </p> 280 </div> 281 <div class="col-sm-6"> 282 <h3>Reduce Costs</h3> 283 <p> 284 By maximizing resource utilization, Nomad can help remove unused or 285 under-utilized machines in the cluster, reducing overall costs. 286 Additionally, Nomad enables organizations to utilize larger, more 287 cost-effective compute devices which can be less expensive at scale. 288 </p> 289 </div> 290 </div> 291 </div> 292 </section> 293 294 <section id="examples" class="marketing gray"> 295 <div class="container"> 296 <div class="row"> 297 <div class="col-sm-12"> 298 <h2>Examples</h2> 299 <h3>Create and Submit Jobs</h3> 300 <p> 301 Easily create, validate, submit, and check the status of jobs using 302 the Nomad CLI. 303 </p> 304 </div> 305 </div> 306 307 <div class="row"> 308 <div class="col-sm-12"> 309 <div class="terminal"> 310 <span class="circle"><%= inline_svg "terminal-circle.svg" %></span> 311 <span class="circle"><%= inline_svg "terminal-circle.svg" %></span> 312 <span class="circle"><%= inline_svg "terminal-circle.svg" %></span> 313 <div class="terminal-content"> 314 <span> 315 <span class="text-green">admin@hashicorp.com:</span> 316 <span>nomad init</span> 317 </span> 318 <span>Example job file written to example.nomad</span> 319 <span> </span> 320 <span> 321 <span class="text-green">admin@hashicorp.com:</span> 322 <span>nomad job validate example.nomad</span> 323 </span> 324 <span>Job validation successful</span> 325 <span> </span> 326 <span> 327 <span class="text-green">admin@hashicorp.com:</span> 328 <span>nomad job run example.nomad</span> 329 </span> 330 <span>==> Monitoring evaluation "feb23392"</span> 331 <span class="pre"> Evaluation triggered by job "example"</span> 332 <span class="pre"> Evaluation within deployment: "7ffa7ed1"</span> 333 <span class="pre"> Allocation "a2f24fcf" created: node "3714a84a", group "cache"</span> 334 <span class="pre"> Evaluation status changed: "pending" -> "complete"</span> 335 <span>==> Evaluation "feb23392" finished with status "complete"</span> 336 <span> </span> 337 <span> 338 <span class="text-green">admin@hashicorp.com:</span> 339 <span>nomad status</span> 340 </span> 341 <span class="pre">ID Type Priority Status Submit Date</span> 342 <span class="pre">example service 50 running <%= Time.now.strftime("%m/%d/%y %H:%M:%S %Z") %></span> 343 </div> 344 </div> 345 </div> 346 </div> 347 348 <div class="row"> 349 <div class="col-sm-12"> 350 <h3>Plan Changes</h3> 351 <p> 352 Perform a dry-run to check application placement, scheduling 353 decisions, and visualize failures before they happen. 354 </p> 355 </div> 356 </div> 357 358 <div class="row"> 359 <div class="col-sm-12"> 360 <div class="terminal"> 361 <span class="circle"><%= inline_svg "terminal-circle.svg" %></span> 362 <span class="circle"><%= inline_svg "terminal-circle.svg" %></span> 363 <span class="circle"><%= inline_svg "terminal-circle.svg" %></span> 364 <div class="terminal-content"> 365 <span> 366 <span class="text-green">admin@hashicorp.com:</span> 367 <span>nomad job plan example.nomad</span> 368 </span> 369 <span class="pre"><span class="text-orange">+/-</span> <span class="text-bold">Job: "example"</span></span> 370 <span class="pre"><span class="text-bold text-orange">+/-</span> <span class="text-bold">Task Group: "cache"</span> (<span class="text-green">2 create</span>, <span class="text-blue">1 in-place update</span>)</span> 371 <span class="pre"> <span class="text-orange">+/-</span> Count: "1" => "3" (<span class="text-green">forces create</span>)</span> 372 <span class="pre"> <span class="text-bold">Task: "redis"</span></span> 373 <span> </span> 374 <span class="pre"><span class="text-bold">Scheduler dry-run:</span></span> 375 <span class="pre"><span class="text-bold text-green">- All tasks successfully allocated.</span></span> 376 <span> </span> 377 <span class="pre"><span class="text-bold">Job Modify Index: 7</span></span> 378 <span> </span> 379 <span> 380 <span class="text-green">admin@hashicorp.com:</span> 381 <span>nomad job run -check-index 7 example.nomad</span> 382 </span> 383 <span>==> Monitoring evaluation "e338a6ae"</span> 384 <span class="pre"> Evaluation triggered by job "example"</span> 385 <span class="pre"> Evaluation within deployment: "43310206"</span> 386 <span class="pre"> Allocation "991a0d89" created: node "c5916a99", group "cache"</span> 387 <span class="pre"> Allocation "daee8be1" created: node "c5916a99", group "cache"</span> 388 <span class="pre"> Allocation "83f29312" modified: node "c5916a99", group "cache"</span> 389 <span class="pre"> Evaluation status changed: "pending" -> "complete"</span> 390 <span>==> Evaluation "e338a6ae" finished with status "complete"</span> 391 </div> 392 </div> 393 </div> 394 </div> 395 396 <div class="row"> 397 <div class="col-sm-12"> 398 <h3>View Application Logs</h3> 399 <p> 400 Stream application logs directly in the terminal to help analyze and 401 debug applications. 402 </p> 403 </div> 404 </div> 405 406 <div class="row"> 407 <div class="col-sm-12"> 408 <div class="terminal"> 409 <span class="circle"><%= inline_svg "terminal-circle.svg" %></span> 410 <span class="circle"><%= inline_svg "terminal-circle.svg" %></span> 411 <span class="circle"><%= inline_svg "terminal-circle.svg" %></span> 412 <div class="terminal-content"> 413 <span> 414 <span class="text-green">admin@hashicorp.com:</span> 415 <span>nomad alloc logs -tail -job example</span> 416 </span> 417 <span><%= Time.now.strftime("%d %b %H:%M:%S") %> # Server started, Redis version 3.2.9</span> 418 <span><%= Time.now.strftime("%d %b %H:%M:%S") %> * The server is now ready to accept connections on port 6379</span> 419 </div> 420 </div> 421 </div> 422 </div> 423 424 <div class="row"> 425 <div class="col-sm-12 col-lg-8 col-lg-offset-2"> 426 <p class="lead" align="center"> 427 The introduction contains a walkthrough guide, glossary, and a range 428 of examples for learning and experimenting with Nomad. 429 </p> 430 <p align="center"> 431 <a href="/intro/index.html" class="button primary">Get Started</a> 432 </p> 433 </div> 434 </div> 435 </div> 436 </section>