Traefik入门-物理机部署并实现加权轮询策略

前言

Traefik的功能就不在此赘述了,详见官方文档,使用它的原因主要基于以下三点:

  • 配置文件热加载(无需重启或执行任何命令)。

  • 服务的自动发现与负载均衡。

  • 支持多种Backends(与Kubernetes完美契合)。

本次主要是在物理机上进行Traefik的功能测试

核心概念

  • Providers:用于自动发现平台上的服务,服务来源可以是编排工具、容器引擎或是K/V存储等,如:Docker、Kubernetes、File。

  • EntryPoints:监听流量传入的端口。

  • Routers:分析请求并进行路由,用于连接传入的Requests和后端的Services。

  • Services:转发请求到应用(最终负责处理请求的服务),在Service中可以实现加权负载、健康监测、流量复制等功能。

  • Middlewares:在Router和Service之间,可以拦截请求进行多样化的处理,如:重定向、认证、缓存等。

安装

环境

  • Centos7

  • Traefik v2.9.6

本次采用二进制文件形式安装,安装包网盘链接,提取码:s6t1。也可以去GitHub自行下载。

Traefik采用Go语言编写,将二进制文件解压至/usr/local/bin/目录下即可使用。

配置

Traefik配置分为两种静态配置动态配置两种,启动后会从以下四个位置搜索静态配置文件:

  • /etc/traefik/

  • $XDG_CONFIG_HOME/

  • $HOME/.config/

  • . (工作目录)

静态配置

静态配置用于配置EntryPoints、Providers等,此配置一旦更改必须重启。Traefik静态配置的方法有如下三种:

  • 配置文件(Demo)

  • 命令行参数

  • 环境变量

# api and dashboard configuration
api:
  debug: true
  # 开启Dashboard
  dashboard: true 
  insecure: true

entryPoints:
  web:
    address: ":80"
  websecure:
    address: ":443"

providers:
  # 扫描docker服务 
  docker:
    endpoint: "unix:///var/run/docker.sock"
    # 默认不暴露docker服务,可通过标签"traefik.enable=true"标识需要traefik进行路由的容器。
    exposedByDefault: false
  file:
   # 配置动态文件读取路径,可以是文件或文件夹
   # filename: /etc/traefik/configurations/dynamic.yml
    directory: /etc/traefik/configurations/

# running log
log:
  # level: DEBUG
  filePath: /var/log/traefik/traefik.log

# access log
accessLog:
  filePath: /var/log/traefik/access.log

# ignore tls verfiy
serversTransport:
  insecureSkipVerify: true

动态配置

动态配置用于配置routers、services、middlewares等,此配置可以热更新,无需重启或执行任何命令。

WRR(加权轮询)Demo

# Dynamic configuration
http:

  routers:
    baidu-dashboard-http:
      rule: "Host(`www.baidu.com`)" # Host can be domain or ip.
      service: baidu-service
      entryPoints:
        - web
      # redirect to https
      middlewares:
        - redirect-https
      priority: 1
   
    baidu-dashboard-https:
      entryPoints:
        - websecure
      rule: "Host(`www.baidu.com`)"
      service: baidu-service
      priority: 1
      tls: {}

  services:
    baidu-service:
      weighted:
        services:
        - name: baidu-service1
          weight: 3
        - name: baidu-service2
          weight: 1

    baidu-service1:
      loadBalancer:
        servers:
        - url: "https://xxx.xxx.xx.3:443"

    baidu-service2:
      loadBalancer:
        servers:
        - url: "https://xxx.xxx.xx.4:443"
   
   middlewares:
    redirect-https:
      redirectScheme:
        scheme: https
        permanent: true

测试

访问服务器ip的8080端口即可看到Dashboard。然后直接修改PC端的hosts文件(或DNS服务器添加A记录),将去往www.baidu.com的流量引到Traefik所在的服务器上,所有Traefik代理访问百度的请求都会执行加权轮询策略。

Traefik小白,如果有所帮助,点赞加收藏,后续会继续分享。

欢迎讨论与指教!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值