【问题标题】:How to tell Azure not to remove particular server during scale down如何告诉 Azure 在缩减期间不要删除特定服务器
【发布时间】:2019-01-29 11:48:33
【问题描述】:

我有一个在 Azure 应用服务上运行的 .NET 应用。 设置了自动缩放,有时它会增加到 10 个实例,然后又回到 3 个。

我有一个后台任务(hangfire),每小时在其中一个实例上运行一次(我不知道在哪个实例上,它是随机的)。

有没有办法告诉 Azure 在缩减期间不要删除当前正在执行任务的服务器?

【问题讨论】:

  • 你需要设计你的后台任务来优雅地关闭并从它离开的地方拿起,你还需要使用取消令牌,因为当发生缩减时,它会给你的应用程序一些时间完成工作,如果它不完整的线程将被杀死
  • @VolodymyrBilyachat 你有关于 Azure 应用服务上的 CancellationToken 的更多信息的链接吗?我在 Azure 中找不到任何东西。如果我可以收到来自 Azure 的通知,它将关闭一个实例,我可以重新安排当前正在执行的任务。
  • 好吧,它不是 azure 特定的,而是更异步的 docs.hangfire.io/en/latest/background-methods/…
  • @VolodymyrBilyachat 所以基本上对于hangfire案例,我应该输入:cancellationToken.ThrowIfCancellationRequested();在任务的每个逻辑步骤之前。例如:cancelToken.ThrowIfCancellationRequested(); // 从远程服务器下载文件并解析它 cancelToken.ThrowIfCancellationRequested(); // 对于文件的每一行 { cancelToken.ThrowIfCancellationRequested(); //在那条线上工作}听起来正确吗?

标签: azure azure-web-app-service


【解决方案1】:

你不应该依赖这样的东西,而是设计你的后台作业处理器能够优雅地关闭。

这就是为什么你应该在你的工作中使用取消令牌,并且工作应该能够从它离开的地方拿起。

对于hangfire,有custom implementation。在其他一些情况下,您可以使用 .net CancellationToken

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-23
    • 1970-01-01
    • 2015-01-18
    相关资源
    最近更新 更多