Skip to main content

Appliance Commands

The members keep working without the control plane, so the appliance has its own view of the pair and its own controls. Use them when the controller is unreachable, or to see the boxes' live state (the UI lags by a few seconds).

Elchi OS console​

show ha​

Shows this box and its peer side by side:

HA pair edge-ha (config rev 7)

THIS BOX (ha-a) PEER (ha-b)
role ACTIVE epoch 12 STANDBY epoch 12
since 3m0s ago
heartbeat — data ✓ 0.2s ago mgmt ✓ 0.2s ago
data plane — unknown
OS / elchi-ha 0.7.0 / v1.7.120 0.7.0 / v1.7.120
takeover — peer ready to take over
maintenance no
reason planned failover

VIPs
172.31.1.45 ha-svc-10045 present healthy ready holder=self

Next-hops (floating gateway addresses)
172.31.2.40 present ready holder=self

gateway reachable · fencing on · clock skew 3ms
alarms: none

The example is abridged; values are illustrative. A suspended member adds a SUSPENDED: line, alarms are listed as ALARM <key>: <text>, and a member that is not in a pair prints "this appliance is not a member of an HA pair".

show ha json prints the same as JSON ({paired, stale, status}). The screen warns when the daemon's state is older than 3 seconds. The status screen has an HA: line, and show health reports the daemon not running, misconfiguration, a key mismatch or a VIP conflict as critical, and fenced, maintenance, peer not heard, peer not ready, version skew and every other alarm as warnings.

system ha …​

CommandWhat it does
system ha failoverPlanned failover. Shows the pre-check, asks for confirmation and for the hostname to be typed. From the standby it asks the active to hand over.
system ha maintenance on / offMaintenance mode for this box (asks to confirm on).
system ha resend-garpActive only: announce the held VIPs again with gratuitous ARP — useful after a switch or router lost its ARP entries.
system ha clearClear a flap suspension.
system ha start-aloneSkip the boot-time wait for a peer that has never been seen (60 s) and serve alone.

Reboot and shutdown from the console run a planned handover first. Network changes applied on a pair member show a warning, because they can affect the heartbeat paths and the VIP subnets.

elchi-client ha​

The same controls are available as a CLI (root, or the elchi user):

elchi-client ha status [--json]
elchi-client ha failover [--force]
elchi-client ha maintenance on|off [--force]
elchi-client ha prepare-shutdown [--wait 5s]
elchi-client ha resend-garp
elchi-client ha clear
elchi-client ha start-alone
elchi-client ha reload
elchi-client ha unconfigure

--timeout (default 5 s) applies to resend-garp, clear, start-alone, reload and unconfigure; prepare-shutdown waits up to --wait. A command the daemon refuses exits non-zero with the reason, except prepare-shutdown, which never fails. elchi-client status includes a one-line HA summary.

ha status prints the pair, role and epoch, the reason, the peer (with ready to take over or not ready: …), each heartbeat path, gateway and fencing, every VIP with present / healthy / held / ready / holder, and any alarms.

Listener health holds​

The VIP health gate still protects pair listeners: an Envoy that crash-loops is held (for 15 minutes) and the pair hands its VIP to the standby. After fixing the cause, release the hold with:

elchi-client vip resume <admin-port>

On the appliance console the same is system listener resume <listener>.

The elchi-ha service​

ItemValue
Unitelchi-ha.service (runs elchi-client ha as the elchi user with CAP_NET_ADMIN and CAP_NET_RAW; Restart=always, systemd watchdog 5 s)
Active only on a pair memberThe unit starts only when /var/lib/elchi/ha/pair.json exists.
Logsjournalctl -u elchi-ha
Pair configuration/var/lib/elchi/ha/pair.json (written by the agent from the controller's configuration; the previous copy is kept as pair.json.prev)
Live state/run/elchi-ha/status.json (rewritten every second)
Role file/var/lib/elchi/state/ha-role — read by the listener units; a role from an earlier boot never brings a VIP up
Control socket/run/elchi-ha/ha.sock
FirewallTable inet elchi_ha (standby egress drop) and the appliance's ha_guard chain for UDP 8650

Restarting elchi-ha on the active member keeps its role and VIPs. Stopping it sends a goodbye to the peer, which holds off for 3 seconds before deciding anything.

Support bundle​

The appliance's support bundle has an ha/ section: elchi-ha journals for this and the previous boot, status.json, the role and pair markers, pair.json with secrets redacted, the elchi_ha firewall table, the ARP kernel settings and the interface addresses. Attach it to any HA support request.

Troubleshooting​

SymptomCheck
The member never becomes active, peer says not readyshow ha alarms: Misconfigured (kernel ARP settings), Gateway unreachable, Suspended, Heartbeat key mismatch.
Heartbeat key mismatchPush config from the HA Pairs page. A replaced member that came back keeps this alarm by design.
One heartbeat path downUDP 8650 between the two addresses of that path; NIC and addressing on both boxes.
Clients still reach the old box after a failoverThe switch or router kept a stale ARP entry: system ha resend-garp, and check that GARP is accepted on that network.
VIP unreachable from some hosts after adding a NICRestart the agent so the pair learns the new addresses; check the VIP is on a subnet both members have.
Long outage on power loss with BGPEnable BFD on the members' neighbours, or lower the BGP timers.
Suspended after testingWait 10 quiet minutes or run system ha clear.