Skip to main content
Version: 22.3

Rack awareness

When you create a topic, you specify the number of partitions for the topic and the number of partition replicas. Redpanda software determines where to place the replicas on the cluster such that each replica is on a different node, if possible.

By defining different racks for a cluster, you can specify a preference for the way partition replicas are assigned to nodes. A rack is basically a failure zone, with one or more nodes assigned to it. When the Redpanda software places partition replicas, it takes into account whether a replica has already been placed on a node in a particular rack. If so, the software chooses a node in a different rack. This way, partition replicas are distributed across different failure zones, which provides a measure of fault tolerance in the event that a node or an entire rack becomes unavailable.

When rack awareness is enabled, the Redpanda software places replicas according to these criteria:

  • Number of racks vs. replicas - If the cluster has more racks than the number of replicas, each replica is placed on a node in a unique rack. If the cluster has fewer racks than the number of replicas, some replicas are placed on nodes in the same rack.
  • Number of available CPU cores - Nodes with more available CPU cores are chosen over nodes with fewer available CPU cores.
  • Node utilization - Nodes with fewer partitions are chosen over nodes with more partitions.
tip

Use Continuous Data Balancing to continually maintain the configured replication level, even after infrastructure failure. For a given partition, Redpanda tries to move excess replicas from racks that have more than one replica to racks where there are none.

Setting up rack awareness

The instructions in this section are based on a cluster with five nodes and three failure zones. The failure zones, or racks, are identified as A, B, and C. The nodes are assigned to the three racks as shown:

NodeRack
1A
2A
3B
4C
5C

To set up rack awareness for this cluster:

  1. Open a terminal window and log in to node 1 on the cluster.
  2. Run rpk cluster config edit.
  3. In the text editor window that opens, set enable_rack_awareness to true.
  4. Save your change and quit the editor.
  5. Go to the /etc/redpanda directory.
  6. Open the redpanda.yaml file for editing.
  7. In the redpanda section, add the rack property and set the value to A as shown:
    rack: "A"
  8. Log in to the remaining nodes and edit their redpanda.yaml files. For node 2, set rack to A. For node 3, set rack to B. For nodes 4 and 5, set rack to C.
  9. Restart each node in the cluster for the rack assignments to take effect.