traefik

traefik

一款先进的反向代理软件: traefik

文章分享leoliu 发表了文章 • 1 个评论 • 3491 次浏览 • 2016-12-11 19:29 • 来自相关话题

[![](https://cloud.githubusercontent.com/assets/5344039/21079804/5756c142-bfd8-11e6-8eeb-ede03b2ddf9b.png)](https://cloud.githubus ...查看全部
[![](https://cloud.githubusercontent.com/assets/5344039/21079804/5756c142-bfd8-11e6-8eeb-ede03b2ddf9b.png)](https://cloud.githubusercontent.com/assets/5344039/21079804/5756c142-bfd8-11e6-8eeb-ede03b2ddf9b.png)

[traefik](https://traefik.io/ "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服务, 用来负载多个后端应用


但是, 微服务的架构是动态的: 服务的增加、删除、 升级等, 这些一天可能要发生好几次。

传统的方向代理相对的不那么动态, 在微服务架构下很难去经常配置并热重启。
[![](https://cloud.githubusercontent.com/assets/5344039/21079802/50386e2e-bfd8-11e6-9c68-ec93e4e8bac9.png)](https://cloud.githubusercontent.com/assets/5344039/21079802/50386e2e-bfd8-11e6-9c68-ec93e4e8bac9.png)

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](https://www.katacoda.com/courses/traefik/deploy-load-balancer "aa") 快速浏览traefik如何负载多个docker容器。

你也可以在这里[ContainerCamp UK](https://container.camp/au/2017 "ContainerCamp UK")找到[Ed Robinson](https://github.com/errm "Ed Robinson")关于traefik的基础特性和kubernetes上结合traefik的demo。

[![](https://cloud.githubusercontent.com/assets/5344039/21080037/811dcc3a-bfdf-11e6-9db8-a4ccba58d3ca.jpeg)](https://cloud.githubusercontent.com/assets/5344039/21080037/811dcc3a-bfdf-11e6-9db8-a4ccba58d3ca.jpeg)

在这里[Devoxx France 2016](http://www.devoxx.fr/ "Devoxx France 2016")可以找到[Emile Vauge](https://github.com/emilevauge)关于tracefik的一些特性和docker、mesos/marathon、Let's Encrypt结合的demo。

[![](https://cloud.githubusercontent.com/assets/5344039/21080035/760836aa-bfdf-11e6-84b5-e3f5af7a1602.jpeg)](https://cloud.githubusercontent.com/assets/5344039/21080035/760836aa-bfdf-11e6-84b5-e3f5af7a1602.jpeg)

##Web UI
[![](https://cloud.githubusercontent.com/assets/5344039/21079806/588a669a-bfd8-11e6-9340-c9e4b6e4b280.png)](https://cloud.githubusercontent.com/assets/5344039/21079806/588a669a-bfd8-11e6-9340-c9e4b6e4b280.png)
[![](https://cloud.githubusercontent.com/assets/5344039/21079805/57d70faa-bfd8-11e6-9f9f-e5032ae7a1d2.png)](https://cloud.githubusercontent.com/assets/5344039/21079805/57d70faa-bfd8-11e6-9f9f-e5032ae7a1d2.png)

##使用
- 最简单的方式是:从 [release](https://github.com/containous/traefik/releases "release")下载最新的二进制版本, 用[简单的配置文件](https://raw.githubusercontent.com/containous/traefik/master/traefik.sample.toml "简单的配置文件")运行
```go
./traefik --configFile=traefik.toml
```
- Docker image的方式
```go
docker run -d -p 8080:8080 -p 80:80 -v $PWD/traefik.toml:/etc/traefik/traefik.toml traefik
```
- 源码的方式
```go
git clone https://github.com/containous/traefik
```

##文档
[docs](https://docs.traefik.io/ "docs")

一款先进的反向代理软件: traefik

文章分享leoliu 发表了文章 • 1 个评论 • 3491 次浏览 • 2016-12-11 19:29 • 来自相关话题

[![](https://cloud.githubusercontent.com/assets/5344039/21079804/5756c142-bfd8-11e6-8eeb-ede03b2ddf9b.png)](https://cloud.githubus ...查看全部
[![](https://cloud.githubusercontent.com/assets/5344039/21079804/5756c142-bfd8-11e6-8eeb-ede03b2ddf9b.png)](https://cloud.githubusercontent.com/assets/5344039/21079804/5756c142-bfd8-11e6-8eeb-ede03b2ddf9b.png)

[traefik](https://traefik.io/ "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服务, 用来负载多个后端应用


但是, 微服务的架构是动态的: 服务的增加、删除、 升级等, 这些一天可能要发生好几次。

传统的方向代理相对的不那么动态, 在微服务架构下很难去经常配置并热重启。
[![](https://cloud.githubusercontent.com/assets/5344039/21079802/50386e2e-bfd8-11e6-9c68-ec93e4e8bac9.png)](https://cloud.githubusercontent.com/assets/5344039/21079802/50386e2e-bfd8-11e6-9c68-ec93e4e8bac9.png)

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](https://www.katacoda.com/courses/traefik/deploy-load-balancer "aa") 快速浏览traefik如何负载多个docker容器。

你也可以在这里[ContainerCamp UK](https://container.camp/au/2017 "ContainerCamp UK")找到[Ed Robinson](https://github.com/errm "Ed Robinson")关于traefik的基础特性和kubernetes上结合traefik的demo。

[![](https://cloud.githubusercontent.com/assets/5344039/21080037/811dcc3a-bfdf-11e6-9db8-a4ccba58d3ca.jpeg)](https://cloud.githubusercontent.com/assets/5344039/21080037/811dcc3a-bfdf-11e6-9db8-a4ccba58d3ca.jpeg)

在这里[Devoxx France 2016](http://www.devoxx.fr/ "Devoxx France 2016")可以找到[Emile Vauge](https://github.com/emilevauge)关于tracefik的一些特性和docker、mesos/marathon、Let's Encrypt结合的demo。

[![](https://cloud.githubusercontent.com/assets/5344039/21080035/760836aa-bfdf-11e6-84b5-e3f5af7a1602.jpeg)](https://cloud.githubusercontent.com/assets/5344039/21080035/760836aa-bfdf-11e6-84b5-e3f5af7a1602.jpeg)

##Web UI
[![](https://cloud.githubusercontent.com/assets/5344039/21079806/588a669a-bfd8-11e6-9340-c9e4b6e4b280.png)](https://cloud.githubusercontent.com/assets/5344039/21079806/588a669a-bfd8-11e6-9340-c9e4b6e4b280.png)
[![](https://cloud.githubusercontent.com/assets/5344039/21079805/57d70faa-bfd8-11e6-9f9f-e5032ae7a1d2.png)](https://cloud.githubusercontent.com/assets/5344039/21079805/57d70faa-bfd8-11e6-9f9f-e5032ae7a1d2.png)

##使用
- 最简单的方式是:从 [release](https://github.com/containous/traefik/releases "release")下载最新的二进制版本, 用[简单的配置文件](https://raw.githubusercontent.com/containous/traefik/master/traefik.sample.toml "简单的配置文件")运行
```go
./traefik --configFile=traefik.toml
```
- Docker image的方式
```go
docker run -d -p 8080:8080 -p 80:80 -v $PWD/traefik.toml:/etc/traefik/traefik.toml traefik
```
- 源码的方式
```go
git clone https://github.com/containous/traefik
```

##文档
[docs](https://docs.traefik.io/ "docs")