be2389c8ad
* website: update `scaling` and `policy` blocks documentation * website: hclfmt examples in scaling block docs
116 lines
3.1 KiB
Plaintext
116 lines
3.1 KiB
Plaintext
---
|
|
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'],
|
|
]}
|
|
/>
|
|
|
|
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.
|
|
|
|
```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"]
|
|
|
|
group "cache" {
|
|
task "redis" {
|
|
driver = "docker"
|
|
|
|
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 {
|
|
# ...
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
## `scaling` Parameters
|
|
|
|
- `min` - <code>(int: nil)</code> - The minimum acceptable count for the task group.
|
|
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`][].
|
|
|
|
- `max` - <code>(int: <required>)</code> - The maximum acceptable count for the task group.
|
|
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
|
|
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.
|
|
|
|
[autoscaling_policy]: /docs/autoscaling/policy
|
|
[`count`]: /docs/job-specification/group#count 'Nomad Task Group specification'
|
|
[`resources`]: /docs/job-specification/task#resources 'Nomad Task specification'
|
|
[das]: /docs/autoscaling#dynamic-application-sizing
|
|
[horizontal_app_scaling]: /docs/autoscaling#horizontal-application-autoscaling
|