traefik支持容器调研
traefik简介
traefik 与 nginx 一样,是一款反向代理工具,或者叫Edge路由器。
- 自动的服务发现与负载均衡
- 兼容主要的集群技术,如Kubernetes、Docker等
- 无须维护和同步单独的配置文件,更多时间用在系统开发和部署上,而不是编写配置和维护配置
- 所有配置自动实时生效,无须重启
核心概念
反向代理
Treafik 是个Edge路由器,意味着它是您平台的大门,它根据不同规则的配置路由到不同的服务。
服务自动发现
传统的反向代理是通过配置文件中具体配置路由到不同的服务上面(如nginx),而 traefik 是从服务本身获取。部署服务时需要附件信息,这些信息告诉 treafik服务可用处理的请求特征。部署服务时,treafik 会立即检测到该服务并实施更新路由规则,当删除服务时,路由将相应失效。
快速开始
通过docker-compose来安装traefik,通过一个示例来了解traefik
安装docker-compose
1 | 下载二进制文件 |
编写docker-compose.yml
1 | version: '3' |
使用命令启动traefik
1 | docker-compose up -d reverse-proxy |
测试traefik
1 | { |
检测服务并创建路由
编辑docker-compose.yml 文件,并在文件末尾添加以下内容
1 | # ... |
启动whomi服务
1 | docker-compose up -d whoami |
再次访问 curl http://localhost:8080/api/rawdata ,发现traefik已经自动检测到新服务并更新了配置
1 | { |
当traefik检测到新服务时,它会创建相应的路由
1 | curl -H Host:whoami.docker.localhost http://127.0.0.1 |
1 | [root@vm10-0-0-150 ~]# curl -H Host:whoami.docker.localhost http://127.0.0.1 |
负载均衡实例
启动更多服务
1 | docker-compose up -d --scale whoami=2 |
通过命令查看traefik在服务的两个实例之间负载均衡,输出将交替显示以下内容之一:
1 | [root@vm10-0-0-150 ~]# curl -H Host:whoami.docker.localhost http://127.0.0.1 |
配置介绍
1 |
启动时,traefik会在以下位置查找名为 traefik.toml(traefik.yml或traefik.yaml)的文件:
/etc/traefik/
$XDG_CONFIG_HOME/
$HOME/.config/
(工作目录)
可以使用configFile参数来覆盖
traefik –configFile=foo/bar/myconfigfile.toml
配置发现
traefik 中的配置发现是通过提供者实现的,traefik调用提供者的api,获取有关路由的配置信息,并且当traefik检测到更改时,就会动态的更新路由。traefik根据不同的提供者,有以下四种类别:
- 基于标签:每个部署的容器都有一组附加的标签
- 基于键值:每个部署的容器都会使用相关信息更新键值存储
- 基于注释:带有注释的单独对象定义容器的特征
- 基于文件:使用文件定义配置
常用提供者配置
配置文件(常用于二进制安装)
1 | #TOMAL |
Docker
1 | your-container: |
IngressRoute
1 | apiVersion: traefik.containo.us/v1alpha1 |
Ingress
1 | apiVersion: traefik.containo.us/v1alpha1 |
更多提供者配置可以参考官方文档:https://doc.traefik.io/traefik/providers/overview/