前言
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