在nginx后面部署 deepstream.io

Deploying deepstream.io behind nginx

本文关键字:deepstream io 部署 nginx      更新时间:2023-09-26

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

让 deepstream.io 实例与 Web 服务器很好地配合使用的最佳方法是什么?在 Node 中重新实现 kerberos 身份验证并非易事。

在Nginx,HAProxy等后面部署和负载平衡深流是可能的(也是一个好主意(。不过,有几点需要注意:

engine.io、网络套接字和粘性会话

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

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

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

在深度节点之间同步数据/消息

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

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