Skip to content

Commit

Permalink
docs: improve dynamic reloading
Browse files Browse the repository at this point in the history
  • Loading branch information
magiconair committed Jan 3, 2018
1 parent 5038fb6 commit 256dc58
Showing 1 changed file with 22 additions and 1 deletion.
23 changes: 22 additions & 1 deletion docs/content/feature/dynamic-reloading.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,25 @@ title: "Dynamic Reloading"
since: "1.0"
---

fabio watches services in consul and reloads its configuration on every change without interrupting existing connections.
fabio builds the routing table from the Consul service registrations, health
check status and the user provided `route` commands stored in the Consul KV
store. This is **the** core feature of fabio - the reason it exists.

The cluster wide state is stored in the Consul Raft log which provides a
consistent view of the available and healthy services in the cluster.

When the Raft log changes fabio is notified and downloads the list of
healthy services and the user defined routes from the KV store and re-builds
the routing table.

Once the new routing table has been built it is atomically swapped with the
active routing table without any service interruption. Existing connections
remain open and running requests are served even if the new routing table no
longer 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 the
Consul KV store all trigger an automatic reload of the fabio routing table for
all fabio nodes in the cluster.

This all happens automatically, with no downtime, or manual intervention.

0 comments on commit 256dc58

Please sign in to comment.