Traefik新一代反代服务器,兼容所有主要的集群技术(一)
简介
Traefik 是一种开源 应用程序代理 ,它使发布服务成为一种有趣和轻松的体验。 它代表您的系统接收请求,并确定哪些组件负责处理这些请求,并安全地路由它们。
除了众多功能外,Traefik 的与众不同之处在于它会自动为您的服务发现正确的配置。 当 Traefik 检查您的基础设施时,奇迹就会发生,它会找到相关信息并发现哪些服务为哪个请求提供服务。
Traefik 原生兼容所有主要的集群技术,例如 Kubernetes、Docker Swarm、AWS 等等;并且可以同时处理许多问题。(它甚至适用于在裸机上运行的传统软件)。
使用 Traefik,无需维护和同步单独的配置文件:一切都自动实时发生(无需重启,无需连接中断)。 使用 Traefik,您可以花时间为系统开发和部署新功能,而不是配置和维护其工作状态。
官网教程
修改的第一个yaml示例
name: traefik
services:
reverse-proxy:
# 官方 v3.3 镜像
image: traefik:v3.3
# 开启 web UI 和 监听 docker
command: --api.insecure=true --providers.docker
ports:
# HTTP 端口。18080是为了突破家用宽带的端口封锁。
- "18080:80"
# Web UI 端口(由 --api.insecure=true 开启)18443也是为了突破家用宽带的封锁
- "18443:8080"
volumes:
# 通过映射,来监听本地docker进程
- /var/run/docker.sock:/var/run/docker.sock
networks:
default:
name: traefiknet
enable_ipv6: true
启动测试
docker-compose up -d reverse-proxy
*********:18443/api/rawdata
*********:18443/dashboard
这就是JSON返回和web UI控制台了。


增加服务
services:
...
whoami:
# A container that exposes an API to show its IP address
image: traefik/whoami
labels:
- "traefik.http.routers.whoami.rule=Host(`whoami.docker.localhost`)"
完整配置
name: traefik
services:
reverse-proxy:
# 官方 v3.3 镜像
image: traefik:v3.3
# 开启 web UI 和 监听 docker
command: --api.insecure=true --providers.docker
ports:
# HTTP 端口
- "18080:80"
# Web UI 端口(由 --api.insecure=true 开启)
- "18443:8080"
volumes:
# 通过映射,来监听本地docker进程
- /var/run/docker.sock:/var/run/docker.sock
whoami:
# 一个暴露API的容器,显示其IP地址
image: traefik/whoami
labels:
- "traefik.http.routers.whoami.rule=Host(`whoami.docker.localhost`)"
networks:
default:
name: traefiknet
enable_ipv6: true
新服务测试
启动,并用curl检测API容器返回容器IP。
docker compose up -d whoami
curl -H Host:whoami.docker.localhost http://127.0.0.1:18080
Hostname: 8d9e4a74c6b8
IP: 127.0.0.1
IP: ::1
IP: 172.19.0.3
IP: fdf7:f9e1:685c::3
IP: fe80::42:acff:fe13:3
RemoteAddr: 172.19.0.2:40956
检查dashboard




一个服务器
负载均衡测试
再启动一个whoami
docker compose up -d --scale whoami=2
检查容器,启动了两个whoami
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e767fddb4c73 traefik/whoami "/whoami" 56 seconds ago Up 55 seconds 80/tcp traefik-whoami-2
8d9e4a74c6b8 traefik/whoami "/whoami" 41 minutes ago Up 41 minutes 80/tcp traefik-whoami-1
c665d6ff88d5 traefik:v3.3 "/entrypoint.sh --ap…" About an hour ago Up About an hour 0.0.0.0:18080->80/tcp, [::]:18080->80/tcp, 0.0.0.0:18443->8080/tcp, [::]:18443->8080/tcp traefik-reverse-proxy-1
用curl检测API容器返回容器IP。
两次返回的IP地址不一样了。
# curl -H Host:whoami.docker.localhost http://127.0.0.1:18080 | grep 'IP: 172'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 421 100 421 0 0 203k 0 --:--:-- --:--:-- --:--:-- 205k
IP: 172.19.0.4
# curl -H Host:whoami.docker.localhost http://127.0.0.1:18080 | grep 'IP: 172'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 421 100 421 0 0 219k 0 --:--:-- --:--:-- --:--:-- 411k
IP: 172.19.0.3
继续检查dashboard servers


浙公网安备 33010602011771号