mirror of
https://github.com/elastic/elasticsearch.git
synced 2025-04-25 07:37:19 -04:00
Add docs for desired balance allocator (#92109)
These docs cover the new allocator and the settings controlling the heuristics for combining disk usage and write load into the overall weight.
This commit is contained in:
parent
337b65ccea
commit
c9ae9123fe
1 changed files with 82 additions and 36 deletions
|
@ -57,17 +57,18 @@ one of the active allocation ids in the cluster state.
|
||||||
[[shards-rebalancing-settings]]
|
[[shards-rebalancing-settings]]
|
||||||
==== Shard rebalancing settings
|
==== Shard rebalancing settings
|
||||||
|
|
||||||
A cluster is _balanced_ when it has an equal number of shards on each node
|
A cluster is _balanced_ when it has an equal number of shards on each node, with
|
||||||
without having a concentration of shards from any index on any node. {es} runs
|
all nodes needing equal resources, without having a concentration of shards from
|
||||||
an automatic process called _rebalancing_ which moves shards between the nodes
|
any index on any node. {es} runs an automatic process called _rebalancing_ which
|
||||||
in your cluster to improve its balance. Rebalancing obeys all other shard
|
moves shards between the nodes in your cluster to improve its balance.
|
||||||
allocation rules such as <<cluster-shard-allocation-filtering,allocation
|
Rebalancing obeys all other shard allocation rules such as
|
||||||
filtering>> and <<forced-awareness,forced awareness>> which may prevent it from
|
<<cluster-shard-allocation-filtering,allocation filtering>> and
|
||||||
completely balancing the cluster. In that case, rebalancing strives to achieve
|
<<forced-awareness,forced awareness>> which may prevent it from completely
|
||||||
the most balanced cluster possible within the rules you have configured. If you
|
balancing the cluster. In that case, rebalancing strives to achieve the most
|
||||||
are using <<data-tiers,data tiers>> then {es} automatically applies allocation
|
balanced cluster possible within the rules you have configured. If you are using
|
||||||
filtering rules to place each shard within the appropriate tier. These rules
|
<<data-tiers,data tiers>> then {es} automatically applies allocation filtering
|
||||||
mean that the balancer works independently within each tier.
|
rules to place each shard within the appropriate tier. These rules mean that the
|
||||||
|
balancer works independently within each tier.
|
||||||
|
|
||||||
You can use the following settings to control the rebalancing of shards across
|
You can use the following settings to control the rebalancing of shards across
|
||||||
the cluster:
|
the cluster:
|
||||||
|
@ -84,7 +85,6 @@ Enable or disable rebalancing for specific kinds of shards:
|
||||||
* `none` - No shard balancing of any kind are allowed for any indices.
|
* `none` - No shard balancing of any kind are allowed for any indices.
|
||||||
--
|
--
|
||||||
|
|
||||||
|
|
||||||
`cluster.routing.allocation.allow_rebalance`::
|
`cluster.routing.allocation.allow_rebalance`::
|
||||||
+
|
+
|
||||||
--
|
--
|
||||||
|
@ -98,13 +98,32 @@ Specify when shard rebalancing is allowed:
|
||||||
--
|
--
|
||||||
|
|
||||||
`cluster.routing.allocation.cluster_concurrent_rebalance`::
|
`cluster.routing.allocation.cluster_concurrent_rebalance`::
|
||||||
(<<dynamic-cluster-setting,Dynamic>>)
|
(<<dynamic-cluster-setting,Dynamic>>)
|
||||||
Allow to control how many concurrent shard rebalances are
|
Defines the number of concurrent shard rebalances are allowed across the whole
|
||||||
allowed cluster wide. Defaults to `2`. Note that this setting
|
cluster. Defaults to `2`. Note that this setting only controls the number of
|
||||||
only controls the number of concurrent shard relocations due
|
concurrent shard relocations due to imbalances in the cluster. This setting does
|
||||||
to imbalances in the cluster. This setting does not limit shard
|
not limit shard relocations due to
|
||||||
relocations due to <<cluster-shard-allocation-filtering,allocation
|
<<cluster-shard-allocation-filtering,allocation filtering>> or
|
||||||
filtering>> or <<forced-awareness,forced awareness>>.
|
<<forced-awareness,forced awareness>>.
|
||||||
|
|
||||||
|
`cluster.routing.allocation.type`::
|
||||||
|
+
|
||||||
|
--
|
||||||
|
Selects the algorithm used for computing the cluster balance. Defaults to
|
||||||
|
`desired_balance` which selects the _desired balance allocator_. This allocator
|
||||||
|
runs a background task which computes the desired balance of shards in the
|
||||||
|
cluster. Once this background task completes, {es} moves shards to their
|
||||||
|
desired locations.
|
||||||
|
|
||||||
|
May also be set to `balanced` to select the legacy _balanced allocator_. This
|
||||||
|
allocator was the default allocator in versions of {es} before 8.6.0. It runs
|
||||||
|
in the foreground, preventing the master from doing other work in parallel. It
|
||||||
|
works by selecting a small number of shard movements which immediately improve
|
||||||
|
the balance of the cluster, and when those shard movements complete it runs
|
||||||
|
again and selects another few shards to move. Since this allocator makes its
|
||||||
|
decisions based only on the current state of the cluster, it will sometimes
|
||||||
|
move a shard several times while balancing the cluster.
|
||||||
|
--
|
||||||
|
|
||||||
[[shards-rebalancing-heuristics]]
|
[[shards-rebalancing-heuristics]]
|
||||||
==== Shard balancing heuristics settings
|
==== Shard balancing heuristics settings
|
||||||
|
@ -114,28 +133,55 @@ of shards, and then moving shards between nodes to reduce the weight of the
|
||||||
heavier nodes and increase the weight of the lighter ones. The cluster is
|
heavier nodes and increase the weight of the lighter ones. The cluster is
|
||||||
balanced when there is no possible shard movement that can bring the weight of
|
balanced when there is no possible shard movement that can bring the weight of
|
||||||
any node closer to the weight of any other node by more than a configurable
|
any node closer to the weight of any other node by more than a configurable
|
||||||
threshold. The following settings allow you to control the details of these
|
threshold.
|
||||||
calculations.
|
|
||||||
|
The weight of a node depends on the number of shards it holds and on the total
|
||||||
|
estimated resource usage of those shards expressed in terms of the size of the
|
||||||
|
shard on disk and the number of threads needed to support write traffic to the
|
||||||
|
shard. {es} estimates the resource usage of shards belonging to data streams
|
||||||
|
when they are created by a rollover. The estimated disk size of the new shard
|
||||||
|
is the mean size of the other shards in the data stream. The estimated write
|
||||||
|
load of the new shard is a weighted average of the actual write loads of recent
|
||||||
|
shards in the data stream. Shards that do not belong to the write index of a
|
||||||
|
data stream have an estimated write load of zero.
|
||||||
|
|
||||||
|
The following settings control how {es} combines these values into an overall
|
||||||
|
measure of each node's weight.
|
||||||
|
|
||||||
`cluster.routing.allocation.balance.shard`::
|
`cluster.routing.allocation.balance.shard`::
|
||||||
(<<dynamic-cluster-setting,Dynamic>>)
|
(float, <<dynamic-cluster-setting,Dynamic>>)
|
||||||
Defines the weight factor for the total number of shards allocated on a node
|
Defines the weight factor for the total number of shards allocated to each node.
|
||||||
(float). Defaults to `0.45f`. Raising this raises the tendency to
|
Defaults to `0.45f`. Raising this value increases the tendency of {es} to
|
||||||
equalize the number of shards across all nodes in the cluster.
|
equalize the total number of shards across nodes ahead of the other balancing
|
||||||
|
variables.
|
||||||
|
|
||||||
`cluster.routing.allocation.balance.index`::
|
`cluster.routing.allocation.balance.index`::
|
||||||
(<<dynamic-cluster-setting,Dynamic>>)
|
(float, <<dynamic-cluster-setting,Dynamic>>)
|
||||||
Defines the weight factor for the number of shards per index allocated
|
Defines the weight factor for the number of shards per index allocated to each
|
||||||
on a specific node (float). Defaults to `0.55f`. Raising this raises the
|
node. Defaults to `0.55f`. Raising this value increases the tendency of {es} to
|
||||||
tendency to equalize the number of shards per index across all nodes in
|
equalize the number of shards of each index across nodes ahead of the other
|
||||||
the cluster.
|
balancing variables.
|
||||||
|
|
||||||
|
`cluster.routing.allocation.balance.disk_usage`::
|
||||||
|
(float, <<dynamic-cluster-setting,Dynamic>>)
|
||||||
|
Defines the weight factor for balancing shards according to their predicted disk
|
||||||
|
size in bytes. Defaults to `2e-11f`. Raising this value increases the tendency
|
||||||
|
of {es} to equalize the total disk usage across nodes ahead of the other
|
||||||
|
balancing variables.
|
||||||
|
|
||||||
|
`cluster.routing.allocation.balance.write_load`::
|
||||||
|
(float, <<dynamic-cluster-setting,Dynamic>>)
|
||||||
|
Defines the weight factor for the write load of each shard, in terms of the
|
||||||
|
estimated number of indexing threads needed by the shard. Defaults to `10.0f`.
|
||||||
|
Raising this value increases the tendency of {es} to equalize the total write
|
||||||
|
load across nodes ahead of the other balancing variables.
|
||||||
|
|
||||||
`cluster.routing.allocation.balance.threshold`::
|
`cluster.routing.allocation.balance.threshold`::
|
||||||
(<<dynamic-cluster-setting,Dynamic>>)
|
(float, <<dynamic-cluster-setting,Dynamic>>)
|
||||||
Minimal optimization value of operations that should be performed (non
|
The minimum improvement in weight which triggers a rebalancing shard movement.
|
||||||
negative float). Defaults to `1.0f`. Raising this will cause the cluster
|
Defaults to `1.0f`. Raising this value will cause {es} to stop rebalancing
|
||||||
to be less aggressive about optimizing the shard balance.
|
shards sooner, leaving the cluster in a more unbalanced state.
|
||||||
|
|
||||||
|
|
||||||
NOTE: Regardless of the result of the balancing algorithm, rebalancing might
|
NOTE: Regardless of the result of the balancing algorithm, rebalancing might
|
||||||
not be allowed due to forced awareness or allocation filtering.
|
not be allowed due to allocation rules such as forced awareness and allocation
|
||||||
|
filtering.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue