【发布时间】:2017-06-30 01:53:31
【问题描述】:
假设我有一个数据库副本集群,我想在前端提供这些副本。这些数据库相互复制。如果可能,我能否让 Traefik 为相同的客户端 IP 提供相同的后端,这样即使数据库仍在复制最新状态,UI 也可以保持一致?
【问题讨论】:
标签: cluster-computing reverse-proxy traefik
假设我有一个数据库副本集群,我想在前端提供这些副本。这些数据库相互复制。如果可能,我能否让 Traefik 为相同的客户端 IP 提供相同的后端,这样即使数据库仍在复制最新状态,UI 也可以保持一致?
【问题讨论】:
标签: cluster-computing reverse-proxy traefik
您似乎要求的是基于每个 IP 地址的粘性会话(也称为会话亲和性)。
Traefik 支持基于 cookie 的粘性,这意味着如果启用了相关的 Traefik 选项,则会在初始请求中分配一个 cookie。随后的请求将到达同一个后端,除非它无法到达,此时将选择一个新的粘性后端。
该选项可以这样启用:
[backends]
[backends.backend1]
[backends.backend1.loadbalancer]
sticky = true
可以在here 找到文档(搜索“粘性会话”)。
如果您使用 Traefik 运行动态提供程序之一(例如 Docker、Kubernetes、Marathon),通常可以为每个前端设置可用的标签/标签/注释。 TOML configuration file documentation 包含所有详细信息。
如果您正在寻找真正的基于 IP 地址的粘性,其中 IP 地址空间经过哈希处理,流量均匀分布在所有后端:尽管有一个 open feature request,但这还不可能。
【讨论】: