node.js - 无法从 rhcloud.com 应用程序 URL 访问 Openshift 上的 NodeJS 应用程序

标签 node.js openshift restify

我已经部署了一个正在运行的 NodeJS REST 服务(使用 Restify 构建),该服务已在 Openshift 上正确启动,因为我可以读取日志:

listening at http://127.2.188.1:8080

我使用了常用的环境参数来绑定(bind)IP和端口:

vars.ipaddress = process.env.OPENSHIFT_NODEJS_IP;
vars.port = process.env.OPENSHIFT_NODEJS_PORT || '8080';

事实上,如果我在使用 ssh 登录时调用 REST 服务,我会得到正确的响应:

curl http://127.2.188.1:8080/something/1337

如果我在应用程序的公共(public) URL (http://myapp-myusername.rhcloud.com) 上调用相同的端点 (/something/1337),我收到 503,没有服务器可用于处理此请求

由于我的应用程序已扩展,这可能是一些配置问题,如果是,我该如何解决?

最佳答案

发生这种情况的原因是 OpenShift 在可扩展应用程序中使用 HAProxy 作为负载均衡器。 HAProxy 配置为 ping root '/' url 进行运行状况检查,以确定您的应用程序是正常运行还是关闭。在您的应用程序中,您尚未在根 url 处配置任何内容,因此当 HAProxy ping '/' 时,它会得到 503,因此您的应用程序的行为如下。有两种方法可以解决此问题

  1. 创建一个index.html并将其推送到OpenShift应用程序
  2. 更好的解决方案是配置 HAProxy 配置文件。使用rhc ssh --app命令通过SSH连接到主设备,然后将目录更改为haproxy/conf,然后将选项httpchk GET/更新为option httpchk GET/valid_location,最后使用 rhc Cartridge-restart --cartridge haproxy 重新启动 HAProxy。您可以通过访问http://myapp-myusername.rhcloud.com/haproxy-status来检查您的齿轮状态。 .

希望这对您有帮助。

关于node.js - 无法从 rhcloud.com 应用程序 URL 访问 Openshift 上的 NodeJS 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23364221/

相关文章:

apache tomcat catalina 作为 CORS 过滤器的 Maven 依赖项

node.js - 如何避免在清除 gc 期间快速增加内存?

javascript - JWT Restify 排除路径和所有子路径

javascript - 在 node.js 中启用/禁用断言语句的简单方法

node.js - 如何使用node.js创建MQTT客户端?

javascript - 无法读取未定义的属性“id”

javascript - Node.js、Express 和 Mongoose : automatic CRUD API

javascript - Hapi 在处理程序中显示 undefined variable

docker - 外部 docker 注册表中的镜像更新不会触发部署

kubernetes - Openshift中的JCS集群