open-nomad/website/content/docs/job-specification/scaling.mdx

116 lines
3.1 KiB
Plaintext
Raw Normal View History

2020-03-24 22:26:34 +00:00
---
layout: docs
page_title: scaling Stanza - Job Specification
description: The "scaling" stanza allows specifying scaling policy for a task group
---
# `scaling` Stanza
<Placement
groups={[
['job', 'group'],
['job', 'group', 'task'],
]}
/>
2020-03-24 22:26:34 +00:00
The `scaling` block allows configuring scaling options for a `task` or a
`group`, for the purpose of supporting external autoscalers like the
[Nomad Autoscaler](https://github.com/hashicorp/nomad-autoscaler) and scaling
via the Nomad UI. This stanza is not supported within jobs of type `system`.
When placed at the `group` level, the scaling policy will be of type
[horizontal application scaling][horizontal_app_scaling], controlling the value
of [`count`][] for the group.
2020-03-24 22:26:34 +00:00
```hcl
job "example" {
datacenters = ["dc1"]
group "cache" {
count = 1
scaling {
enabled = true
min = 0
max = 10
policy {
# ...
}
}
# ...
}
}
```
When placed at the `task` level, the scaling policy will be of type
[Dynamic Application Sizing][das], controlling the [`resources`][] values of
the task. In this scenario, the `scaling` block must have a label indicating
which resource will be controlled. Valid names are `cpu` and `mem`.
```hcl
job "example" {
datacenters = ["dc1"]
2020-03-24 22:26:34 +00:00
group "cache" {
task "redis" {
driver = "docker"
2020-03-24 22:26:34 +00:00
config {
image = "redis:3.2"
}
resources {
cpu = 100
memory = 256
}
scaling "cpu" {
enabled = true
min = 100
max = 500
policy {
# ...
}
}
scaling "mem" {
enabled = true
min = 64
max = 512
policy {
# ...
}
2020-03-24 22:26:34 +00:00
}
}
}
}
```
## `scaling` Parameters
- `min` - <code>(int: nil)</code> - The minimum acceptable count for the task group.
2020-03-24 22:26:34 +00:00
This should be honored by the external autoscaler. It will also be honored by Nomad
during job updates and scaling operations. Defaults to the specified task group [`count`][].
2020-03-24 22:26:34 +00:00
- `max` - <code>(int: &lt;required&gt;)</code> - The maximum acceptable count for the task group.
2020-03-24 22:26:34 +00:00
This should be honored by the external autoscaler. It will also be honored by Nomad
during job updates and scaling operations.
- `enabled` - <code>(bool: false)</code> - Whether the scaling policy is enabled.
This is intended to allow temporarily disabling an autoscaling policy, and should be
honored by the external autoscaler.
- `policy` - <code>(map<string|...>: nil)</code> - The autoscaling policy. This is
2020-03-26 20:21:24 +00:00
opaque to Nomad, consumed and parsed only by the external autoscaler. Therefore,
its contents are specific to the autoscaler; consult the
[Nomad Autoscaler documentation][autoscaling_policy] for more details.
2020-03-24 22:26:34 +00:00
[autoscaling_policy]: /tools/autoscaling/policy
[`count`]: /docs/job-specification/group#count 'Nomad Task Group specification'
[`resources`]: /docs/job-specification/task#resources 'Nomad Task specification'
[das]: /tools/autoscaling#dynamic-application-sizing
[horizontal_app_scaling]: /tools/autoscaling#horizontal-application-autoscaling