0

我们在 nginx 层进行了 kerberos 身份验证,并希望作为反向代理连接到 deepstream.io 实例。从我对文档的阅读来看,将网络服务器放在 deepstream.io 实例前面似乎会影响性能。此外,还有谁做负载平衡的问题——通常是在 nginx 层,但 deepstream.io 似乎确实具有要求其他实例处理负载的内置功能(通过消息传递

让 deepstream.io 实例与 Web 服务器良好运行的最佳方法是什么?在 Node.js 中重新实现 kerberos 身份验证并非易事。

4

1 回答 1

1

在 Nginx、HAProxy 等背后部署和负载平衡深度流是可能的(也是一个好主意)。但有一些事情需要注意:

engine.io、websockets 和粘性会话

Deepstream 使用engine.io ( socket.io后面的传输层)连接到浏览器。

engine.io 使用了许多不同的传输机制,最值得注意的是长轮询(保持 http 请求打开直到需要发送数据)和 WebSockets。

对于长轮询,来自同一个客户端的所有请求都被路由到同一个 deepstream 服务器至关重要,因此请确保在您的 nginx 上游组中启用粘性/持久会话(只需添加ip_hash 指令)。对于 websocket,转发 http 更新标头很重要。

在您的深层节点之间同步数据/消息

确保您的 deepstream 节点通过缓存和消息总线相互连接。您可以选择缓存和消息传递系统,但最简单的方法是两者都使用Redis。查看“什么是最简单的生产就绪设置?”部分 https://deepstream.io/tutorials/connectors-and-deployment.html的底部。

来自其他客户端(例如 NodeJS)的 TCP 连接 engine.io 主要用于浏览器客户端,后端进程可以直接通过 TCP 连接。负载平衡 TCP 连接完全可以使用 NginX,但需要在您的配置中使用额外的流组。

于 2016-02-20T10:59:01.617 回答