使用 docker swarm 扩展 node.js Express 应用

Scaling node.js express app using docker swarm

我正在尝试扩展 运行 在 docker 群中的快速服务器。 当 运行 我的堆栈和同一台机器上有 2 个 express 服务器的副本时,一切正常,但是一旦我将另一台服务器添加到 swarm 并且我的 express 应用程序 运行 在每台服务器上都有一个容器那么问题开始了。

我遇到的问题是:

  1. POST 来自 UI
  2. 的请求
  3. OPTIONS 预检已执行 - 从我的后端获取 204 状态代码
  4. 请求挂起,POST 未发送。

我尝试过的:

  1. 试图查看它是否与 CORS 有关,但我不这么认为,因为我设法使其在一台服务器上工作,该服务器也来自不同的来源前端。

  2. 尝试 运行仅在工作节点(我添加到集群的新节点)上启用 express 应用程序,并且它设法获得了 post 请求.

  3. 尝试 运行仅在主节点上安装应用程序 - 它有效。

两台服务器都在我创建的负载均衡器后面(不知道这是否是表达时的问题) aws 上的 EC2 实例上的两台服务器 运行 基本图像 - node:8-alpine 表达版本:"express": "^4.17.1",

一段时间后,我发现问题是我没有运行 swarm 在两个 ec2 实例的 public IP 上。

确保在初始化 swarm 时监听服务器的 public ip。

docker swarm init --advertise-addr <public ip>

加入集群也是如此。