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

标签 asp.net iis nginx asp.net-core load-balancing

我很困惑,因为我没有看到任何关于如何使用 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,或者只是 Kestrel?由于 NGINX 充当 LB,此设置中是否需要 IIS?
  • 如果我将 IIS 或 NGINX 作为反向代理运行,它们能否在不同的 VM 上保持 Kestrel 的事件状态,或者每个 Kestrel 是否只需要一个 IIS/NGINX 来保持事件状态? IE。 Kestrel 进程必须与反向代理在同一台主机上吗?

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

    最佳答案

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

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

    关于asp.net - ASP.NET Core 应用程序的多主机部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42003404/

    相关文章:

    node.js - 从请求url中获取IP地址

    javascript - TypeError : $(. ..).timepicker 不是函数

    javascript - 单击模态框时按钮没有被触发

    iis - IIS 中的动态内容压缩似乎不起作用

    asp.net - IE 地址栏和源代码中出现奇怪的字符串

    reactjs - 无法在 react 应用程序的组件之间成功路由

    python - Cherrypy 应用程序重定向到 http 而不是 nginx 后面的 https

    javascript - 创建一个自定义用户控件,该控件使用我提供的 ID 并遵循 ClientIDMode ="Static"

    c# - Generic HttpHandler(一个 ashx,IHttpHandler 接口(interface))什么时候可以重用?

    c# - 嵌套网络应用