From 9d9f23ca96e03a53f0447a8564bdb0f9519e2df5 Mon Sep 17 00:00:00 2001 From: shainaraskas <58563081+shainaraskas@users.noreply.github.com> Date: Wed, 8 May 2024 12:52:50 -0400 Subject: [PATCH] [DOCS] Add API example + diagrams to shard allocation awareness docs (#108390) --- .../high-availability/cluster-design.asciidoc | 18 ++++----- .../shard-allocation-awareness-one-rack.png | Bin 0 -> 25565 bytes .../shard-allocation-awareness-two-racks.png | Bin 0 -> 43058 bytes .../cluster/allocation_awareness.asciidoc | 37 ++++++++++++++---- 4 files changed, 38 insertions(+), 17 deletions(-) create mode 100644 docs/reference/images/shard-allocation/shard-allocation-awareness-one-rack.png create mode 100644 docs/reference/images/shard-allocation/shard-allocation-awareness-two-racks.png diff --git a/docs/reference/high-availability/cluster-design.asciidoc b/docs/reference/high-availability/cluster-design.asciidoc index 3f8e19b47d37..6c17a494f36a 100644 --- a/docs/reference/high-availability/cluster-design.asciidoc +++ b/docs/reference/high-availability/cluster-design.asciidoc @@ -7,14 +7,14 @@ nodes to take over their responsibilities, an {es} cluster can continue operating normally if some of its nodes are unavailable or disconnected. There is a limit to how small a resilient cluster can be. All {es} clusters -require: +require the following components to function: -- One <> node -- At least one node for each <>. -- At least one copy of every <>. +- One <> +- At least one node for each <> +- At least one copy of every <> A resilient cluster requires redundancy for every required cluster component. -This means a resilient cluster must have: +This means a resilient cluster must have the following components: - At least three master-eligible nodes - At least two nodes of each role @@ -375,11 +375,11 @@ The cluster will be resilient to the loss of any zone as long as: - There are at least two zones containing data nodes. - Every index that is not a <> has at least one replica of each shard, in addition to the primary. -- Shard allocation awareness is configured to avoid concentrating all copies of - a shard within a single zone. +- <> is configured to + avoid concentrating all copies of a shard within a single zone. - The cluster has at least three master-eligible nodes. At least two of these - nodes are not voting-only master-eligible nodes, and they are spread evenly - across at least three zones. + nodes are not <>, + and they are spread evenly across at least three zones. - Clients are configured to send their requests to nodes in more than one zone or are configured to use a load balancer that balances the requests across an appropriate set of nodes. The {ess-trial}[Elastic Cloud] service provides such diff --git a/docs/reference/images/shard-allocation/shard-allocation-awareness-one-rack.png b/docs/reference/images/shard-allocation/shard-allocation-awareness-one-rack.png new file mode 100644 index 0000000000000000000000000000000000000000..d5a3040cc5343ea6e169e51bf9b6d2924f4e238a GIT binary patch literal 25565 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 literal 0 HcmV?d00001 diff --git a/docs/reference/images/shard-allocation/shard-allocation-awareness-two-racks.png b/docs/reference/images/shard-allocation/shard-allocation-awareness-two-racks.png new file mode 100644 index 0000000000000000000000000000000000000000..ce2ce6b2a95e9542ab3d8bf1ce6e0f51a8dca4d5 GIT binary patch literal 43058 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 @@ -19,22 +19,27 @@ allocated in each location. If the number of nodes in each location is unbalanced and there are a lot of replicas, replica shards might be left unassigned. +TIP: Learn more about <>. + [[enabling-awareness]] ===== Enabling shard allocation awareness To enable shard allocation awareness: -. Specify the location of each node with a custom node attribute. For example, -if you want Elasticsearch to distribute shards across different racks, you might -set an awareness attribute called `rack_id` in each node's `elasticsearch.yml` -config file. +. Specify the location of each node with a custom node attribute. For example, +if you want Elasticsearch to distribute shards across different racks, you might +use an awareness attribute called `rack_id`. ++ +You can set custom attributes in two ways: + +- By editing the `elasticsearch.yml` config file: + [source,yaml] -------------------------------------------------------- node.attr.rack_id: rack_one -------------------------------------------------------- + -You can also set custom attributes when you start a node: +- Using the `-E` command line argument when you start a node: + [source,sh] -------------------------------------------------------- @@ -56,17 +61,33 @@ cluster.routing.allocation.awareness.attributes: rack_id <1> + You can also use the <> API to set or update -a cluster's awareness attributes. +a cluster's awareness attributes: ++ +[source,console] +-------------------------------------------------- +PUT /_cluster/settings +{ + "persistent" : { + "cluster.routing.allocation.awareness.attributes" : "rack_id" + } +} +-------------------------------------------------- With this example configuration, if you start two nodes with `node.attr.rack_id` set to `rack_one` and create an index with 5 primary shards and 1 replica of each primary, all primaries and replicas are -allocated across the two nodes. +allocated across the two node. + +.All primaries and replicas allocated across two nodes in the same rack +image::images/shard-allocation/shard-allocation-awareness-one-rack.png[All primaries and replicas are allocated across two nodes in the same rack] If you add two nodes with `node.attr.rack_id` set to `rack_two`, {es} moves shards to the new nodes, ensuring (if possible) that no two copies of the same shard are in the same rack. +.Primaries and replicas allocated across four nodes in two racks, with no two copies of the same shard in the same rack +image::images/shard-allocation/shard-allocation-awareness-two-racks.png[Primaries and replicas are allocated across four nodes in two racks with no two copies of the same shard in the same rack] + If `rack_two` fails and takes down both its nodes, by default {es} allocates the lost shard copies to nodes in `rack_one`. To prevent multiple copies of a particular shard from being allocated in the same location, you can