小编Mad*_*die的帖子

用于 websocket 应用程序的 nginx-ingress 粘性会话

我在 K8s 集群中有一个 websocket .net 应用程序。我需要使用 nginx 开源为 websocket 实现粘性会话。

我已经阅读了 nginx 和 kubernetes 的文档。 https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/nginx-configuration/annotations.md#session-affinity

它说我们可以使用以下配置进行粘性会话:

nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/session-cookie-name: "ingresscoookie"
nginx.ingress.kubernetes.io/session-cookie-hash: "sha1"
nginx.ingress.kubernetes.io/session-cookie-expires: "172800"
nginx.ingress.kubernetes.io/session-cookie-max-age: "172800
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用。我在这里尝试了 kubernetes 提供的示例代码https://github.com/kubernetes/ingress-nginx/blob/master/docs/examples/affinity/cookie/ingress.yaml

这对我有用,所以我相信基于 cookie 的会话亲和力似乎不适用于 websocket。

在进一步挖掘文档时,它说我可以使用 IP 哈希算法。所以我尝试使用下面的注释。

nginx.ingress.kubernetes.io/upstream-hash-by: "$remote_addr"

Run Code Online (Sandbox Code Playgroud)

这也失败了。请求仍然使用默认算法进行平衡。

如何实现会话持久性?

websocket sticky-session azure-aks nginx-ingress

6
推荐指数
1
解决办法
1463
查看次数