traefik
与 nginx
一样,是一款优秀的反向代理工具,或者叫 Edge Router
。至于使用它的原因则基于以下几点
docker
的完美集成,基于 container label
的配置dashboard
界面metrics
的支持,对 prometheus
和 k8s
的集成安装
apt install docker.io
apt install docker-compose
查看版本
docker --version
docker-compose --version
新建yaml文件
vi traefik-v2.1.yaml
添加如下内容
version: '3'
services:
reverse-proxy:
image: traefik:2.1.6
# Enables the web UI and tells Traefik to listen to docker
# 启用webUI 并告诉Traefile去监听docker的容器实例
command: --api.insecure=true --providers.docker
ports:
# traefik暴露的http端口
- "8888:80"
# webUI暴露的端口(必须制定--api.insecure=true才可以访问)
- "8080:8080"
volumes:
# 指定docker的sock文件来让traefik获取docker的事件,从而实现动态负载均衡
- /var/run/docker.sock:/var/run/docker.sock
注意
8888:80
是代理所有的8888端口的服务转发到提供服务的端口号为80的docker服务8080:8080
是管理页面的服务 前面是对外的端口号不能被占用
使用docker-compose创建集群
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启动的应用
docker-compose -f traefik-v2.1.yaml ps
信息如下:
查看Traefik官方Dashboard
或者查看接口返回的
显示如下
Traefik来检测新服务并为你创建一个路由
创建一个新服务
vi test-service.yaml
内容如下:
version: '3'
services:
whoami:
image: containous/whoami
labels:
- "traefik.http.routers.whoami.rule=Host(`test.psvmc.cn`)"
创建服务
docker-compose -f test-service.yaml up -d whoami
成功显示如下
查看新创建的服务
docker-compose -f test-service.yaml ps
显示如下
再次查看traefik中的路由信息(就会发现服务自动加载进去了) 其实有点儿类似kong 的路由,只是traefik会自动监听docker的事件
查看配置后生成的JSON配置
这个和图形化界面看到的是一致的
curl -s "http://localhost:8080/api/rawdata" | python -m json.tool
路由的方式可以参考以下的几种
测试
curl -H Host:test.psvmc.cn http://localhost:8888
显示如下
这样我们就可以看出
Host为
test.psvmc.cn
的请求都会从whoami的服务响应
或者我们也可以映射过域名后,在服务器外访问
我们下载查看服务,会发现whoami的Servers的数量是1
扩充
docker-compose -f test-service.yaml up -d --scale whoami=2
成功信息如下
这时候负载就是两个了
点击上面的那一条数据,我们可以看到两个服务的负载
我们在测试一下
curl -H Host:test.psvmc.cn http://localhost:8888
会发现响应的请求在两个负载上来回跳
结果1
结果2