0%

tarefik入门使用

traefik概述

traefiknginx 一样,是一款优秀的反向代理工具,或者叫 Edge Router。具有以下优势:

  • 无须重启即可更新配置
  • 自动的服务发现与负载均衡
  • docker 的完美集成,基于 container label 的配置
  • 漂亮的 dashboard 界面
  • metrics 的支持,对 prometheusk8s 的集成

traefik1.x2.x版本差异巨大,本文采用2.4.1版本.

traefik部署

本文采用docker-compose方式部署traefik.

version: '3'
services:
  reverse-proxy:
    image: traefik:2.4.1
    # Enables the web UI and tells Traefik to listen to docker
    # 启用webUI 并告诉Traefile去监听docker的容器实例
    command: --api.insecure=true --providers.docker
    ports:
      # traefik暴露的http端口
      - "80:80"
      # webUI暴露的端口(必须制定--api.insecure=true才可以访问)
      - "8080:8080"
    volumes:
      # 指定docker的sock文件来让traefik获取docker的事件,从而实现动态负载均衡
      - /var/run/docker.sock:/var/run/docker.sock

访问 http://192.168.41.128:8080 traefikdashboard.

traefik使用

新建个whoami服务.

# ...
  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`)"

启动whoami服务:

# 启动一个whoami实例
docker-compose up -d whoami

# 测试
curl -H Host:whoami.docker.localhost http://127.0.0.1
# 输出
Hostname: a656c8ddca6c
IP: 172.27.0.3

# 启动多个whoami实例
docker-compose up -d --scale whoami=2

# 在测试
curl -H Host:whoami.docker.localhost http://127.0.0.1
# 输出自动在两个实例中负载均衡
IP: 172.18.0.4
IP: 172.18.0.3

daskboard上也可以看到http service中有两个whoami实例.

参考链接