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