Traefik入门
Traefik入门Traefik入门、Docker、docker-compose前言traefik与nginx一样,是一款优秀的反向代理工具,或者叫Edge Router。至于使用它的原因则基于以下几点无须重启即可更新配置自动的服务发现与负载均衡与docker的完美集成,基于container label的配置漂亮的dashboard界面metrics的支持,对prometheus和k8s的集成安
Traefik入门
Traefik入门、Docker、docker-compose
前言
traefik
与 nginx
一样,是一款优秀的反向代理工具,或者叫 Edge Router
。至于使用它的原因则基于以下几点
- 无须重启即可更新配置
- 自动的服务发现与负载均衡
- 与
docker
的完美集成,基于container label
的配置 - 漂亮的
dashboard
界面 metrics
的支持,对prometheus
和k8s
的集成
安装Docker
安装
apt install docker.io
apt install docker-compose
查看版本
docker --version
docker-compose --version
使用docker-compose启动
新建yaml文件
mkdir /root/traefik
cd /root/traefik
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
或者查看接口返回的
显示如下
查看创建的网络
docker network ls
可以看到生成了一个traefik_default
的网络
创建路由及测试
创建路由
Traefik来检测新服务并为你创建一个路由
注意
服务的配置文件要和代理的配置文件放在一个文件夹下,这样它们才会在同一个网络下。
当然不在一个文件夹下也可以,但是要指定对应的网络,比如上面生成的
traefik_default
,创建服务时如果不指定网络会根据所在文件夹名_default
生成网络。
创建一个新服务
cd /root/traefik
vi whoami-service.yaml
内容如下:
version: '3'
services:
whoami:
image: containous/whoami
labels:
- "traefik.http.routers.whoami.rule=Host(`test.psvmc.cn`)"
创建服务
docker-compose -f whoami-service.yaml up -d whoami
成功显示如下
查看新创建的服务
docker-compose -f whoami-service.yaml ps
显示如下
再次查看traefik中的路由信息(就会发现服务自动加载进去了)
其实有点儿类似kong 的路由,只是traefik会自动监听docker的事件
查看配置后生成的JSON配置
这个和图形化界面看到的是一致的
curl -s "http://localhost:8080/api/rawdata" | python -m json.tool
路由的方式可以参考以下的几种
测试traefik相关功能
测试
curl -H Host:test.psvmc.cn http://localhost:8888
显示如下
这样我们就可以看出
Host为
test.psvmc.cn
的请求都会从whoami的服务响应
或者我们也可以映射过域名后,在服务器外访问
服务扩充
我们下载查看服务,会发现whoami的Servers的数量是1
扩充
docker-compose -f whoami-service.yaml up -d --scale whoami=2
成功信息如下
这时候负载就是两个了
点击上面的那一条数据,我们可以看到两个服务的负载
我们在测试一下
curl -H Host:test.psvmc.cn http://localhost:8888
会发现响应的请求在两个负载上来回跳
结果1
结果2
更多推荐
所有评论(0)