- Quickstart
- Features
- Access Control
- Access Logging
- Authorization
- BGP
- Certificate Stores
- Docker Support
- Dynamic Reloading
- Graceful Shutdown
- GRPC Proxy
- HTTP Compression
- HTTP Header Support
- HTTP Path Prepending
- HTTP Path Stripping
- HTTP Redirects
- HTTPS TCP-SNI Proxy
- HTTPS Upstream
- Metrics
- PROXY Protocol Support
- Server Sent Events (SSE)
- TCP Dynamic Proxy
- TCP Proxy
- TCP-SNI Proxy
- Traffic Shaping
- Vault Support
- Web UI
- Websockets
- Deployment
- Config Language
- Reference
- FAQ
- Contributing
- Code of Conduct
- Contact
Dynamic Reloading
fabio builds the routing table from the Consul service registrations, healthcheck status and the user providedroute
commands stored in the Consul KVstore. This isthe core feature of fabio - the reason it exists.
The cluster wide state is stored in the Consul Raft log which provides aconsistent view of the available and healthy services in the cluster.
When the Raft log changes fabio is notified and downloads the list ofhealthy services and the user defined routes from the KV store and re-buildsthe routing table.
Once the new routing table has been built it is atomically swapped with theactive routing table without any service interruption. Existing connectionsremain open and running requests are served even if the new routing table nolonger contains that route.
Registering or de-registering a service, setting a node to maintenance mode,failing or passing of a health check for a service, or writing data into theConsul KV store all trigger an automatic reload of the fabio routing table forall fabio nodes in the cluster.
This all happens automatically, with no downtime, or manual intervention.