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 | 负载均衡策略(wrr、p2c、hrw、leasttime)。 | wrr | 否 |
servers | 后端服务器列表。 | - | 是 |
servers.url | 后端服务器 URL。 | - | 是 |
servers.weight | 权重(用于 wrr 策略)。 | 1 | 否 |
servers.preservePath | 保留原始请求路径。 | false | 否 |
sticky | 会话粘性配置(基于 Cookie)。 | - | 否 |
sticky.cookie.name | Cookie 名称。 | - | 否 |
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 的商业支持。