我正在使用基于NodeJS的服务器,该服务器公开/events
端点,以通过sse将事件发送给客户端。除了这个端点,我还有多个用于POST请求处理的路由。
我试图弄清楚如何以适用于多个吊舱的方式设置所有这些设置。现在,我已经设置了负载平衡器,以保持用户与pod之间的连接保持活动状态,直到客户端断开连接,但是当客户端发出发布请求时,这些请求可以路由到其他pod。
我需要确保每个Pod都能发出带有用户ID的消息,并确保该事件被与用户保持开放连接并发送到客户端的正确Pod捕获。
我已经考虑过使用redis,但是想知道NodeJS或Kubernetes是否公开了不需要的东西。
答案 0 :(得分:1)
您应该可以通过服务或负载平衡器来做到这一点。
通过服务,您可以使用会话关联性:
kind: Service
apiVersion: v1
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
- name: http
protocol: TCP
port: 80
targetPort: 80
sessionAffinity: ClientIP
使用loadbalancer粘性会话:
https://kubernetes.github.io/ingress-nginx/examples/affinity/cookie/