繁体   English   中英

Nginx Node.js负载均衡共享信息

[英]nginx nodejs load balance sharing information

我想使用nginx在不同端口上运行的节点应用程序的多个实例之间进行负载平衡。 我想知道的是-运行在不同端口上的不同实例是否可以彼此通信。 例如,如果我在一个实例上进行了聊天,由于负载平衡,人们可以与在不同端口上运行的我的应用程序的另一个实例进行通信吗? 如果可以,怎么办? 如果没有,我该怎么做。 非常感谢您在此方面的帮助。

好吧,这里有两组解决方案(请注意,在第二种方法中,没有共享信息,您只是以“更智能”的方式平衡负载)

  1. 在应用程序级别。 您必须配置您的应用程序或node.js(我不知道节点是否支持其他应用程序服务器的支持),才能访问共享后端,如评论中提到的@cejast。 您有几种方法可以实现这一目标,所有这些方法的目标都是使您的应用程序的每个实例(无论位于何处)都可以访问所有用户的实时信息。
  2. 具有负载均衡的方法。 您可以通过一种特定的负载平衡方法来解决此问题:nginx支持ip_hash(有关ip_has和其他nginx支持的负载平衡方法,请参见此处 。)使用ip_hash,nginx总是将相同的ip(实际上是/ 24子网)发送到同一实例,因此您赢了不必担心实例必须处理未知的会话。

如果您将遵循负载平衡方法来解决问题,建议您确切了解其工作原理,因为在某些情况下可能无法满足您的需求。

例如,我前面提到的nginx ip_hash创建了一个散列,该散列用于IPv4的前3个八位字节的粘性,这意味着如果您的应用程序从特定的C类子网获得大部分流量,则负载平衡将无法达到这种效果。 在这种情况下,应该使用remote_addr变量。

这是Nginx负载平衡的不错参考。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM