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.yaml and 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

  1. 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.
  1. GitOps changes not applied
  • Check metrics gslbd_gitops_* for result="error".
  • Inspect logs for signature verification failure.
  • Ensure gitops.pathPrefix points to a directory containing gslbd.yaml (or index.yaml).
  • Validate YAML locally using yamllint and confirm against the Configuration Guide.
  1. NATS state sync inactive or flapping
  • Check gslbd_state_nats_connected and reconnect logs.
  • Verify TLS cert paths and that NATS JetStream is enabled.
  • Ensure clocks are synchronized (NTP) to avoid excessive merge lag.
  1. HTTPS health checks failing with certificate errors
  • Ensure health.http.tls: true and the certificate matches health.http.host (SNI/Host header).
  • Avoid insecureSkipVerify: true in production; if required in lab, set it explicitly.
  1. 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.yaml if 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 curl from the node to test HTTP checks.
  • Rollback a bad config
    • Revert with a signed Git commit; wait for the next poll (or restart gslbd to force reconcile).

Diagnostics

  • Increase verbosity by running in foreground and inspecting logs.
  • Export metrics to a local Prometheus and view trends for health and membership.

Was this article helpful?
© 2026