我有一个在Azure中作为App Service运行的node.js应用。它通过mongoose + tunnel-ssh连接到MongoDB。我在不同的地理位置部署了多个应用服务,一切正常。
当我创建一个临时插槽时,我从ssh隧道获取了关于暂存实例的错误(注意:prod.slot仍然可以正常工作):
{"code":"EADDRINUSE", "errno":"EADDRINUSE", "syscall":"listen", "address":"127.0.0.1", "port":27017}
对我来说,似乎暂存插槽在同一个虚拟机上运行,并尝试使用与生产相同的端口,这就是为什么它无法建立与数据库的连接。这意味着我可能无法扩展应用程序,因为另一个实例会遇到同样的问题。
如何为分段和其他实例(缩放时)解决这个问题?
暂存可以使用不同的端口,但如何动态设置它以便它也适用于缩放的实例?
答案 0 :(得分:0)
根据您的错误消息,您似乎忘记为插槽Web App应用程序配置MongoDB的连接字符串。
我们可以在Set up staging environments in Azure App Service的指令处找到句子:
部署插槽实际上是具有自己主机名的实时应用程序。可以在两个部署插槽(包括生产插槽)之间交换应用程序内容和配置元素。
基本上,您可以将插槽视为单独的Web应用程序。因此,请仔细检查插槽应用程序中的应用程序配置。