官方地址:https://docs.traefik.io/
Github:https://docs.traefik.io/
中文文档:https://docs.traefik.cn/
官方安装教程:https://docs.traefik.io/getting-started/install-traefik/
概述
Traefik是一个开源的边缘路由器,它使发布您的服务成为一个有趣和简单的体验。它接受外部请求,通过路由找到相关组件处理请求。
除了它的许多特性之外,Traefik的不同之处在于它能自动发现你的服务的配置。当Traefik检查您的基础设施时,它会发现相关的信息,并发现哪个服务为哪个请求提供服务。
Traefik与Kubernetes、Docker、Docker Swarm、AWS、Mesos、Marathon等主要集群技术都是本地兼容的;并且可以同时处理很多。(它甚至适用于在裸机上运行的遗留软件。)
使用Traefik,不需要维护和同步单独的配置文件:所有事情都是实时自动更新的(没有重启,没有连接中断)。使用Traefik,只需要将精力集中在开发和部署中,而不是配置和维护系统的工作状态。
安装
二进制安装
[Unit]
Description=Traefik
Documentation=https://doc.traefik.io/traefik/
[Service]
Type=notify
ExecStart=/usr/local/bin/traefik --configFile=/etc/traefik/traefik.toml
Restart=always
WatchdogSec=30s
[Install]
WantedBy=multi-user.target
Linux 安装
官方下载地址 https://github.com/containous/traefik/releases,下载版本是v2.3.4_linux_amd64
wget https://github.com/traefik/traefik/releases/download/v2.3.4/traefik_v2.3.4_linux_amd64.tar.gz
tar zxvf traefik_v2.3.4_linux_amd64.tar.gz -C /usr/local/bin/ traefik
查看安装版本
# traefik version
Version: 2.3.4
Codename: picodon
Go version: go1.15.5
Built: 2020-11-24T16:16:43Z
OS/Arch: linux/amd64
创建配置目录
sudo mkdir -p /etc/traefik
创建日志目录
sudo mkdir -p /var/log/traefik
创建数据目录
sudo mkdir -p /data/traefik
Docker-compose
官方机制:https://docs.traefik.io/getting-started/quick-start/
创建docker-compose.yaml 文件
version: '3'
services:
traefik:
image: traefik:v2.3
# Enables the web UI and tells Traefik to listen to docker
command: --api.insecure=true --providers.docker
ports:
- "80:80"
- "8080:8080"
volumes:
# So that Traefik can listen to the Docker events
- /var/run/docker.sock:/var/run/docker.sock
启动docker-compose
docker-compose up -d
后端管理的dashborad 端口8080 访问地址是http://{ip}:8080
Helloworld
在当前的docker-compose.yaml 文件增加如下内容
# ...
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`)"
利用curl访问如下地址
curl -H Host:whoami.docker.localhost http://127.0.0.1
或者修改本地host 信息
# sudo echo "127.0.0.1 whoami.docker.localhost" >> /etc/hosts
返回信息如下
Hostname: 75ef94e5e8bb
IP: 127.0.0.1
IP: 172.23.0.3
RemoteAddr: 172.23.0.2:53804
GET / HTTP/1.1
Host: whoami.docker.localhost
User-Agent: curl/7.64.1
Accept: */*
Accept-Encoding: gzip
X-Forwarded-For: 172.23.0.1
X-Forwarded-Host: whoami.docker.localhost
X-Forwarded-Port: 80
X-Forwarded-Proto: http
X-Forwarded-Server: 92cad2207a42
X-Real-Ip: 172.23.0.1
关闭刚才创建的whoami
创建2个实例
docker-compose up --scale whoami=2
返回的信息如下
curl -H Host:whoami.docker.localhost http://127.0.0.1
Hostname: 75ef94e5e8bb
IP: 127.0.0.1
IP: 172.23.0.3
RemoteAddr: 172.23.0.2:54996
GET / HTTP/1.1
Host: whoami.docker.localhost
User-Agent: curl/7.64.1
Accept: */*
Accept-Encoding: gzip
X-Forwarded-For: 172.23.0.1
X-Forwarded-Host: whoami.docker.localhost
X-Forwarded-Port: 80
X-Forwarded-Proto: http
X-Forwarded-Server: 92cad2207a42
X-Real-Ip: 172.23.0.1
➜ ~ curl -H Host:whoami.docker.localhost http://127.0.0.1
Hostname: 8cece97e476b
IP: 127.0.0.1
IP: 172.23.0.4
RemoteAddr: 172.23.0.2:36088
GET / HTTP/1.1
Host: whoami.docker.localhost
User-Agent: curl/7.64.1
Accept: */*
Accept-Encoding: gzip
X-Forwarded-For: 172.23.0.1
X-Forwarded-Host: whoami.docker.localhost
X-Forwarded-Port: 80
X-Forwarded-Proto: http
X-Forwarded-Server: 92cad2207a42
X-Real-Ip: 172.23.0.1
参考
https://hexo.aufomm.com/tags/Traefik/
https://soulteary.com/2018/06/11/use-server-side-discovery-improve-development.html