赞
踩
traefik
与nginx
一样,是一款优秀的反向代理工具,或者叫Edge Router
。至于使用它的原因则基于以下几点
- 无须重启即可更新配置
- 自动的服务发现与负载均衡
- 与
docker
的完美集成,基于container label
的配置- 漂亮的
dashboard
界面metrics
的支持,对prometheus
和k8s
的集成
一个使用 Docker 的简单示例
创建一个 docker-compose.yml
文件,你将在其中定义一个使用官方的 Traefik 镜像的反向代理服务:
已复制- version: '3'
-
- services:
- reverse-proxy:
- # 官方的 Traefik 2.0 Docker 镜像
- image: traefik:v2.0
- # 开启 web UI 并且告诉 Traefik 监听 Docker
- command: --api.insecure=true --providers.docker
- ports:
- # HTTP 端口
- - "80:80"
- # Web UI 端口(通过 --api.insecure=true 启用)
- - "8080:8080"
- volumes:
- # 这样 Traefik 可以监听 Docker 事件
- - /var/run/docker.sock:/var/run/docker.sock

就这样现在就可以启动 Traefik 了!
使用以下命令启动你的反向代理
服务:
docker-compose up -d reverse-proxy
然后可以打开浏览器,访问 http://localhost:8080/api/rawdata 接口来查看 Traefik 的 API 原始数据。
现在我们已经启动并运行了 Traefik 实例,接下来我们来部署一个新的服务,添加到上面的 docker-compose.yml
文件:
- # ...
- whoami:
- # 一个通过 API 暴露其 IP 地址的容器
- image: containous/whoami
- labels:
- - "traefik.http.routers.whoami.rule=Host(`whoami.docker.localhost`)"
上面我们定义了 whoami
:一个简单的 web 服务,它会输出部署的机器的相关信息(IP 地址、主机等等)。然后我们可以使用以下命令启动 whoami
服务:
docker-compose up -d whoami
启动完成后,然后返回浏览器,查看 http://localhost:8080/api/rawdata 接口的数据,正常就可以看到 Traefik 已自动检测到新容器并更新了相应的配置。
当 Traefik 检测到新服务时,它会创建相应的路由,然后我们可以访问相应的路由(我们这里使用 curl):
curl -H Host:whoami.docker.localhost http://127.0.0.1
然后会输出如下的一些信息:
- Hostname: 3cca68434466
- IP: 127.0.0.1
- IP: 172.21.0.3
- #...
我们可以使用以下命令来对 whoami
服务进行扩容:
docker-compose up -d --scale whoami=2
扩容完成后可以查看当前我们的服务运行的容器状况:
- docker-compose ps
- Name Command State Ports
- -----------------------------------------------------------------------------------------------------------------
- quick-start_reverse-proxy_1 /entrypoint.sh --api.insec ... Up 0.0.0.0:80->80/tcp, 0.0.0.0:8080->8080/tcp
- quick-start_whoami_1 /whoami Up 80/tcp
- quick-start_whoami_2 /whoami Up 80/tcp
同样返回到浏览器中查看 http://localhost:8080/api/rawdata 接口可以看到 Traefik 已经自动检查到了新的容器实例。
最后,我们运行以下命令两次,查看 Traefik 在两个实例之间的负载均衡:
curl -H Host:whoami.docker.localhost http://127.0.0.1
我们可以在输出信息中看到如下交替的信息显示:
- Hostname: a656c8ddca6c
- IP: 172.27.0.3
- #...
- Hostname: s458f154e1f1
- IP: 172.27.0.4
- # ...
不过,最后不要忘记了还可以去查看下 Traefik 的 Web UI,通过访问 http://localhost:8080 即可:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。