Loading

Traefik新一代反代服务器,兼容所有主要的集群技术(一)

简介

Traefik 是一种开源 应用程序代理 ,它使发布服务成为一种有趣和轻松的体验。 它代表您的系统接收请求,并确定哪些组件负责处理这些请求,并安全地路由它们。
除了众多功能外,Traefik 的与众不同之处在于它会自动为您的服务发现正确的配置。 当 Traefik 检查您的基础设施时,奇迹就会发生,它会找到相关信息并发现哪些服务为哪个请求提供服务。
Traefik 原生兼容所有主要的集群技术,例如 Kubernetes、Docker Swarm、AWS 等等;并且可以同时处理许多问题。(它甚至适用于在裸机上运行的传统软件)。
使用 Traefik,无需维护和同步单独的配置文件:一切都自动实时发生(无需重启,无需连接中断)。 使用 Traefik,您可以花时间为系统开发和部署新功能,而不是配置和维护其工作状态。

官网教程

Traefik 快速入门 - Traefik

修改的第一个yaml示例

name: traefik
services:
  reverse-proxy:
    # 官方 v3.3 镜像
    image: traefik:v3.3
    # 开启 web UI 和 监听 docker
    command: --api.insecure=true --providers.docker
    ports:
      # HTTP 端口。18080是为了突破家用宽带的端口封锁。
      - "18080:80"
      # Web UI 端口(由 --api.insecure=true 开启)18443也是为了突破家用宽带的封锁
      - "18443:8080"
    volumes:
      # 通过映射,来监听本地docker进程
      - /var/run/docker.sock:/var/run/docker.sock
networks:
  default:
    name: traefiknet
    enable_ipv6: true

启动测试

docker-compose up -d reverse-proxy

*********:18443/api/rawdata
*********:18443/dashboard

这就是JSON返回和web UI控制台了。

img
img

增加服务

services:

  ...

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

完整配置

name: traefik
services:
  reverse-proxy:
    # 官方 v3.3 镜像
    image: traefik:v3.3
    # 开启 web UI 和 监听 docker
    command: --api.insecure=true --providers.docker
    ports:
      # HTTP 端口
      - "18080:80"
      # Web UI 端口(由 --api.insecure=true 开启)
      - "18443:8080"
    volumes:
      # 通过映射,来监听本地docker进程
      - /var/run/docker.sock:/var/run/docker.sock
  whoami:
    # 一个暴露API的容器,显示其IP地址
    image: traefik/whoami
    labels:
      - "traefik.http.routers.whoami.rule=Host(`whoami.docker.localhost`)"
networks:
  default:
    name: traefiknet
    enable_ipv6: true

新服务测试

启动,并用curl检测API容器返回容器IP。

docker compose up -d whoami
curl -H Host:whoami.docker.localhost http://127.0.0.1:18080
Hostname: 8d9e4a74c6b8
IP: 127.0.0.1
IP: ::1
IP: 172.19.0.3
IP: fdf7:f9e1:685c::3
IP: fe80::42:acff:fe13:3
RemoteAddr: 172.19.0.2:40956

检查dashboard
img
img
img
img
一个服务器

负载均衡测试

再启动一个whoami

docker compose up -d --scale whoami=2

检查容器,启动了两个whoami

# docker ps -a
CONTAINER ID   IMAGE            COMMAND                  CREATED             STATUS             PORTS                                                                                      NAMES
e767fddb4c73   traefik/whoami   "/whoami"                56 seconds ago      Up 55 seconds      80/tcp                                                                                     traefik-whoami-2
8d9e4a74c6b8   traefik/whoami   "/whoami"                41 minutes ago      Up 41 minutes      80/tcp                                                                                     traefik-whoami-1
c665d6ff88d5   traefik:v3.3     "/entrypoint.sh --ap…"   About an hour ago   Up About an hour   0.0.0.0:18080->80/tcp, [::]:18080->80/tcp, 0.0.0.0:18443->8080/tcp, [::]:18443->8080/tcp   traefik-reverse-proxy-1

用curl检测API容器返回容器IP。

两次返回的IP地址不一样了。

# curl -H Host:whoami.docker.localhost http://127.0.0.1:18080 | grep 'IP: 172'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   421  100   421    0     0   203k      0 --:--:-- --:--:-- --:--:--  205k
IP: 172.19.0.4
# curl -H Host:whoami.docker.localhost http://127.0.0.1:18080 | grep 'IP: 172'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   421  100   421    0     0   219k      0 --:--:-- --:--:-- --:--:--  411k
IP: 172.19.0.3

继续检查dashboard servers
img

posted @ 2025-01-26 14:53  上官飞鸿  阅读(158)  评论(0)    收藏  举报