在社区,我想温和地停止Kestrel和一个正在运行的.Net核心应用程序,使它完成现有的查询,防止它处理新的查询,当所有现有的查询完成时-停止应用程序和Kestrel。
我需要它在Kubernetes中设置CI/CD,在Kubernetes中,我有到Kestrel的平衡器路由,没有nginx,以实现零停机,同时部署新的应用程序版本。
如果有类似于` `nginx -s quit的东西就太好了
有人能在Kubernetes中提出解决方案或分享如何用dotnetcore组织零宕机的知识吗?
我试着用谷歌搜索解决方案--对我不起作用。杀死进程不是一个好的选择。
谢谢
发布于 2020-03-04 01:08:58
解决方案1:
您可以使用nginx作为revrese代理服务器。这是.NET核心托管的建议策略。https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-3.1
解决方案2:
是不正确的。把它留在这里,让其他人不要走这条路。请阅读下面@David的评论。
你得自己试一试。这是非常危险的。你可能会把自己锁在外面。
.UseKestrel(选项=> { options.Limits.MaxConcurrentConnections = 0;})
如果您能将KestrelServerLimits
MaxConcurrentConnections
配置为0,则应该能够停止所有流量。我不知道如何在运行时配置这些限制。但看到这一点的实现将会很有趣。
https://stackoverflow.com/questions/60504163
复制相似问题