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.

Features include:

  • 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.com/fabiolb/fabio
Developer: Education Networks of America
License: MIT License

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

Return to Load Balancers


Popular series
Free and Open Source SoftwareThe largest compilation of the best free and open source software in the universe. Each article is supplied with a legendary ratings chart helping you to make informed decisions.
ReviewsHundreds of in-depth reviews offering our unbiased and expert opinion on software. We offer helpful and impartial information.
Alternatives to Proprietary SoftwareReplace proprietary software with open source alternatives: Google, Microsoft, Apple, Adobe, IBM, Autodesk, Oracle, Atlassian, Corel, Cisco, Intuit, and SAS.
GamesAwesome Free Linux Games Tools showcases a series of tools that making gaming on Linux a more pleasurable experience. This is a new series.
Artificial intelligence iconMachine Learning explores practical applications of machine learning and deep learning from a Linux perspective. We've written reviews of more than 40 self-hosted apps. All are free and open source.
Guide to LinuxNew to Linux? Read our Linux for Starters series. We start right at the basics and teach you everything you need to know to get started with Linux.
Alternatives to popular CLI tools showcases essential tools that are modern replacements for core Linux utilities.
System ToolsEssential Linux system tools focuses on small, indispensable utilities, useful for system administrators as well as regular users.
ProductivityLinux utilities to maximise your productivity. Small, indispensable tools, useful for anyone running a Linux machine.
AudioSurveys popular streaming services from a Linux perspective: Amazon Music Unlimited, Myuzi, Spotify, Deezer, Tidal.
Saving Money with LinuxSaving Money with Linux looks at how you can reduce your energy bills running Linux.
Home ComputersHome computers became commonplace in the 1980s. Emulate home computers including the Commodore 64, Amiga, Atari ST, ZX81, Amstrad CPC, and ZX Spectrum.
Now and ThenNow and Then examines how promising open source software fared over the years. It can be a bumpy ride.
Linux at HomeLinux at Home looks at a range of home activities where Linux can play its part, making the most of our time at home, keeping active and engaged.
Linux CandyLinux Candy reveals the lighter side of Linux. Have some fun and escape from the daily drudgery.
DockerGetting Started with Docker helps you master Docker, a set of platform as a service products that delivers software in packages called containers.
Android AppsBest Free Android Apps. We showcase free Android apps that are definitely worth downloading. There's a strict eligibility criteria for inclusion in this series.
Programming BooksThese best free books accelerate your learning of every programming language. Learn a new language today!
Programming TutorialsThese free tutorials offer the perfect tonic to our free programming books series.
Linux Around The WorldLinux Around The World showcases usergroups that are relevant to Linux enthusiasts. Great ways to meet up with fellow enthusiasts.
Stars and StripesStars and Stripes is an occasional series looking at the impact of Linux in the USA.
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Inline Feedbacks
View all comments