Skip to content

Traefik HTTP 服务文档

HTTP 服务

Traefik 服务定义了如何将传入流量分配到后端服务器。

本页涵盖两个主要概念:

  • 服务负载均衡器(Service Load Balancer):使用各种负载均衡策略将流量路由到后端服务器。
  • 高级服务类型:组合多个服务以进行加权分配、镜像或故障转移。

服务负载均衡器

loadBalancer 服务类型将传入请求路由到后端服务器列表。即使只有一台服务器,Traefik 也会使用负载均衡器。

负载均衡策略

负载均衡器支持多种流量分配策略:

  • wrr(Weighted Round Robin,默认):以轮询方式平均分配请求。
  • p2c(Power of Two Choices):随机选择两个服务器并路由到活动连接较少的那个。
  • hrw(Highest Random Weight):使用基于客户端 IP 的哈希实现会话粘性。
  • leasttime:路由到响应时间最短且活动连接最少的服务器。

配置示例

YAML 格式:

yaml
http:
  services:
    my-service:
      loadBalancer:
        strategy: "wrr"
        servers:
          - url: "http://private-ip-server-1/"
            weight: 2
            preservePath: true
        sticky:
          cookie:
            name: "sticky-cookie"
        healthcheck:
          path: "/health"
          interval: "10s"
          timeout: "3s"
        passiveHealthcheck:
          failureWindow: "3s"
          maxFailedAttempts: "3"
        passHostHeader: true
        serversTransport: "customTransport@file"
        responseForwarding:
          flushInterval: "150ms"

Kubernetes 格式:

yaml
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: my-service
spec:
  routes:
    - match: Host(`example.com`)
      kind: Rule
      services:
        - name: my-service
          port: 80

配置选项

字段描述默认值必填
strategy负载均衡策略(wrrp2chrwleasttime)。wrr
servers后端服务器列表。-
servers.url后端服务器 URL。-
servers.weight权重(用于 wrr 策略)。1
servers.preservePath保留原始请求路径。false
sticky会话粘性配置(基于 Cookie)。-
sticky.cookie.nameCookie 名称。-
healthcheck主动健康检查配置。-
healthcheck.path健康检查路径。-
healthcheck.interval检查间隔。30s
healthcheck.timeout检查超时。5s
passiveHealthcheck被动健康检查配置(基于请求结果)。-
passiveHealthcheck.failureWindow失败窗口时长。30s
passiveHealthcheck.maxFailedAttempts标记为不健康前的最大连续失败次数。3
passHostHeader是否将原始 Host 头传递给后端。true
serversTransport用于连接后端的传输配置。-
responseForwarding.flushInterval响应刷新间隔。100ms

何时使用

  • wrr:通用场景,权重分配。
  • p2c:希望后端服务器负载更均匀时使用。
  • hrw:需要会话粘性(如 WebSocket)。
  • leasttime:对延迟敏感的后端。
  • healthcheck:对可靠性要求高的后端。
  • sticky:有状态服务(如购物车、登录会话)。

在生产环境使用 Traefik OSS?

如果你在工作中使用 Traefik,可以考虑为其添加企业级 API 网关能力或获取 Traefik OSS 的商业支持。

基于 MIT 协议发布