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

时间:2014-04-29 12:07:31

标签: node.js openshift restify

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

listening at http://127.2.188.1:8080

我使用了通常的环境参数来绑定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

如果我在我的应用程序的公共网址(/something/1337)上调用相同的端点(http://myapp-myusername.rhcloud.com),则会收到503, No server is available to handle this request

由于我的应用程序已缩放,可能是某些配置问题,如果是,我该如何解决?

1 个答案:

答案 0 :(得分:5)

发生这种情况的原因是因为OpenShift使用HAProxy作为可伸缩应用程序中的负载均衡器。 HAProxy配置为ping root“/”url以进行运行状况检查,以确定您的应用程序是启动还是关闭。在你的应用程序中,你没有在根URL配置任何东西,所以当HAProxy ping'/'它得到503时,因此你的应用程序就像这样。有两种方法可以解决这个问题

  1. 创建index.html并将其推送到OpenShift应用程序
  2. 更好的解决方案是配置HAProxy配置文件。使用rhc ssh --app命令将SSH连接到主设备,然后将目录更改为haproxy/conf,然后将option httpchk GET /更新为option httpchk GET /valid_location,最后使用rhc cartridge-restart重新启动HAProxy墨盒haproxy。您可以转到http://myapp-myusername.rhcloud.com/haproxy-status
  3. 查看您的档位状态

    希望这会对你有所帮助。