使用 docker swarm 扩展 node.js Express 应用
Scaling node.js express app using docker swarm
我正在尝试扩展 运行 在 docker 群中的快速服务器。
当 运行 我的堆栈和同一台机器上有 2 个 express 服务器的副本时,一切正常,但是一旦我将另一台服务器添加到 swarm 并且我的 express 应用程序 运行 在每台服务器上都有一个容器那么问题开始了。
我遇到的问题是:
- POST 来自 UI
的请求
- OPTIONS 预检已执行 - 从我的后端获取 204 状态代码
- 请求挂起,POST 未发送。
我尝试过的:
试图查看它是否与 CORS 有关,但我不这么认为,因为我设法使其在一台服务器上工作,该服务器也来自不同的来源前端。
尝试 运行仅在工作节点(我添加到集群的新节点)上启用 express 应用程序,并且它设法获得了 post 请求.
尝试 运行仅在主节点上安装应用程序 - 它有效。
两台服务器都在我创建的负载均衡器后面(不知道这是否是表达时的问题)
aws 上的 EC2 实例上的两台服务器 运行
基本图像 - node:8-alpine
表达版本:"express": "^4.17.1",
一段时间后,我发现问题是我没有运行 swarm 在两个 ec2 实例的 public IP 上。
确保在初始化 swarm 时监听服务器的 public ip。
docker swarm init --advertise-addr <public ip>
加入集群也是如此。
我正在尝试扩展 运行 在 docker 群中的快速服务器。 当 运行 我的堆栈和同一台机器上有 2 个 express 服务器的副本时,一切正常,但是一旦我将另一台服务器添加到 swarm 并且我的 express 应用程序 运行 在每台服务器上都有一个容器那么问题开始了。
我遇到的问题是:
- POST 来自 UI 的请求
- OPTIONS 预检已执行 - 从我的后端获取 204 状态代码
- 请求挂起,POST 未发送。
我尝试过的:
试图查看它是否与 CORS 有关,但我不这么认为,因为我设法使其在一台服务器上工作,该服务器也来自不同的来源前端。
尝试 运行仅在工作节点(我添加到集群的新节点)上启用 express 应用程序,并且它设法获得了 post 请求.
尝试 运行仅在主节点上安装应用程序 - 它有效。
两台服务器都在我创建的负载均衡器后面(不知道这是否是表达时的问题) aws 上的 EC2 实例上的两台服务器 运行 基本图像 - node:8-alpine 表达版本:"express": "^4.17.1",
一段时间后,我发现问题是我没有运行 swarm 在两个 ec2 实例的 public IP 上。
确保在初始化 swarm 时监听服务器的 public ip。
docker swarm init --advertise-addr <public ip>
加入集群也是如此。