我有一个OpsWorks Nodejs堆栈。我设置了多个nodejs应用程序。现在的问题是所有nodejs server.js脚本都在端口80上侦听以进行亚马逊生命检查,但该端口只能由一个端口使用。 我不知道如何解决这个问题。我已阅读亚马逊文档但无法找到解决方案。我读到我可以尝试更改部署配方变量以将此生命检查设置为不同的端口,但它不起作用。有什么帮助吗?
答案 0 :(得分:5)
我和这个问题争了一段时间,最终找到了一个非常简单的解决方案。
端口在deploy cookbook的属性中设置...
https://github.com/aws/opsworks-cookbooks/blob/release-chef-11.10/deploy/attributes/deploy.rb
行......
default[:deploy][application][:nodejs][:port] = deploy[:ssl_support] ? 443 : 80
你可以使用堆栈的自定义json覆盖它,例如:
{
"deploy" : {
"app_name_1": {
"nodejs": {
"port": 80
}
},
"app_name_2": {
"nodejs": {
"port": 3000
}
}
},
"mongodb" : {
...
}
}
现在/etc/monit.d/node_web_app-.monitrc中的monitrc文件应该反映它们各自的端口,monit应该让它们保持活着!
答案 1 :(得分:0)
我的解决方案是实现正在侦听端口80的生命检查节点服务。当对该服务进行亚马逊生命检查请求时,它响应并执行其自己的逻辑以检查所有服务的健康状况。它很棒。