Operations & Troubleshooting
Operations & Troubleshooting
This guide collects day-2 operations, common issues, and quick runbooks for Nexus GSLB.
Day-0/1 checklists
- Binary/service is installed and starts on boot (systemd or container orchestrator)
- Config file present at
/etc/gslb/config.yamland readable - Metrics endpoint exposed (optional) and scraped by Prometheus
- NATS connectivity (if enabled) confirmed; health policy chosen
- GitOps repo reachable, signatures verified (if enabled)
Operational commands
- Check service status (systemd):
systemctl status gslbd
journalctl -u gslbd -f
- Check metrics endpoint:
curl -s http://127.0.0.1:9090/metrics | head
- DNS sanity check:
dig @127.0.0.1 -p 5353 A gslb.local
Common issues and fixes
- No DNS answers returned
- Verify endpoints are valid IPs and reachable.
- Check health metrics:
gslbd_health_endpoints_total{family}and..._healthy{family}. - Confirm policy: with
prefer-local, global health won’t override local failures.
- GitOps changes not applied
- Check metrics
gslbd_gitops_*forresult="error". - Inspect logs for signature verification failure.
- Ensure
gitops.pathPrefixpoints to a directory containinggslbd.yaml(orindex.yaml). - Validate YAML locally using
yamllintand confirm against the Configuration Guide.
- NATS state sync inactive or flapping
- Check
gslbd_state_nats_connectedand reconnect logs. - Verify TLS cert paths and that NATS JetStream is enabled.
- Ensure clocks are synchronized (NTP) to avoid excessive merge lag.
- HTTPS health checks failing with certificate errors
- Ensure
health.http.tls: trueand the certificate matcheshealth.http.host(SNI/Host header). - Avoid
insecureSkipVerify: truein production; if required in lab, set it explicitly.
- Running on port 53
- Either run as root (not recommended) or grant capability:
sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/gslbd
- Then run as a non-root user.
Upgrades
- Stop the service, replace the binary, and start again.
- When using containers, roll out a new image gradually (blue/green or rolling update).
- Config changes via GitOps: use signed commits; test in a staging branch/cluster first.
Backup and restore
- GitOps: the Git repository is the source of truth—back it up using your standard VCS backups.
- NATS JetStream: snapshot metadata and streams per NATS documentation (primarily for diagnostics; the system functions without historical state).
- Config files: back up
/etc/gslb/config.yamlif not using GitOps.
Runbooks
- Incident: WAN partition / NATS down
- Expect fallback to local-only behavior (prefer-local policy). No manual action required to continue serving local health.
- Incident: all endpoints unhealthy
- Validate backend service; verify health path/port and firewall
rules; use
curlfrom the node to test HTTP checks.
- Validate backend service; verify health path/port and firewall
rules; use
- Rollback a bad config
- Revert with a signed Git commit; wait for the next poll (or restart
gslbdto force reconcile).
- Revert with a signed Git commit; wait for the next poll (or restart
Diagnostics
- Increase verbosity by running in foreground and inspecting logs.
- Export metrics to a local Prometheus and view trends for health and membership.