ASP.NET Core 应用程序的多主机部署

use*_*582 5 asp.net iis load-balancing nginx asp.net-core

我很困惑,因为我没有看到任何关于如何使用 HA 和多主机部署托管 ASP.NET Core/.NET Core 应用程序的博客或说明。所有示例都是:

1) One NGINX reverse-proxy, one Kestrel
2) One IIS reverse-proxy, one Kestrel
Run Code Online (Sandbox Code Playgroud)

并且两个组件都在同一主机上。在实际生产环境中,您可能有 LB 服务发现、多个前端、多个后端等。但对于这种情况,没有任何说明。所以我的问题是针对多主机环境:

  • 我是否将一个 IIS/NGINX 部署为 LB/反向代理,并将请求重定向到在许多单独的 VM:s 上运行的 Kestrel,即各种不同的 IP:s?
  • 或者我是否在一台主机上运行 NGINX/F5 以进行负载平衡,然后将 http 流量路由到运行 IIS+Kestrel 的各种 VM,或者只是 Kestrel?由于 NGINX 充当 LB,此设置中是否需要 IIS?
  • 如果我将 IIS 或 NGINX 作为反向代理运行,它们能否在不同的 VM 上保持 Kestrel 的活动状态,或者每个 Kestrel 是否只需要一个 IIS/NGINX 来保持活动状态?即 Kestrel 进程必须与反向代理在同一台主机上?

非常欢迎所有答案,并在此先感谢!:)

Dab*_*oul 1

我的设置是使用一台虚拟机(IIS 作为 LB)+ 多台虚拟机(IIS + Kestrel)。它对我的使用效果很好,但我很好奇其他人是否有不同的建议。然后这取决于你在做什么,如果你使用加密,机器密钥需要在虚拟机之间共享,你可能还需要在虚拟机之间共享会话(https://www.exceptionnotfound.net/finding-and-using-asp -net-session-in-core-1-0/ ),将内容存储在数据库中...