【问题标题】:Scaling node.js express app using docker swarm使用 docker swarm 扩展 node.js express 应用程序
【发布时间】:2020-02-17 17:40:32
【问题描述】:

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

我遇到的问题是:

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

我尝试过的:

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

  2. 尝试仅在工作节点(我添加到集群中的新节点)上运行 express 应用程序,并且它设法将 post 请求发送给它。

  3. 尝试仅在主节点上运行应用程序 - 成功了。

两台服务器都在我创建的负载平衡器后面(不知道这是否是一个问题) 两台服务器都在 AWS 上的 EC2 实例上运行 基本图像 - 节点:8-alpine 快递版:“快递”:“^4.17.1”,

【问题讨论】:

  • 你的意思是两台服务器有相同的DNS?你在使用 DNS 负载平衡吗?
  • @slebetman,每个 ip 都有一个 A 记录 - 例如 A --> smart.mydomain.com --> ip1 A --> smart.mydomain.com --> ip2
  • 同一个域名?
  • @slebetman,是的。这是问题吗?
  • 因为我已经读到同一子域可以有 2 A 记录具有不同的 ips @slebetman

标签: node.js docker docker-compose docker-swarm


【解决方案1】:

过了一会儿,我发现问题在于我没有在两个 ec2 实例的公共 IP 上运行 swarm。

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

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

加入群体也是如此。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-22
    • 1970-01-01
    • 2012-01-29
    • 2014-11-15
    • 2017-06-10
    • 2015-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多