在分配唯一端口的同时扩展nodejs应用程序



我正在尝试扩展我的游戏服务器(nodejs(,其中实例应该有唯一的端口分配给它们,并且实例是独立的(没有任何类型的负载平衡(,并且知道分配给它们的端口是什么(理想情况下是通过env变量?(。我尝试过使用docker swarm,但它没有指定端口范围的选项,我找不到任何方法来分配或将分配的端口传递给实例,所以它知道它运行的端口,例如通过env变量。

理想的解决方案如下:

Instance 1: hostIP:1000
Instance 2: hostIP:1001
Instance 3: hostIP:1002
... etc

现在,我已经通过使用常规Docker(非群(绑定到主机网络并传递env变量PORT来实现这一点,但这样我就必须手动启动所需的游戏服务器。

我的节点应用程序使用"process.env.PORT"绑定到主机的IP地址:端口

对于我可以使用什么解决方案来扩展我的应用程序,有什么意见吗?

您可以尝试不同的方法。

  • 使用docker compose和外部服务从docker.sock中提取数据,如下所示。如何从node.js应用程序中获取docker映射的端口
  • 使用redis或任何键值存储服务来存储端口信息,并在每次启动新实例时获取该信息。最简单的解决方案是使用redisincr命令来获取下一个空闲号码,但它有一些局限性

不确定你的意思是什么?你能提供更多细节吗?

最新更新