Sign inSign up

pashinin/fabio

By pashinin

•Updated over 7 years ago

Image
0

221

pashinin/fabio repository overview

Release License MIT Codeship CI Status Downloads Docker Pulls magiconair Docker Pulls fabiolb Backers on Open Collective Sponsors on Open Collective


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

Register your services in consul, provide a health check and fabio will start routing traffic to them. No configuration required. Deployment, upgrading and refactoring has never been easier.

fabio is developed and maintained by Frank Schroeder⁠.

It powers some of the largest websites in The Netherlands (marktplaats.nl⁠), Australia (gumtree.com.au⁠) and Italy (www.kijiji.it⁠). It delivers 23.000 req/sec every day since Sep 2015 without problems.

It integrates with Consul⁠, Vault⁠, Amazon ELB⁠, Amazon API Gateway⁠ and more.

It supports (Full feature list⁠)

Watch⁠ Kelsey Hightower demo Consul, Nomad, Vault and fabio at HashiConf EU 2016.

The full documentation is on fabiolb.net⁠

⁠Getting started

  1. Install from source, binary⁠, Docker⁠ or Homebrew⁠.

    # go 1.9 or higher is required
    go get github.com/fabiolb/fabio                     (>= go1.9)
    
    brew install fabio                                  (OSX/macOS stable)
    brew install --devel fabio                          (OSX/macOS devel)
    
    docker pull fabiolb/fabio                           (Docker)
    
    https://github.com/fabiolb/fabio/releases           (pre-built binaries)
    
  2. Register your service in consul⁠.

    Make sure that each instance registers with a unique ServiceID and a service name without spaces.

  3. Register a health check in consul as described here⁠.

    By default fabio only watches services which have a passing health check, unless overriden with registry.consul.service.status⁠.

  4. Register one urlprefix- tag per host/path prefix it serves, e.g.:

# HTTP/S examples
urlprefix-/css                                     # path route
urlprefix-i.com/static                             # host specific path route
urlprefix-mysite.com/                              # host specific catch all route
urlprefix-/foo/bar strip=/foo                      # path stripping (forward '/bar' to upstream)
urlprefix-/foo/bar proto=https                     # HTTPS upstream
urlprefix-/foo/bar proto=https tlsskipverify=true  # HTTPS upstream and self-signed cert

# TCP examples
urlprefix-:3306 proto=tcp                          # route external port 3306

Make sure the prefix for HTTP routes contains at least one slash (/).

See the full list of options in the Documentation⁠.

  1. Start fabio without a config file (assuming a running consul agent on localhost:8500) Watch the log output how fabio picks up the route to your service. Try starting/stopping your service to see how the routing table changes instantly.

  2. Send all your HTTP traffic to fabio on port 9999. For TCP proxying see TCP proxy⁠.

  3. Done

⁠Maintainers

⁠Contributors

This project exists thanks to all the people who contribute. [Contribute⁠].

⁠Backers

Thank you to all our backers! 🙏 [Become a backer⁠]

⁠Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor⁠]

⁠License

  • Contributions up to 14 Apr 2017 before 38f73da⁠

    MIT Licensed Copyright (c) 2017 eBay Software Foundation. All rights reserved.

  • Contributions after 14 Apr 2017 starting with 38f73da⁠

    MIT Licensed Copyright (c) 2017 Frank Schroeder. All rights reserved.

See LICENSE⁠ for details.

⁠Stargazers over Time

Stargazers over time

Tag summary

Content type

Image

Digest

Size

7.2 MB

Last updated

over 7 years ago

docker pull pashinin/fabio