如何使用nginx作为负载均衡器来平衡发布/订阅websocket请求到节点服务器?

时间:2015-06-15 07:57:37

标签: javascript node.js nginx socket.io rabbitmq

我有以下情况。我想在node.js上使用socket.io库并使用rabbitmq作为排队服务来实现pub / sub模型。特定的websocket可以充当发布者或订阅者,具体取决于查询字符串,如下面的请求

var socket = io.connect("http://localhost:8000?type=publisher&id=1");

与订阅者类似

var socket = io.connect("http://localhost:8000?type=subscriber&id=1");

现在我在后端维护了一个rabbitmq来提供这个功能,与node.js服务器。任何出版商出版商都将进入兔子交换中心,并为每个订户创建不同的主题,具体取决于" id" (在url中指定)它将侦听。在node.js服务器前面没有负载均衡器,一切正常。           但是当我想在节点服务器前面使用nginx作为负载均衡器时,就出现了问题。现在我所遵循的架构是每个节点服务器都有自己的rabbitmq服务器来跟踪发布者和订阅者。因此,为了实现发布/订阅模型,应该强制要求特定id的订阅者请求应该发送到该特定id的发布者请求的同一服务器。但是如何跟踪哪个节点服务器nginx发送了发布者请求,以便可以将对相同id的订阅者的请求定向到同一服务器以实现pub / sub模型。

TL; DR: - 是否有办法将跟踪或请求发送到"上游"中指定的节点服务器。 nginx集群。 ???在nginx中有额外的模块吗?如果没有,那么如何解决我面临的问题?

谢谢

0 个答案:

没有答案