1

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

当我创建一个暂存槽时,我从 ssh 隧道为暂存实例收到以下错误(注意:prod.slot 仍然可以正常工作):

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

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

对于暂存和其他实例(缩放时),我该如何解决这个问题?

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

4

1 回答 1

0

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

正如我们可以在 Azure App Service 中设置暂存环境的说明中找到的句子:

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

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

于 2017-03-06T03:33:57.810 回答