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
しかし、これはうまくいかないようです。ここで 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"
これも失敗しました。リクエストは、デフォルトのアルゴリズムを使用してバランスが保たれています。
セッション永続性を実現するにはどうすればよいですか?