nginx nodejs负载均衡共享信息

时间:2016-11-15 18:57:53

标签: node.js nginx load-balancing

我想使用nginx在不同端口上运行的多个节点应用实例之间进行负载均衡。我想知道的是 - 在不同端口上运行的不同实例是否可以相互通信。例如,如果我在一个实例上聊天,由于负载平衡,人们可以与在不同端口上运行的应用程序的另一个实例进行通信吗?如果是这样的话?如果不是,我怎么能做到这一点。 非常感谢你对此的帮助。

1 个答案:

答案 0 :(得分:0)

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

  1. 在应用程序级别。您必须配置您的应用程序或node.js(我不知道节点是否支持其他应用程序服务器),以便在评论中提到的@cejast上访问共享后端。您可以通过多种方法来实现这一目标,在所有这些方法中,目标是应用程序的每个实例,无论它在何处,都可以访问所有用户的实时信息。
  2. 使用负载均衡方法。您可以通过负载均衡的特定方法来解决这个问题nginx支持ip_hash(请参阅here了解ip_has以及nginx支持的其他负载均衡方法。) 使用ip_hash,nginx会将相同的ip(实际上是/ 24子网)发送到同一个实例,因此您不必担心实例必须处理不知道的会话。
  3. 如果您将遵循负载平衡方法来解决您的问题,我建议您确切了解它是如何工作的,因为在某些情况下可能不符合您的需求。

    例如,我之前提到的nginx ip_hash创建了一个哈希值,用于从IPv4的前3个八位字节中获取粘性,这意味着如果您的应用程序从特定类C获得大部分流量,则子网负载均衡获胜不要那么好。在这种情况下,您应该使用remote_addr变量。

    这是nginx load balancing的一个很好的参考。