A couple of settings are required to put in place on each node to allocate them to an availability zone:
node.attr.availabilityzone: <zone name> cluster.routing.allocation.awareness.attributes: availabilityzone
This ensures that the replica shards do not end up in the same zone as their associated primary shards.
Elasticsearch documents include all the information related to shard allocation and high availability of large clusters, but are specific to Elasticsearch 7.17. See the below documents:
We also have the required settings in the node.attr.rack
setting, which is documented in the doc, Configuring Elasticsearch.