官方地址:https://docs.traefik.io/
Github:https://docs.traefik.io/
中文文档:https://docs.traefik.cn/
官方安装教程:https://docs.traefik.io/getting-started/install-traefik/

概述

图片.png
Traefik是一个开源的边缘路由器,它使发布您的服务成为一个有趣和简单的体验。它接受外部请求,通过路由找到相关组件处理请求。

除了它的许多特性之外,Traefik的不同之处在于它能自动发现你的服务的配置。当Traefik检查您的基础设施时,它会发现相关的信息,并发现哪个服务为哪个请求提供服务。

Traefik与Kubernetes、Docker、Docker Swarm、AWS、Mesos、Marathon等主要集群技术都是本地兼容的;并且可以同时处理很多。(它甚至适用于在裸机上运行的遗留软件。)

使用Traefik,不需要维护和同步单独的配置文件:所有事情都是实时自动更新的(没有重启,没有连接中断)。使用Traefik,只需要将精力集中在开发和部署中,而不是配置和维护系统的工作状态。

开发Traefik,我们的主要目标是使它易于使用,

安装

二进制安装

  1. [Unit]
  2. Description=Traefik
  3. Documentation=https://doc.traefik.io/traefik/
  4. [Service]
  5. Type=notify
  6. ExecStart=/usr/local/bin/traefik --configFile=/etc/traefik/traefik.toml
  7. Restart=always
  8. WatchdogSec=30s
  9. [Install]
  10. WantedBy=multi-user.target

Linux 安装

官方下载地址 https://github.com/containous/traefik/releases,下载版本是v2.3.4_linux_amd64
image.png

  1. wget https://github.com/traefik/traefik/releases/download/v2.3.4/traefik_v2.3.4_linux_amd64.tar.gz
  2. tar zxvf traefik_v2.3.4_linux_amd64.tar.gz -C /usr/local/bin/ traefik

查看安装版本

  1. # traefik version
  2. Version: 2.3.4
  3. Codename: picodon
  4. Go version: go1.15.5
  5. Built: 2020-11-24T16:16:43Z
  6. OS/Arch: linux/amd64

创建配置目录

  1. sudo mkdir -p /etc/traefik

创建日志目录

  1. 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

图片.png

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

图片.png
返回的信息如下

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