Skip to content

20160615 5 Fabio

20160615_5_Fabio

1 - Why

Yet an other LB ?
- Nginx, Varnish, Apache, HAporyx, Traeffic, …

@Ebay
* Consul integration
* Time to write 1 dedicated

2 - Routing in micro services

1 URL Path
1 Service

BUT:
* Highly dynamic / Short life instances
* Dynamic PORT allocation

3 - Fabio insight

3.1 - Consul integration

  • Use service-name
  • Use TAGS as Path for routing table

urlprefix-PATH

3.2 - Config language

Can overwrite Fabio dynamic config manually
- DSL (Human readable)

Routing table
- route add SERVICE_NAME PATH DESTINATION:PORT
- route dell SERVICE_NAME PATH DESTINATION:PORT

Traffic shapping
- route weight

4 - Advantages

Easy:

  • Provisionning service
    -> Registering automatically
    -> DONE

  • Need manual changes sometime
    -> DONE

  • Works everywhere
    -> Cloud
    -> Laptop
    -> HW

  • Refactoring

5 - Today (new features)

5.1 - Desc

Cmd line args
Dynamic SSL certs management
Vault support
SNI Support

5.2 - Demo

Vault integration

./fabio ... -type=vault;cert=secret/fabio/certs/DOMAIN';...

6 - Next

  • 65k outbound connections

  • Refactor urlpreifx-tag
  • Additionnal backends

7 - Stats

  • Go 1.6 + Httputil.ReverseProxy
  • 4.000 Lines
  • 1 Release / Month
  • Src
  • Binary
  • Docker image

  • Used in production (since Sept 2015)

  • Kijiji Italy (1200 rqps)
  • Ebay NL (15000 rqps)

https://github.com/eBay/fabio

8 - FAQ

8.1 - HTTP 2.0 ?

Not yet

8.2 - A/B testing with Traffic Shapping ?

We use it to switch from Java -> Go

BUT
- No reall tips on HOW to measure stuff with Fabio
- Too much “glue”

8.3 - Fabio / Traeffic

Traeffic
- feature rich

But at the time I though about OpenSourcing Fabio, was not so advanced