我已经在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';
事实上,如果我在登录时调用我的REST服务ssh
,我会得到正确的响应:
curl http://127.2.188.1:8080/something/1337
如果我/something/1337
在我的应用程序(http://myapp-myusername.rhcloud.com
)的公共URL上调用相同的端点(),我会得到一个503, No server is available to handle this request
.
由于我的应用程序已缩放,可能是一些配置问题,如果是,我该如何解决?
之所以发生这种情况,是因为OpenShift使用HAProxy作为可伸缩应用程序中的负载均衡器.HAProxy配置为ping root"/"url以进行运行状况检查,以确定您的应用程序是启动还是关闭.在您的应用程序中,您还没有在根URL上配置任何内容,因此当HAProxy ping"/"它获得503时,因此您的应用程序就像这样.有两种方法可以解决此问题
创建一个index.html并将其推送到OpenShift应用程序
更好的解决方案是配置HAProxy配置文件.SSH使用rhc ssh --app
命令进入主设备,然后将目录更改为haproxy/conf
,然后更新option httpchk GET /
到option httpchk GET /valid_location
,最后使用rhc cartridge-restart --cartridge haproxy重启HAProxy.您可以访问http://myapp-myusername.rhcloud.com/haproxy-status来查看齿轮的状态.
希望这会帮助你.