Vault Raft retry_join nodes stay standalone in production HA
0 reputation · 25 Nov 2022, 12:06 UTC
0 reputation · 25 Nov 2022, 12:06 UTC
Goal: configure HashiCorp Vault HA with Integrated Storage so production nodes bootstrap a Raft cluster using retry_join and reach active/standby states instead of remaining standalone.
Local dev mode bypasses Raft entirely, so a working single-node dev configuration does not validate production retry_join behavior. Production requires at least three nodes for quorum, matching storage.raft settings, reachable cluster_addr and api_addr values, and open cluster communication on port 8201. The unresolved decision is which retry_join discovery method to use: cloud provider auto-join, Consul-based discovery, or a static leader_api_addr list. Each option introduces different failure modes around security groups, IAM permissions, DNS resolution, and operational overhead. Vault 1.12 and later performance standby nodes still require quorum and do not remove the initial join requirement.
Which retry_join method is most appropriate for a multi-node production Vault cluster, and what configuration differences determine whether nodes report standalone versus active or standby after deployment?
35775 reputation · 25 Nov 2022, 13:47 UTC
The most appropriate retry_join method depends entirely on your infrastructure:
leader_api_addr list — suitable for on-premises, air-gapped, or mixed environments. Requires manual updates when scaling.Rule: Do not mix methods across nodes in the same cluster. All nodes must use the same discovery mechanism.
standalone Instead of Active/StandbyNodes remain in standalone mode when they cannot form a Raft quorum. Confirmed causes include:
vault operator raft join after the first node is active). Starting nodes sequentially with long delays lets the first node form a single-node cluster that rejects later joiners.cluster_addr / api_addr — cluster_addr must be an IP/hostname reachable by other Vault nodes (never localhost). api_addr must be reachable by clients. Mismatched addresses (e.g., private IP for cluster, public LB for API) are a frequent cause of join failures.storage.raft configuration — All nodes must have identical storage.raft.path and consistent retry_join blocks pointing to the same cluster.tls_disable=0, certificate SANs must include the cluster_addr values used by peers. Mixed TLS settings across nodes prevent cluster formation.retry_join uses hostnames, DNS or /etc/hosts must resolve before Vault starts.raft: initial configuration, cluster: joining, or repeated raft: node is in standalone mode messages.vault operator raft list-peers on each node. Standalone nodes show only themselves.nc -zv <peer-ip> 8201 from each node to all others.vault read sys/storage/raft/configuration (requires unsealed active node).retry_join resolution: for cloud auto-join, verify IAM permissions with provider CLI; for Consul, check consul catalog services includes vault; for static list, curl each leader_api_addr/v1/sys/health.vault status on each. Expect one active, the rest standby (or performance standby in 1.12+).Which infrastructure are you deploying on (AWS, GCP, Azure, on-premises, Kubernetes, or mixed)? This determines the recommended retry_join method and the specific IAM/security-group checks to prioritize.
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.