首页 文章

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

提问于
浏览
4

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

1) One NGINX reverse-proxy, one Kestrel
2) One IIS reverse-proxy, one Kestrel

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

  • 我是否将一个IIS / NGINX部署为LB /反向代理,并将请求重定向到在许多单独的VM上运行的Kestrel,即各种不同的IP:s?

  • 或者我是否在一台主机上运行NGINX / F5进行负载均衡,然后将http流量路由到运行IIS Kestrel的各种VM:或者只是Kestrel?此设置是否需要IIS,因为NGINX充当LB?

  • 如果我将IIS或NGINX作为反向代理运行,是否可以将Kestrel保留在不同的VM上,或者每个Kestrel是否只需要一个IIS / NGINX来保持活着状态?即Kestrel进程必须与反向代理位于同一主机上?

所有的答案都非常欢迎,并提前多多感谢! :)

2 回答

  • 2

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

  • 1

    我正在边缘运行NGINX作为负载均衡器和SSL终端以及使用IIS Kestrel服务MVC的多个服务器 . 这对我们来说效果很好 . 你可能不需要它,但我发现NGINX比你用IIS做的任何东西都要复杂得多 . 显然F5或其他东西也可以 . 以前我也使用AWS ELB负载 balancer 器运行了一段时间,它也运行良好,只是没有太多的可配置性 . 所以取决于你的需求 .

    如前所述,运行kestrel的每个盒子都需要IIS来管理进程 . 您可以通过其他方式执行此操作,但使用IIS是最简单的方法 .

相关问题