【发布时间】: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