Mallux - 宁静致远

Traefik 微服务代理

Traefik 概述

[Doc] https://docs.traefik.io/
[GitHub] https://github.com/containous

Traefik 简介

Traefik(基于 Go)是一个现代的 HTTP 反向代理负载均衡器,用于轻松部署微服务。 它支持多个后端(Docker、Swarm、Mesos / Marathon、Consul、Etcd、Zookeeper、BoltDB、Amazon ECS、Rest API、file …)来自动和动态地管理它的配置。

想象一下,你已经在你的基础设施上部署了一堆微服务。 您可能使用 service registry(服务注册表,如 etcd 或 consul)和 orchestrator(编排工具,如 swarm、Mesos / Marathon)来管理所有这些服务。

如果希望用户从 Internet 访问某些微服务,则必须使用反向代理,并使用虚拟主机或前缀路径对其进行配置,如:

  • 域名 api.domain.com 将指向您的私有网络中的微服务 api
  • 路径 domain.com/web 将微服务 web 指向您的私有网络
  • 域名 backoffice.domain.com 将指向您的私有网络中的微服务后台,在您的多个实例之间进行负载平衡

但微服务架构是动态的 … 服务的添加、删除、kill 或 频繁地升级,一天可能好几次。传统的反向代理不支持原生动态的修改服务, 您不能轻易地更改其配置并热加载。

Traefik 可以侦听您的 server registry 或 orchestrator API,并且每次微服务被添加、删除、kill 或升级时都会知道,并且可以自动生成配置。

因而,Traefix 可以取代 Nginx 或者 HAProxy 来反代动态迁移的微服务,因为后者需要非常复杂的操作步骤且需要诸如 Registrator , Consul 和 Consul-Template 等工具来完成相同的功能。

Traefik 架构

Traefik 特性

  • 它的速度很快
  • 没有依赖,只有一个二进制程序
  • Rest API
  • 内置 Web UI
  • 支持多个后端:Docker、Swarm、Kubernetes、Marathon、Mesos、Consul、Etcd 等等
  • 监控后端,可以监听后端的更改以自动应用新配置
  • 热加载配置,无需重新启动进程
  • 优雅地关闭 HTTP 连接
  • Circuit breakers on backends
  • Round Robin, rebalancer load-balancers
  • Rest Metrics
  • 提供 Docker 镜像
  • SSL 后端支持
  • SSL 前端支持(带 SNI)
  • Clean AngularJS Web UI
  • 支持 Websocket 支持
  • 支持 HTTP/2
  • 如果网络错误,重试请求
  • 加密支持(自动 HTTPS 更新)
  • 高可用的集群模式

Traefit 和 Nginx 性能对比

[Official] https://docs.traefik.io/benchmarks/

未完待续

END