一款先進的反向代理軟體: traefik

leoliu發表於2016-12-11

traefik, 是一款比較先進的反向代理和負載均衡軟體, 它使部署微服務更加的容易。 traefik支援多種後端服務(Docker, Swarm, Kubernetes, Marathon, Mesos, Consul, Etcd, Zookeeper, BoltDB, Eureka, Rest API, file等等)自動的、動態的管理它的配置。

概覽

假設你部署了一組微服務, 你可能會用服務註冊中心(例如: consule或者etcd)或者服務排程(swarm, Mesos/Marathon)去管理這些服務。 如果你要讓使用者從外網訪問這些服務,就需要一個方向代理,以虛擬主機或者prefix paths的方式 對外提供服務, 例如:

  • api.domain.com 提供api介面地址
  • domain.com/web 提供web這樣一個服務
  • backoffice.domain.com 提供backoffice服務, 用來負載多個後端應用

但是, 微服務的架構是動態的: 服務的增加、刪除、 升級等, 這些一天可能要發生好幾次。

傳統的方向代理相對的不那麼動態, 在微服務架構下很難去經常配置並熱重啟。

traefik可以監聽你的服務註冊中心或者排程中心的API,獲悉哪些服務被新增、刪除、修改等, 然後自動生成響應的配置檔案, 而且能比較快速的建立。

執行並忘記它的存在!

功能

  • 無依賴,單個golang檔案
  • Rest API
  • 多後端支援: Docker, Swarm, Kubernetes, Marathon, Mesos, Consul, Etcd等
  • 監聽後端, 如果有變化,動態生成配置
  • Hot-reloading配置, 無需重啟
  • Gracefull關閉http連線
  • Rest Metrics
  • 有小的docker image的形式
  • SSL後端支援
  • SSL前端支援(用SNI的方式)
  • Angularjs ui
  • Websocket支援
  • HTTP/2支援
  • 重試網路問題
  • Let's Encrypt支援
  • 支援叢集的高可用模式

快速開始

你可以在這篇文章中Katacoda tutorial 快速瀏覽traefik如何負載多個docker容器。

你也可以在這裡ContainerCamp UK找到Ed Robinson關於traefik的基礎特性和kubernetes上結合traefik的demo。

在這裡Devoxx France 2016可以找到Emile Vauge關於tracefik的一些特性和docker、mesos/marathon、Let's Encrypt結合的demo。

Web UI

使用

文件

docs

相關文章