Skip to main content
In distributed systems that use the Raft consensus algorithm, servers can be configured either as voting members (voters) or as non-voting members (non-voters). This lesson explains the difference, how non-voting members behave, how to configure them, and when to use them for scaling reads and improving geographic locality without changing quorum behavior. Why this matters
  • Voting servers participate in leader election and are counted toward the Raft quorum.
  • Non-voting servers receive replicated state but do not affect quorum size or election outcomes.
  • Adding non-voting members lets you scale read capacity and distribute replicas (for example, zone- or region-local read replicas) without increasing the number of voters and changing fault-tolerance/election dynamics.
See Raft for background on leader election and quorum: https://raft.github.io/

How non-voting members work

Non-voting members replicate log entries and state like voting servers. However:
  • They do not count toward the Raft quorum.
  • They cannot be elected leader.
  • They do not improve the fault tolerance of elections (adding a non-voter does not increase the number of failures a cluster can tolerate for leader election).
  • The cluster’s peer listing will include non-voters and mark them as such, so you can verify their role from the peers output.
This model is commonly used in production with redundancy zones (regions/availability zones): keep a small, manageable set of voters for consensus, and place non-voting members in additional zones to provide read locality and extra replicas.

Configure a non-voting member

You can mark a server as non-voting in the agent configuration or via CLI flags when starting the agent. Example agent configuration (HCL):
Example CLI pattern (flag names may vary by product/version — consult your agent docs):
Refer to the Consul agent documentation for exact flag names and additional options: https://www.consul.io/docs/commands/agent

What changes when you add a non-voting member

Key behavioral changes:
  • Replication: the node receives log entries and state like other servers.
  • Quorum: it is not counted toward the Raft quorum.
  • Leadership: it cannot be elected leader.
  • Availability characteristics: cluster availability and election fault tolerance remain determined by the voting set only.
Illustrative peer listing example:

Quick comparison

When to use non-voting members

  • Read scalability: add replicas for read-heavy workloads without expanding the voting set.
  • Geographic locality: deploy non-voters in other regions or availability zones to reduce read latency for users in those locations.
  • Safety: increase replica count for durability and read throughput without raising the risk of split-brain from an oversized voter set.
  • Testing or audit replicas: keep read-only copies that mirror production state but don’t participate in elections.

Best practices

  • Keep the voting set small and predictable to reduce election latency and complexity.
  • Use non-voters for replicas that need only read access or geographical locality.
  • Monitor peers output and replication lag for non-voters to ensure they are healthy and up-to-date.
  • When changing voter membership, follow your product’s recommended procedures to avoid unsafe membership transitions.
Non-voting members are ideal for scaling reads and improving locality, but they do not increase quorum or election robustness. Limit voters to the nodes you want actively participating in consensus.

Watch Video