美文网首页
Traefik轻量级应用代理利器--入门实践

Traefik轻量级应用代理利器--入门实践

作者: Xiao_Yang | 来源:发表于2022-05-30 18:53 被阅读0次

Traefik 是由 golang 语言开发的开源 HTTP/TCP/UDP 应用代理工具,作为云原生应用代理,目前常应用于容器环境的 k8s ingress 场景上作为“南北向”流量的策略管控。同时日常应用代理工具应用场景选择上,老牌的 nginx 也是一个不错的选择,但从 Traefik 的轻量、简单易用以及动态加载等功能特色上,完全可以成为大家常用的应用代理选择的一个利器,而并非仅仅应用于 kubenetes 容器环境下。对于初次接触或想尝试使用 Traefix 的用户和本人之初的想法一样,先从最简单的部署方式开始,当然除了很容易拥有 k8s 环境资源或熟悉 k8s 环境操作的用户以外,更多可推荐从最简单的文件 “file provider"配置应用开始。

Traefik 支持从多种配置源方式动态加载配置,比如从文件k8s/docker/consul等等, 本文将仅以文件配置实践实例为大家提供快速使用入门指导。

关键概念理解
  • entryPoints 入口监听器
  • providers 动态配置提供者
  • routers 路由
  • middlewares 中间件
  • servers 后端服务
基础架构图
architecture.png

中间件组件


middleware.png
应用场景配置实例

场景一: TCP 应用代理

描述:实现对mysql服务默认3306 TCP的代理,代理端口为3406

1)全局配置 全局配置为 Traefix 静态配置项(变更需要重启进程),主要指定 entryPoints 和 providers

#/etc/traefik/traefik.yml 
global:
  checkNewVersion: true
  sendAnonymousUsage: true
entryPoints:                       #入口监听配置
  mysql:                           #自定义的名称--mysql
    address: :3406                 #定义本地网络监听地址与端口 -- 3406
log:
  filePath: log/traefik.log
  format: json
accessLog:
  filePath: /home/lighthouse/traefix/access.log
api:
  insecure: true
providers:
  file:
    filename: /etc/traefik/dynamic_config.yml

2)动态配置(这里'动态'可以理解为配置变化将Traefix进程动态加载无需重启)

# /etc/traefik/dynamic_config.yml
tcp:
  routers:
    Route_TCP:
      rule: "HostSNI(`*`)"      #必须项,定义rule规则为*代表所有  
      service: "mysql"          #引用服务 --mysql自定义名称
  #定义服务    
  services:
    mysql:
      loadBalancer:
        servers:
        - address: "127.0.0.1:3306" 

如有安全策略需求可添加 tcp middlewares 中间件功能配置

  • inFlightConn 可同时并行连接数,可限制最大的并行连接数
  • ipWhiteList 白名单ip列表,可限制仅已配置的ip或ip段源可访问此 tcp 服务
tcp:
  routers:
    Route_TCP:
      rule: "HostSNI(`*`)"      
      middlewares:           # 引用中间件
        - "Max_Conn"
        - "Limit_Local_Access"  
      service: "mysql"
  
  # 定义中间件 
  middlewares:
    Max_Conn:
      inFlightConn:           
        amount: 10 
    Limit_Local_Access:
      ipWhiteList:         
        sourceRange:     
          - "127.0.0.1/32"
          - "192.168.0.0/16"  

  services:
    mysql:
      loadBalancer:
        servers:
        - address: "127.0.0.1:3306" 

场景二: HTTP 应用代理

描述:实现对后多台http服务服务器集群负载均衡,代理端口为8088

1)全局配置 全局配置为 Traefix 静态配置项,主要指定 entryPoints 和 providers

#/etc/traefik/traefik.yml 
global:
  checkNewVersion: true
  sendAnonymousUsage: true
entryPoints:                       #入口监听配置
  mysql:                           
    address: :3406                 
  web:                             #添加自定义的名称--web
    address: :8088                 #定义本地网络监听地址与端口 -- 8088
log:
  filePath: log/traefik.log
  format: json
accessLog:
  filePath: /home/lighthouse/traefix/access.log
api:
  insecure: true
providers:
  file:
    filename: /etc/traefik/dynamic_config.yml

2)动态配置

# /etc/traefik/dynamic_config.yml
http:
  routers:
    Route_Web:
      rule: "Host(`test.com`)"      #基于请求域规则定义进行路由匹配,支持丰富的路由规则定义语法
      service: "webserver"          #引用服务 --webserver自定义名称
  #定义服务    
  services:
    webserver:
      loadBalancer:                 # RR 负载模式
        healthCheck:                # 后端服务健康检测
          path: /ping
          interval: "6s"
          timeout: "3s"
        servers:                      
        - url: "http://192.168.0.10" 
        - url: "http://192.168.0.11" 

http 路由规则

查看更多路由规则定义官方文档参考

http 中间件

查看更多中间件定义官方文档参考

相关文章

网友评论

      本文标题:Traefik轻量级应用代理利器--入门实践

      本文链接:https://www.haomeiwen.com/subject/xlzoprtx.html