我已经在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
。
由于我的应用程序已缩放,可能是某些配置问题,如果是,我该如何解决?
答案 0 :(得分:5)
发生这种情况的原因是因为OpenShift使用HAProxy作为可伸缩应用程序中的负载均衡器。 HAProxy配置为ping root“/”url以进行运行状况检查,以确定您的应用程序是启动还是关闭。在你的应用程序中,你没有在根URL配置任何东西,所以当HAProxy ping'/'它得到503时,因此你的应用程序就像这样。有两种方法可以解决这个问题
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。希望这会对你有所帮助。