7

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"

これも失敗しました。リクエストは、デフォルトのアルゴリズムを使用してバランスが保たれています。

セッション永続性を実現するにはどうすればよいですか?

4

1 に答える 1