【发布时间】:2017-06-19 14:16:08
【问题描述】:
我很困惑,因为我没有看到任何关于如何使用 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:s 上运行的 Kestrel,即各种不同的 IP:s?
- 或者我是在一台主机上运行 NGINX/F5 以实现负载平衡,然后将 http 流量路由到运行 IIS+Kestrel 的各种 VM:s,还是只运行 Kestrel?由于 NGINX 充当 LB,此设置中是否需要 IIS?
- 如果我将 IIS 或 NGINX 作为反向代理运行,它们能否使 Kestrel 在不同的 VM:s 上保持活动状态,或者每个 Kestrel 是否只需要一个 IIS/NGINX 才能保持活动状态? IE。 Kestrel 进程必须与反向代理位于同一主机上?
非常欢迎所有答案,并提前非常感谢! :)
【问题讨论】:
-
嗨。我对您的问题没有完整的答案,但我可以评论这样一个事实,即在生产中,您不会仅通过 Kestrel 侦听请求来处理 VM 上的请求,Kestrel 需要额外的反向代理层,例如 IIS这将能够处理应用程序池(在崩溃的情况下重新启动 Kestrel,回收......),处理客户端证书,处理 kerberos ......所以总是 Kestrel + 反向代理。好文章:weblog.west-wind.com/posts/2016/Jun/06/…
-
是的,这在任何地方都非常清楚地说明了。问题是,如果我有很多主机怎么办 :) 就像生产中的情况一样。
标签: asp.net iis nginx asp.net-core load-balancing