Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team at - Traefik: Dynamic container load balancer for containers

270 views

Published on

Trilha Containers How we figured out we had a SRE team at - Traefik: Dynamic container load balancer for containers

Published in: Education
  • Be the first to comment

TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team at - Traefik: Dynamic container load balancer for containers

  1. 1. Traefik: Dynamic Load Balancer For Containers Marcelo Pinheiro @salizzar
  2. 2. $ whoami • Fireman / Problem Solver / Programmer since 2000 • Ruby, Python, Golang, Java, C#, Classic ASP, PHP, Node.js, Erlang and others • Fought, made coffee, negotiated deadlines • DevOps Engineer @ Work & Co
  3. 3. Load Balancing For Microservices A brief introduction.
  4. 4. Load Balancing For Microservices • Load balancing: a technique to equally distribute traffic between servers (duh.) • Most popular options runs on Layer 4 or Layer 7 (OSI: Open Systems Interconnection Model) • Layer 4: operates at the intermediate transport layer (TCP/ IP) • Layer 7: operates at the high-level application layer (user namespace)
  5. 5. Load Balancing For Microservices • L4 options: • LVM • L7 options: • NGINX • Apache HTTP Server • HAProxy • Most public / private clouds have their solutions inside-the-box
  6. 6. Load Balancing For Microservices • In a microservices environment where one service runs in one instance as a standard and scaling is manual, L4 / L7 load balancing options are good enough • And about containers? • AWS ELB supports ECS • Microsoft Azure supports ACS (but requires DC/OS) • GCE uses GKE • OpenStack uses neutron-lbaas
  7. 7. Traditional HTTP Servers and Containers: A not-so-simple path.
  8. 8. Traditional HTTP Servers and Containers • HAProxy, Apache HTTP Server and NGINX are created before of Microservices / Containers boom • Based on static vhost configuration • You need to previously know the number of upstreams to configure • But how to dynamically discover new servers / containers and discard old ones?
  9. 9. Traditional HTTP Servers and Containers • A solution: Service Discovery • Automate discover of new servers / containers in a cluster • A very good explanation: https:// www.nginx.com/blog/service-discovery- in-a-microservices-architecture/ • Available options: • Consul • etcd • Apache ZooKeeper
  10. 10. Traditional HTTP Servers and Containers • Most famous solution to Apache HTTPD, NGINX and HAProxy: consul-template • Uses Consul as service registry database to discover new instances / containers running • Dynamically generate vhost files and sends a SIGHUP signal to nginx / httpd daemon reload configurations and apply changes (hot-reload)
  11. 11. Traditional HTTP Servers and Containers • It works? Yes. • But you need to create a Consul infrastructure • A Consul master • Pool of Consul agents • Dockerized Consul isn’t a good idea • Obviously, more one dependency
  12. 12. Traefik: Dynamic Load Balancer For Containers Cheese As A Service.
  13. 13. Traefik: Dynamic Load Balancing For Containers • Created by Emile Vauge • Written in Go • Focused on microservices • HTTP/2 Support • Websockets • Let’s Encrypt • Docker, Swarm, Kubernetes, Marathon, Mesos, Consul, Etcd and others
  14. 14. Traefik: Dynamic Load Balancing For Containers • How it works? • Traefik listens to backend / orchestrator API’s and detects any changes, applying it • Routes are dynamically managed • You can create / update / destroy routes at any time
  15. 15. Traefik: Dynamic Load Balancing For Containers • How it works internally? • Traefik reads service metadata on Docker / Kubernetes / etcd / etc • Hosts, ports, load balancing algorithm etc • You can persist configuration using Consul, BoltDB, Amazon ECS and other backends • Let’s Encrypt integration requires a key-value storage
  16. 16. Traefik: Dynamic Load Balancing For Containers • Traefik main concepts: • Entrypoints: network entry points (HTTP, HTTPS, SSL etc) • Backends: a load-balancing method to receive requests • Frontends: set of rules that maps entrypoints to backends
  17. 17. Yes. Live Demo time! Running in a Docker Swarm cluster.
  18. 18. Questions? Is free. About benchmarks, visit https://docs.traefik.io/benchmarks/
  19. 19. Thank you! :)

×