【问题标题】:How to delay Service Fabric runtime automatic upgrades如何延迟 Service Fabric 运行时自动升级
【发布时间】:2018-11-17 19:49:00
【问题描述】:

我们的团队最近发生了一起事件,原因是我们的无状态服务因 Azure 运行时自动更新而重新启动。其中一项服务在强制关闭时正在处理任务。这些任务可能需要长达 4 小时。

无论是通过代码还是配置,有没有办法让Azure知道我们的服务很忙,不能像这次那样关闭?

换句话说,我们如何让 Azure 知道我们的服务何时准备好进行 Service Fabric 运行时升级?

【问题讨论】:

    标签: azure azure-service-fabric service-fabric-stateless


    【解决方案1】:

    首先,你为什么不切换到手动升级模式?

    其次,对于长时间运行的作业,您仍然需要考虑节点可能会发生故障,服务实例可能会被移动或更改角色。如果您不能很好地处理关闭通知,所有这些类型的事件都会终止您长期运行的工作。

    Service Fabric 通过使用传递给 RunAsync 的 CancellationToken 向服务发出信号,表明它将被关闭等。以下取自from the docs

    Service Fabric 出于多种原因更改有状态服务的主节点。最常见的是集群再平衡和应用程序升级。在这些操作期间(以及在正常服务关闭期间,例如您会看到服务是否被删除),服务尊重 CancellationToken 很重要。

    无法彻底处理取消的服务可能会遇到几个问题。这些操作很慢,因为 Service Fabric 会等待服务正常停止。

    this 也说了同样的事情,但关于 RunAsync 方法的内容略短:

    确保传递给 RunAsync(CancellationToken) 的 cancelToken 得到兑现,一旦发出信号,RunAsync(CancellationToken) 就会尽快退出。

    在您的情况下,您应该对被取消的 CancellationToken 采取行动。您应该以某种方式存储当前作业的状态,以便在下次调用 RunAsync 时恢复它。

    如果它确实是一项长时间运行的作业,不能以任何方式中断和恢复,您应该考虑在可靠服务之外完成这项工作,例如 Web 作业或其他东西。或者接受一些工作可能会丢失。

    换句话说,您不能告诉 Service Fabric 等待关闭您的服务。它还会破坏集群的平衡性和可靠性。

    【讨论】:

    • 您的解释是指有状态服务(?)。无状态服务呢?另外,如果您的长时间运行的请求在 asp.net 控制器方法中,我不确定 CancellationToken 有什么帮助。有没有关于如何实现这个的例子?我想 SF 有一种方法,比如健康检查,可以验证“耗尽”的服务实例是否仍然繁忙(处理长时间运行的请求)或者是否可以停止。有什么建议吗?任何提示在哪里看?我认为所有升级文档都没有涵盖该主题。
    【解决方案2】:

    https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-cluster-capacity#the-durability-characteristics-of-the-cluster

    持久层权限允许 Service Fabric 暂停任何 VM 级别的基础架构请求(例如 VM 重新启动、VM 重新映像或 VM 迁移)

    青铜 - 没有特权。这是默认设置。 银牌 - 每个 UD 可以暂停基础结构作业 10 分钟。 金牌 - 每个 UD 可以暂停基础设施作业 2 小时。黄金持久性只能在 D15_V2、G5 等全节点 VM sku 上启用。

    https://docs.microsoft.com/en-us/dotnet/api/microsoft.azure.management.servicefabric.models.nodetypedescription.durabilitylevel?view=azure-dotnet

    【讨论】:

    • 我在发布之前通读了该文档 - 我仍然不清楚详细信息。你能停多久?暂停/取消暂停的机制是什么?
    猜你喜欢
    • 2021-06-18
    • 2023-04-04
    • 2017-06-07
    • 2017-10-31
    • 2018-11-14
    • 2019-05-08
    • 2016-07-26
    • 2016-10-13
    • 2019-01-10
    相关资源
    最近更新 更多