Reliability
Cerbos Hub is designed for high availability. All PDPs continue to operate independently even when Cerbos Hub experiences disruptions.
Push-based updates
When a PDP connects to Cerbos Hub, it establishes a two-way communication channel used to receive the initial policy bundle and subsequent update notifications. Because there is no polling, all PDPs converge on the same policy version within seconds of a change.
Disconnection handling
If Cerbos Hub becomes temporarily unavailable:
| Running PDPs |
Continue serving requests using the last downloaded bundle while attempting to reconnect in the background. Authorization decisions are unaffected. |
| New PDPs |
Can start with the last successfully built bundle, served from a separate high-availability fallback service. |
Local bundle caching
For additional resilience, configure a cache directory to persist bundles to disk:
storage:
driver: hub
hub:
remote:
deploymentID: "..."
cacheDir: /var/cerbos/hub # Directory to cache downloaded bundles
Mount a persistent volume at this path when running in containers or Kubernetes. Cached bundles allow PDPs to restart without network access to Cerbos Hub.
Offline mode
In disaster recovery scenarios, start the PDP with only the cached bundle:
docker run --rm --name cerbos \
-p 3592:3592 -p 3593:3593 \
-e CERBOS_HUB_OFFLINE=true \
-v /var/cerbos/hub:/var/cerbos/hub \
ghcr.io/cerbos/cerbos:latest server --config=/conf/.cerbos.yaml
The PDP loads the cached bundle and serves requests without connecting to Cerbos Hub.
Fallback to git
As a last resort, switch the PDP to read policies directly from your Git repository:
storage:
driver: git
git:
protocol: https
url: https://github.com/your-org/policies.git
branch: main
checkoutDir: /tmp/cerbos/policies
updatePollInterval: 60s
This bypasses Cerbos Hub entirely, though you lose pre-compilation, testing, and centralized management.
Monitoring connectivity
Monitor PDP connectivity using the cerbos_dev_hub_connected Prometheus metric:
1
|
PDP is connected to Cerbos Hub |
0
|
PDP is disconnected (using cached bundle) |
Additional metrics for bundle operations:
cerbos_dev_store_bundle_updates_count
|
Number of bundle updates received from Cerbos Hub |
cerbos_dev_store_bundle_op_latency
|
Time to perform bundle operations |
cerbos_dev_store_bundle_fetch_errors_count
|
Count of errors during bundle downloads |
See Observability for the full list of available metrics.