Operate

Production operations

Treat the YAML, certificates, secret files, and service unit as one release. Validate the exact artifact, make changes atomically, and choose reload or restart deliberately.

Install and start

# Install the compiled binary and a reviewed configuration.
sudo install -m 0755 target/release/omlb /usr/local/bin/omlb
sudo install -d -o omlb -g omlb -m 0750 /etc/omlb /var/lib/omlb
sudo install -o root -g omlb -m 0640 omlb.yaml /etc/omlb/omlb.yaml

# Validate with the same service account and paths used in production.
sudo -u omlb /usr/local/bin/omlb --check --config /etc/omlb/omlb.yaml

# Review and install the repository's unit, then start it.
sudo install -m 0644 examples/systemd/omlb.service /etc/systemd/system/omlb.service
sudo systemctl daemon-reload
sudo systemctl enable --now omlb

The repository ships a systemd unit under examples/systemd/. Review it for your host before installation. Its hardening and capabilities may need adjustment for certificate locations, plugins, or HA. Nodes without HA should not retain HA-specific network capabilities.

Change management

# Hot route/plugin/retry/timeout change: stage a complete candidate
# beside the live file, validate it, then atomically rename it into place.
sudo install -o root -g omlb -m 0640 ./omlb.yaml.next /etc/omlb/omlb.yaml.next
sudo -u omlb /usr/local/bin/omlb --check --config /etc/omlb/omlb.yaml.next
sudo mv -f /etc/omlb/omlb.yaml.next /etc/omlb/omlb.yaml

# Bootstrap-only change (listeners, pools/backends, TLS, L4, HA, endpoints,
# security, server or log settings): use a graceful service restart instead.
sudo systemctl restart omlb

The built-in watcher detects ordinary and atomic file changes. A manual POST /reload to the local admin API is also available, but it cannot bypass the reload boundary. Failed parses, validation failures, and bootstrap-only changes are rejected and leave the running configuration in place.

Keep the prior validated file and the prior binary available. For a TLS change, verify certificate and key ownership on the host. For an HA change, schedule and test it as a coordinated two-node change; do not expect a file watcher to reconfigure VIP behavior live.

Health, alerting, and incidents

# Is OMLB up and is its control plane reachable locally?
systemctl status omlb
curl -fsS http://127.0.0.1:9090/healthz
curl -sS http://127.0.0.1:9090/status
curl -sS http://127.0.0.1:9091/metrics

# Follow structured journal records when log_format: journald is configured.
journalctl -u omlb -f
journalctl -u omlb -p warning..alert

Alert on process availability, listener reachability, upstream error and ejection activity, configuration reload failures, and the rate of 5xx responses. During a backend incident, drain one known backend through the local admin API, observe new traffic move away, then perform maintenance. Do not use a restart to hide a configuration validation failure—read the logged validation errors and correct the candidate file.

Backup and recovery

  • Back up the reviewed base YAML, Web UI overlay if used, ACME cache directory, static certificates/keys, token files, plugin artifacts, and the exact binary version.
  • Keep secret backups encrypted and restore owner and mode before starting the service.
  • Practice restoring a node with the public listener disabled first; validate the config, check control-plane endpoints locally, then admit client traffic.
  • Document the client-visible DNS and VIP recovery path separately from OMLB; the proxy cannot repair a host, L2, DNS, or certificate authority outage.