High availability#
Network → High availability, at /ha. One page with four tabs, because the two
halves of the subject are one subject: keeping traffic flowing when something fails.
More than one way out is the Uplinks tab; more than one router is VRRP and
Conntrack sync; CLI shows all of it as commands.
The old address /wan redirects here — ui/src/App.tsx.
The four tabs#
| Tab | Owns | Documented on |
|---|---|---|
| Uplinks | protocols failover, load-balancing wan, protocols static table, policy route, and the nat source rules that masquerade behind each uplink | Uplinks (multi-WAN) |
| VRRP | high-availability vrrp | VRRP |
| Conntrack sync | service conntrack-sync | Conntrack sync |
| CLI | nothing — it is a read | below |
The subtree shown beside the page title changes with the tab: the VRRP and Conntrack
tabs show high-availability · service conntrack-sync, the others show
protocols failover · load-balancing wan · policy route.
Deep links#
The tab is in the query string, so a tab can be linked to and a browser reload keeps
it: /ha?tab=vrrp, /ha?tab=conntrack, /ha?tab=cli. The Uplinks tab is the default
and clears the query rather than writing ?tab=uplinks.
The CLI tab#
Six configuration reads, concatenated into one block:
protocols failover
load-balancing wan
protocols static table
policy route
high-availability
service conntrack-syncEach is fetched with GET /api/config/commands?path=… and a path that is unset is
skipped rather than erroring, so the block holds only what exists. On a router with none
of them configured it reads # nothing configured under any of these: … followed by the
list.
This is the block to copy when you are building the second router of a pair: everything the pair needs, in the order the CLI accepts it, minus the parts that must differ between the two — the VRRP priority, and the addresses.
Everything here is a dangerous change#
Every configuration path these tabs write is matched by isDangerousPath:
protocols failover, protocols static table, load-balancing, policy route,
high-availability, nat, and anything containing address, dhcp-options or
default-route-distance. That means the Commit Bar offers commit-confirm and styles
the plain Commit as destructive for every change staged on this page —
ui/src/lib/format.ts.
The reason is the same for all of them: these settings decide which way packets leave the router, and your session is packets leaving the router. Commit-confirm uses VyOS' own mechanism, so the failure path is a reboot into the previous configuration — not a silent revert, and not a router you have to drive to.
What the agent does not do#
Three limits hold across the whole page and are repeated on the tab pages that they affect.
- The agent probes nothing. Every health verdict on this page is the router's own:
is the failover daemon's route in the forwarding table, what does
show wan-load-balancesay, what doesshow vrrpsay. Wheelhouse pings no targets and keeps no probe history. - It does not renumber or reorder anything. New rules take the next free number the page suggests; existing rules are left alone.
- It does not touch the firewall. A second uplink needs the same input policy as the first, and that is the Firewall page's job.
See also#
- Uplinks (multi-WAN) — the tab most people came here for.
- VRRP — two routers, one address.
- Conntrack sync — keeping flows alive across a failover.
- Static routes — the forwarding table these mechanisms compete to write.
- Addressing — the distances a DHCP or PPPoE client gives its own default route, which is where uplink ranking starts.
Checked against ui/src/pages/Ha.tsx,
ui/src/App.tsx,
ui/src/lib/format.ts,
docs/multi-wan.md, docs/ui.md.