Class AwarenessAllocationDecider

java.lang.Object
org.elasticsearch.cluster.routing.allocation.decider.AllocationDecider
org.elasticsearch.cluster.routing.allocation.decider.AwarenessAllocationDecider

public class AwarenessAllocationDecider extends AllocationDecider
This AllocationDecider controls shard allocation based on awareness key-value pairs defined in the node configuration. Awareness explicitly controls where replicas should be allocated based on attributes like node or physical rack locations. Awareness attributes accept arbitrary configuration keys like a rack data-center identifier. For example the setting:
 cluster.routing.allocation.awareness.attributes: rack_id
 

will cause allocations to be distributed over different racks such that ideally at least one replicas of the all shard is available on the same rack. To enable allocation awareness in this example nodes should contain a value for the rack_id key like:

 node.attr.rack_id:1
 

Awareness can also be used to prevent over-allocation in the case of node or even "zone" failure. For example in cloud-computing infrastructures like Amazon AWS a cluster might span over multiple "zones". Awareness can be used to distribute replicas to individual zones by setting:

 cluster.routing.allocation.awareness.attributes: zone
 

and forcing allocation to be aware of the following zone the data resides in:

 cluster.routing.allocation.awareness.force.zone.values: zone1,zone2
 

In contrast to regular awareness this setting will prevent over-allocation on zone1 even if zone2 fails partially or becomes entirely unavailable. Nodes that belong to a certain zone / group should be started with the zone id configured on the node-level settings like:

 node.zone: zone1