处理服务器在多个Pod中发送的事件

时间:2020-07-02 10:20:28

标签: node.js kubernetes redis server-sent-events

我正在使用基于NodeJS的服务器,该服务器公开/events端点,以通过sse将事件发送给客户端。除了这个端点,我还有多个用于POST请求处理的路由。

我试图弄清楚如何以适用于多个吊舱的方式设置所有这些设置。现在,我已经设置了负载平衡器,以保持用户与pod之间的连接保持活动状态,直到客户端断开连接,但是当客户端发出发布请求时,这些请求可以路由到其他pod。

我需要确保每个Pod都能发出带有用户ID的消息,并确保该事件被与用户保持开放连接并发送到客户端的正确Pod捕获。

我已经考虑过使用redis,但是想知道NodeJS或Kubernetes是否公开了不需要的东西。

1 个答案:

答案 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/