本文发布于Cylon的收藏册,转载请著名原文链接~

traefik概述

traefik-现代反向代理,也可称为现代边缘路由;traefik原声兼容主流集群,Kubernetes,Docker,AWS等。官方的定位traefik是一个让开发人员将时间花费在系统研发与部署功能上,而非配置和维护。并且traefik官方也提供自己的服务网格解决方案

作为一个 modern edge router ,traefik拥有与envoy相似的特性

  • 基于go语言研发,目的是为了简化开发人员的配置和维护
  • tcp/udp支持
  • http L7支持
  • GRPC支持
  • 服务发现和动态配置
  • front/ edge prory支持
  • 可观测性
  • 流量管理

traefik 术语

要了解trafik,首先需要先了解一下 有关trafik中的一些术语。

  • EntryPoints 入口点,是可以被下游客户端连接的命名网络位置,类似于envoy 的listener和nginx的listen
  • services 服务,负载均衡,上游主机接收来自traefik的连接和请求并返回响应。 类似于nginx upstream envoy的clusters
  • Providers 提供者,提供配置文件的后端,如文件,consul,redis,etcd等,可使traefik自动更新
  • routers 路由器,分析请求,将下游主机的请求处理转入到services
  • middlewares: 中间件,在将下游主机的请求转入到services时进行的流量调整

traefik部署安装

traefik为go语言开发的,可以直接下载运行即可。此处介绍直接运行二进制程序

后端环境准备,此处为docker运行的两个后端。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
version: '3'
services:
  webserver1:
    image: sealloong/envoy-end:latest
    ports:
    - 91:90
    networks:
      envoymesh:
        aliases:
        - v1_server
        - default_server
    environment: 
    - VERSION=v1
    - COLORFUL=blue
    expose:
    - 90
  webserver2:
    image: sealloong/envoy-end:latest
    ports:
    - 92:90
    networks:
      envoymesh:
        aliases:
        - v1_server
        - default_server
    environment: 
    - VERSION=v1
    - COLORFUL=blue
    expose:
    - 90
networks:
  envoymesh: {}

traefik配置说明

Traefik中的配置可以引用两种不同的内容:

  • 完全动态路由配置(动态配置)
  • 启动时配置(静态配置)

静态配置一般定义traefik的endpoints 与providers,这些不经常变动 动态配置一般定义traefik的处理浏览的部分,如 中间件,路由,浏览管理等。

  • traefik1 与 traefik2的配置文件不兼容

此处配置主要以file方式讲解。

静态配置部分:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
entryPoints:
  web:
    address: :8081
[api]
    dashboard = true
    insecure  = true
providers:
  file:
    filename: ./root.yaml
[accessLog]
  filePath = "/root/access.log"
  format = "json"

动态配置部分

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
http:
  routers:
    router0:
      rule: "Host(`test.com`)"
      service: "service-foo"
      entryPoints:
      - web
    router1:
      rule: "Path(`/`)"
      service:  "baidu"
      entryPoints:
      - web
  services:
    service-foo:
      loadBalancer:
        servers:
        - url: "http://10.0.0.4:91/"
        - url: "http://10.0.0.4:92/"
    baidu:
      loadBalancer:
        servers:
        - url: http://www.baidu.com/

本文发布于Cylon的收藏册,转载请著名原文链接~

链接:将traefik部署为传统web架构模式

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」 许可协议进行许可。