3

我准备将ASP.NET Core MVC网站部署到生产环境。该应用程序将部署到AWS ECS(EC2容器服务)。建议不要将红隼用于从互联网提供流量,建议在前面放置一个反向代理服务器。我的问题是,AWS ALB够好吗?它执行SSL终止,负载均衡,并支持HTTP/2和WebSocket。对于在ALB后面的AWS ECS上运行的asp.net核心网站,Kestrel足够了吗?

我相信我放弃了压缩(据我所知ALB或Kestrel都不支持它)。此设置缺少什么?我应该看看额外的反向代理(haproxy/nginx)吗?如果我不需要,那么额外的复杂性就足够了,我不想走这条路。

+0

你需要考虑一下这个解决方案,你将如何管理红隼进程。推荐的Windows解决方案(在IIS后面运行)通过IIS核心模块执行此操作。它在第一次请求时启动kestrel并在其失败时重新启动 – Tom

+0

在ECS的情况下,ALB/ECS负责启动足够的实例。 –

+0

啊,好的,我错过了集装箱服务部分,我没有用过。听起来像这样可以正常工作。我只是从ELB切换到NGINX,因为我们需要对负载平衡进行更好的控制,但如果您的需求是基本的,ELB可以正常工作。 – Tom

回答

1

如果你不需要压缩(它有小的搜索引擎优势),你很好去。

有几件事情要注意你的红隼的应用程序,我确定大家都知道放置时,它后面的referse代理:

  • 请求URL的概念消失了:因为代理转发请求请求url始终是代理本身。
  • 此外协议将永远是http而不是https。
  • 负载平衡器每次都在应用程序之间切换,所以现在可能会出现性能下降的情况(无法正常工作,但您没有意识到)现在可能会崩溃。

ALB我可以想像的缺点可能是您无法控制负载均衡如何发生。如果这对你来说不是问题,那么我认为几乎任何反向代理都适合你。 (如果你喜欢,你甚至可以在nodejs中创建一个简单的反向代理)。

+1

谢谢。虽然压缩很好,但它肯定不是一个硬性要求。我现在使用haproxy(用于本地IIS),而且它确实需要一些习惯。 至于最后一点,在某些方面这是一个好处 - 如果您的网站是有状态的,最好早点知道,而不是晚点。 –