如何用Traefik 2 Ingress Route传递WOPISrc参数实现Collabora会话粘滞?
基于Traefik 2实现Collabora CODE的WOPISrc会话粘滞
可以通过Traefik 2实现基于WOPISrc参数的会话粘滞,满足Collabora CODE多副本场景下同一文档请求路由至同一Pod的需求,以下是两种常用配置方式:
方式1:使用Traefik IngressRoute(CRD,推荐)
通过Traefik自定义资源定义(CRD)配置哈希粘滞,指定以WOPISrc查询参数作为哈希源:
apiVersion: traefik.containo.us/v1alpha1 kind: IngressRoute metadata: name: collabora-ingress spec: entryPoints: - websecure routes: - match: Host(`collabora.your-domain.com`) kind: Rule services: - name: collabora-service port: 9980 sticky: hash: source: "Query(`WOPISrc`)" tls: certResolver: default
方式2:使用Kubernetes原生Ingress(注解方式)
通过Traefik专属注解配置会话粘滞,同样基于WOPISrc参数做哈希:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: collabora-ingress annotations: traefik.ingress.kubernetes.io/service.sticky.hash.source: "Query(`WOPISrc`)" spec: rules: - host: collabora.your-domain.com http: paths: - path: / pathType: Prefix backend: service: name: collabora-service port: number: 9980 tls: - hosts: - collabora.your-domain.com secretName: collabora-tls-secret
原理说明
Traefik会根据WOPISrc参数的内容计算哈希值,将同一文档的所有请求映射到固定的Collabora Pod,和Nginx的hash $arg_WOPISrc、HAProxy的stick-table逻辑一致,确保同一文档的编辑会话始终路由到同一个实例。
内容的提问来源于stack exchange,提问作者joepa37
相关产品推荐
相关产品推荐

