与 traefik 反向代理的持久和集群连接

Persistent & clustered connections with traefik reverse proxy

假设我有一个数据库副本集群,我想在前端下提供这些副本。这些数据库相互复制。如果可能的话,我能否让 Traefik 为相同的客户端 IP 提供相同的后端服务,这样即使数据库仍在复制最新状态,UI 也可以保持一致?

您似乎要求的是基于每个 IP 地址的粘性会话(也称为会话关联)。

Traefik 支持基于 cookie 的粘性,这意味着如果启用了相关的 Traefik 选项,将在初始请求时分配一个 cookie。随后的请求将到达相同的后端,除非它无法访问,此时将选择一个新的粘性后端。

选项可以这样启用:

[backends]
  [backends.backend1]
    [backends.backend1.loadbalancer]
      sticky = true

可以找到文档 here(搜索 "sticky sessions")。

如果你是 运行 Traefik 的动态提供者之一(例如,Docker、Kubernetes、Marathon),通常有 labels/tags/annotations 个可用的,你可以为每个前端设置。 TOML configuration file documentation 包含所有详细信息。

如果您正在寻找真正的基于 IP 地址的粘性,其中 IP 地址 space 被散列并且流量均匀分布在所有后端:这还不可能,尽管有 open feature request .