前言
traefik 与 nginx 一样,是一款优秀的反向代理工具,或者叫 Edge Router。至于使用它的原因则基于以下几点
- 无须重启即可更新配置
 - 自动的服务发现与负载均衡
 - 与 
docker的完美集成,基于container label的配置 - 漂亮的 
dashboard界面 metrics的支持,对prometheus和k8s的集成
安装Docker
安装
1  | apt install docker.io  | 
查看版本
1  | docker --version  | 
使用docker-compose启动
新建yaml文件
1  | mkdir /root/traefik  | 
添加如下内容
1  | version: '3'  | 
注意
8888:80是代理所有的8888端口的服务转发到提供服务的端口号为80的docker服务
8080:8080是管理页面的服务前面是对外的端口号不能被占用
使用docker-compose创建集群
1  | docker-compose -f traefik-v2.1.yaml up -d reverse-proxy  | 
出现如下则创建成功
Status: Downloaded newer image for traefik:2.1.6
Creating root_reverse-proxy_1 …
Creating root_reverse-proxy_1 … done
查看使用docker-compose启动的应用
1  | docker-compose -f traefik-v2.1.yaml ps  | 
信息如下:

查看Traefik官方Dashboard
或者查看接口返回的
显示如下

查看创建的网络
1  | docker network ls  | 
可以看到生成了一个traefik_default的网络
创建路由及测试
创建路由
Traefik来检测新服务并为你创建一个路由
注意
服务的配置文件要和代理的配置文件放在一个文件夹下,这样它们才会在同一个网络下。
当然不在一个文件夹下也可以,但是要指定对应的网络,比如上面生成的
traefik_default,创建服务时如果不指定网络会根据所在文件夹名_default生成网络。
创建一个新服务
1  | cd /root/traefik  | 
内容如下:
1  | version: '3'  | 
创建服务
1  | docker-compose -f whoami-service.yaml up -d whoami  | 
成功显示如下

查看新创建的服务
1  | docker-compose -f whoami-service.yaml ps  | 
显示如下

 再次查看traefik中的路由信息(就会发现服务自动加载进去了)
其实有点儿类似kong 的路由,只是traefik会自动监听docker的事件
查看配置后生成的JSON配置
这个和图形化界面看到的是一致的
1  | curl -s "http://localhost:8080/api/rawdata" | python -m json.tool  | 
路由的方式可以参考以下的几种

测试traefik相关功能
测试
1  | curl -H Host:test.psvmc.cn http://localhost:8888  | 
显示如下

这样我们就可以看出
Host为
test.psvmc.cn的请求都会从whoami的服务响应
或者我们也可以映射过域名后,在服务器外访问
服务扩充
我们下载查看服务,会发现whoami的Servers的数量是1

扩充
1  | docker-compose -f whoami-service.yaml up -d --scale whoami=2  | 
成功信息如下

这时候负载就是两个了

点击上面的那一条数据,我们可以看到两个服务的负载

我们在测试一下
1  | curl -H Host:test.psvmc.cn http://localhost:8888  | 
会发现响应的请求在两个负载上来回跳
结果1

结果2
