ASP.NET 核心应用程序的多主机部署
Multi-host deployment of ASP.NET Core applications
我很困惑,因为我没有看到任何关于如何使用 HA 和多主机部署来托管 ASP.NET Core/.NET Core 应用程序的博客或说明。所有示例都是:
1) One NGINX reverse-proxy, one Kestrel
2) One IIS reverse-proxy, one Kestrel
并且两个组件都在同一台主机上。在现实生活中的生产环境中,您可能有 LB 服务发现、多个前端、多个后端等。但对于这种情况,没有任何说明。所以我的问题是针对多主机环境:
- 我是否将一个 IIS/NGINX 部署为 LB/Reverse-proxy,并将请求重定向到多个单独的 VM:s 上的 Kestrels 运行ning,即各种不同的 IP:s?
- 或者我 运行 一个 NGINX/F5 用于一台主机上的负载平衡,然后将 http 流量路由到各种 VM:s 那个 运行 IIS+Kestrel,或者只是红隼?此设置中是否需要 IIS,因为 NGINX 充当 LB?
- 如果我 运行 IIS 或 NGINX 作为反向代理,它们能否在不同的 VM:s 上保持 Kestrel 存活,或者每个 Kestrel 是否只需要一个 IIS/NGINX 来保持存活? IE。 Kestrel 进程必须与反向代理位于同一主机上吗?
非常欢迎大家的回答,在此先致谢! :)
我有一个设置,其中一个 VM 使用(IIS 作为 LB)+ 多个 VM(IIS + Kestrel)。它适合我的使用,但我很想知道其他人是否有不同的建议。然后这取决于你在做什么,如果你使用加密,机器密钥需要在虚拟机之间共享,你可能还需要在虚拟机之间共享会话(https://www.exceptionnotfound.net/finding-and-using-asp-net-session-in-core-1-0/),将东西存储在数据库中......
我 运行 NGINX 在边缘作为负载均衡器和 SSL 终止以及带有 IIS + Kestrel 服务 MVC 的多个服务器。这对我们来说效果很好。您可能不需要它,但我发现 NGINX 比您使用 IIS 可以做的任何事情都更加复杂和强大。显然 F5 之类的也可以。以前我也 运行 有一段时间使用 AWS ELB 负载均衡器,它也工作正常,只是没有太多可配置性。所以取决于你的需求。
如前所述,每个盒子上都需要 IIS 运行 kestrel 来管理进程。您可以通过其他方式执行此操作,但使用 IIS 是最简单的。
我很困惑,因为我没有看到任何关于如何使用 HA 和多主机部署来托管 ASP.NET Core/.NET Core 应用程序的博客或说明。所有示例都是:
1) One NGINX reverse-proxy, one Kestrel
2) One IIS reverse-proxy, one Kestrel
并且两个组件都在同一台主机上。在现实生活中的生产环境中,您可能有 LB 服务发现、多个前端、多个后端等。但对于这种情况,没有任何说明。所以我的问题是针对多主机环境:
- 我是否将一个 IIS/NGINX 部署为 LB/Reverse-proxy,并将请求重定向到多个单独的 VM:s 上的 Kestrels 运行ning,即各种不同的 IP:s?
- 或者我 运行 一个 NGINX/F5 用于一台主机上的负载平衡,然后将 http 流量路由到各种 VM:s 那个 运行 IIS+Kestrel,或者只是红隼?此设置中是否需要 IIS,因为 NGINX 充当 LB?
- 如果我 运行 IIS 或 NGINX 作为反向代理,它们能否在不同的 VM:s 上保持 Kestrel 存活,或者每个 Kestrel 是否只需要一个 IIS/NGINX 来保持存活? IE。 Kestrel 进程必须与反向代理位于同一主机上吗?
非常欢迎大家的回答,在此先致谢! :)
我有一个设置,其中一个 VM 使用(IIS 作为 LB)+ 多个 VM(IIS + Kestrel)。它适合我的使用,但我很想知道其他人是否有不同的建议。然后这取决于你在做什么,如果你使用加密,机器密钥需要在虚拟机之间共享,你可能还需要在虚拟机之间共享会话(https://www.exceptionnotfound.net/finding-and-using-asp-net-session-in-core-1-0/),将东西存储在数据库中......
我 运行 NGINX 在边缘作为负载均衡器和 SSL 终止以及带有 IIS + Kestrel 服务 MVC 的多个服务器。这对我们来说效果很好。您可能不需要它,但我发现 NGINX 比您使用 IIS 可以做的任何事情都更加复杂和强大。显然 F5 之类的也可以。以前我也 运行 有一段时间使用 AWS ELB 负载均衡器,它也工作正常,只是没有太多可配置性。所以取决于你的需求。
如前所述,每个盒子上都需要 IIS 运行 kestrel 来管理进程。您可以通过其他方式执行此操作,但使用 IIS 是最简单的。