繁体   English   中英

在Azure中作为App Service运行的node.js应用程序的暂存插槽为我提供了EADDRINUSE

[英]Staging slot of node.js app running in Azure as App Service gives me EADDRINUSE

我有一个在Azure中作为App Service运行的node.js应用程序。 它通过mongoose + tunnel-ssh连接到MongoDB。 我有多个应用服务部署在不同的地理位置,一切正常。

当我创建一个临时插槽时,我从ssh隧道获取了关于staging实例的错误(注意:prod.slot仍然可以正常工作):

{"code":"EADDRINUSE", "errno":"EADDRINUSE", "syscall":"listen", "address":"127.0.0.1", "port":27017}

对我来说,似乎暂存槽正在同一个VM上运行并尝试使用相同的端口作为生产,这就是它无法与DB建立连接的原因。 这意味着我可能无法扩展应用程序,因为另一个实例会遇到同样的问题。

如何为分段和其他实例(缩放时)解决这个问题?

暂存可以使用不同的端口,但如何动态设置它以便它也适用于缩放实例?

根据您的错误消息,您似乎忘记为插槽Web应用程序配置MongoDB的连接字符串。

我们可以在Azure App Service设置登台环境的说明中找到句子:

部署插槽实际上是具有自己的主机名的实时应用程序。 可以在两个部署插槽(包括生产插槽)之间交换应用程序内容和配置元素。

实质上,您可以将插槽视为单独的Web应用程序。 因此,请仔细检查插槽应用程序中的应用程序配置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM