【问题标题】:AWS Load Balancing a Node.js App on port 3000AWS 负载平衡端口 3000 上的 Node.js 应用程序
【发布时间】:2012-09-17 14:39:38
【问题描述】:

我有一个 Node.js Express Web 应用程序,它使用默认端口 3000,并通过弹性 ip 在 Ubuntu EC2 实例上响应良好。我正在尝试设置 AWS 中内置的负载平衡,但似乎无法通过良好的运行状况检查

设置 2 个 ubuntu 服务器,在端口 3000 上为应用程序提供服务。

将端口 80 的负载均衡器侦听器设置为路由到实例端口 3000,并尝试将 3000 路由到 3000。

将 amazon-elb/amazon-elb-sg 安全组添加到我的实例安全组中以防万一。

将健康检查设置为端口 80 和 3000 到项目中的许多有效 url。

我在这里遗漏了什么?

更新:

原来这是我忽略的最简单的事情。不知何故,我的实际实例位于仅打开 80 个的安全组中,我只需要添加一个规则即可打开 3000 个。不敢相信我错过了。

【问题讨论】:

  • 你能指定你的健康检查配置吗?
  • 这只是通过 aws 管理控制台。将其设置为端口 3000 或 80 和 /ping 的 url。这是 express 应用程序中的有效 url。
  • 那么完整的健康检查配置是什么?您是否尝试过 TCP ping 而不是 HTTP 进行健康检查?您是否已验证您的 /ping URL 返回 200 代码?您是否删除了弹性 IP?
  • 我尝试过 TCP ping 而不是 HTTP。我还验证了 /ping url 返回 200。我已将运行状况检查设置为 80,并让 apache 返回默认值,让运行状况检查通过,但是当我在 80 以外的任何内容上点击负载平衡 url 时,我什么也得不到。是不是我的 Listeners 设置不正确?
  • 我应该使用 nginx、haproxy 还是 apache mod_proxy,还是应该只在 3000 上工作,听众指向 80 到 3000?

标签: node.js amazon-ec2 amazon-web-services load-balancing


【解决方案1】:

如果您将负载均衡器设置为仅将端口 80 上的传入请求转发到后端实例上的端口 3000,那么在尝试 80 以外的端口时您应该不会收到任何响应。如果您针对端口发出请求3000(即http://yourdomain.com:3000/uri),您需要让负载均衡器还将端口 3000 上的传入请求转发到实例上的端口 3000。

如果您在实例上仅使用端口 3000,那么您需要确保您的运行状况检查指向端口 3000。(即 TCP ping 3000,或针对您的 /ping 服务的 HTTP 到端口 3000)。

【讨论】:

  • 你能告诉我我应该在应用程序负载均衡器中写什么规则以使其与这样的域一起工作 - yourdomain.com:3000/api
  • @SachinVairagi 您可以将另一个侦听器附加到侦听端口 3000 的 NLB
猜你喜欢
  • 2013-06-12
  • 1970-01-01
  • 1970-01-01
  • 2017-02-11
  • 1970-01-01
  • 2010-10-25
  • 1970-01-01
  • 2017-09-21
  • 2018-02-26
相关资源
最近更新 更多