Load Balancing

fabio – fast, modern, zero-conf load balancing HTTP(S) and TCP router

Fabio is a fast, modern, zero-conf load balancing HTTP(S) and TCP router for deploying applications managed by Consul.

Traditional load balancers and reverse proxies need to be configured with a config file. The configuration contains the hostnames and paths the proxy is forwarding to upstream services. This process can be automated with tools like consul-template that generate config files and trigger a reload.

Fabio works differently since it updates its routing table directly from the data stored in Consul as soon as there is a change and without restart or reloading.

The main use-case for fabio is to distribute incoming HTTP(S) and TCP requests from the internet to frontend (FE) services which can handle these requests. In this scenario the FE services then use the service discovery feature in Consul to find backend (BE) services they need in order to serve the request.

Key Features

  • Access Logging – customizable access logs.
  • Access Control – route specific access control.
  • Certificate Stores – dynamic certificate stores like file system, HTTP server, Consul and Vault.
  • Compression – GZIP compression for HTTP responses.
  • Docker Support – Official Docker image, Registrator and Docker Compose example.
  • Dynamic Reloading – hot reloading of the routing table without downtime. 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.
  • Graceful Shutdown – wait until requests have completed before shutting down.
  • HTTP Header Support – inject some HTTP headers into upstream requests.
  • HTTPS Upstreams – forward requests to HTTPS upstream servers. The current implementation requires that upstream certificates need to be in the system root CA list.
  • Metrics Support – support for Graphite, StatsD/DataDog and Circonus.
  • PROXY Protocol Support – support for HA Proxy PROXY protocol for inbound requests (use for Amazon ELB).
  • Path Stripping – strip prefix paths from incoming requests.
  • Server-Sent Events/SSE – support for Server-Sent Events/SSE. fabio detects SSE connections if the Accept header is set to text/event-stream and enables automatic flushing of the response buffer to forward data to the client.
  • TCP Proxy Support – raw TCP proxy support. fabio can run a transparent TCP proxy which dynamically forwards an incoming connection on a given port to services which advertise that port.
  • TCP-SNI Proxy Support – forward TLS connections based on hostname without re-encryption. fabio can run a transparent TCP proxy with SNI support which can forward any TLS connection without re-encrypting the traffic.
  • HTTPS TCP-SNI Proxy Support – forward TLS connections based on hostname without re-encryption, or fallback to fabio terminating TLS and path routing as a fallback.
  • Traffic Shaping – forward N% of traffic upstream without knowing the number of instances.
  • Web UI – web ui to examine the current routing table. By default it listens on http://0.0.0.0:9998/.
  • Websocket Support – fabio transparently supports Websocket connections by detecting the Upgrade: websocket header in the incoming HTTP(S) request.

Website: fabiolb.net
Support: GitHub Code Repository
Developer: Education Networks of America
License: MIT License

fabio is written in Go. Learn Go with our recommended free books and free tutorials.


Related Software

Load Balancers
TraefikModern HTTP reverse proxy and load balancer
HAProxyHigh availability layer 7 load balancer and proxy server for TCP and HTTP
CiliumeBPF-based Networking, Observability, Security
nginxIncludes a L7 load balancer
RoadRunnerHigh-performance PHP application server, load balancer, and process manager
fabioFast, modern, zero-conf load balancing HTTP(S) and TCP router
BFEModern L7 load balancer
gobetweenModern and minimalistic L4 load balancer and reverse-proxy
SeesawLinux Virtual Server (LVS) based load balancing platform. L4 load balancer
nusterHigh-performance HTTP proxy cache server and HTTP/TCP load balancer
GLB DirectorSet of stateless L4 load balancer servers
BalanceGeneric TCP proxy with round robin load balancing and failover capabilities

Read our verdict in the software roundup.


Best Free and Open Source Software Explore our comprehensive directory of recommended free and open source software. Our carefully curated collection spans every major software category.

This directory is part of our ongoing series of informative articles for Linux enthusiasts. It features hundreds of detailed reviews, along with open source alternatives to proprietary solutions from major corporations such as Google, Microsoft, Apple, Adobe, IBM, Cisco, Oracle, and Autodesk.

You’ll also find interesting projects to try, hardware coverage, free programming books and tutorials, and much more.

Know a useful open source Linux program that we haven’t covered yet? Let us know by completing this form.
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments