Compartilhar via

Service Fabric 托管群集上的 MaintenanceControl 简介

Service Fabric 托管群集具有多个后台运行的操作,这些操作是确保所有群集保持更新所必需的,因此可确保安全性和可靠性。 尽管这些操作至关重要,后台执行可能会导致服务副本被移动到其他节点。 如果维护操作在高峰时段执行,此故障转移可能造成意外且不必要的中断。 借助 Service Fabric 托管群集中 MaintenanceControl 的支持,客户可以根据需要为其 SFMC 群集资源定义定期(每日、每周、每月)和自定义维护时段。 仅允许在此维护时段内执行所有后台维护作。 MaintenanceControl 适用于以下后台操作:

  • 自动 OS 升级
  • 自动扩展升级
  • 自动 SF 运行时版本更新
  • 自动群集证书更新

要求

  • 仅需要为 Service Fabric 托管群集资源定义维护时段配置
  • 支持的最低窗口大小为 5 小时

MaintenanceControl 如何为 SFMC 工作

  • 客户需要通过使用维护 RP 来创建一个包含维护时段计划和重复规则的维护配置资源,从而定义维护配置。 更多详细信息
  • 使用此维护配置,将创建一个分配资源,以便将维护配置分配给 SFMC 群集资源。
  • 在创建分配资源时,维护 RP 会通知 ServiceFabric RP 关于链接的相关信息,然后在 SFMC 群集上启用维护控制。 在维护时段外,所有后台维护操作都会被阻止。
  • 每当根据维护配置中的计划激活维护时间窗时,维护 RP 会通知 ServiceFabric RP,以便在相应的 SFMC 集群上激活维护时间窗。 允许在此窗口中执行所有后台操作。

示例部署

下面是使用维护控制设置群集的分步过程。 下载此示例,其中包含所有必需的资源。 标准 SKU Service Fabric 托管群集示例

  1. 在区域中创建资源组:

    Connect-AzAccount -Environment AzureChinaCloud
    Select-AzSubscription -SubscriptionId $subscriptionid
    New-AzResourceGroup -Name $myresourcegroup -Location $location
    
  2. 创建群集资源:

    执行此命令以部署群集资源:

    $parameters = @{
    clusterName = $clusterName
    adminPassword = $VmAdminPassword
    clientCertificateThumbprint = $clientCertificateThumbprint
    }
    New-AzResourceGroupDeployment -Name "deploy_cluster" -ResourceGroupName $resourceGroupName -TemplateFile .\azuredeploy.json -TemplateParameterObject $parameters -Verbose
    
  3. 使用以下维护配置在群集上配置维护控制:

此维护配置定义了从2023年5月30日开始的更新计划,安排每天从晚上10点(太平洋标准时间)开始进行,持续5个小时。 有关维护配置的更多详细信息

    "resources": [
        {
            "type": "Microsoft.Maintenance/maintenanceConfigurations",
            "apiVersion": "2022-07-01-preview",
            "name": "mc1",
            "location": "[parameters('location')]",
            "properties": {
                "maintenanceScope": "Resource",
                "extensionProperties": {
                   "maintenanceSubScope": "SFMC"
                },
                "maintenanceWindow": {
                    "startDateTime": "2023-05-30 22:00",
                    "duration": "05:00",
                    "timeZone": "Pacific Standard Time",
                    "expirationDateTime": null,
                    "recurEvery": "1Day"
                }
            }
        }

注释

如配置中所述,SFMC 群集资源的维护配置应具有 maintenanceScope:“Resource”和 maintenanceSubScope:“SFMC”。

创建维护配置后,必须使用分配资源将其附加到 SFMC 群集。 有关分配的更多详细信息

    "resources": [
        { 
           "type": "Microsoft.Resources/deployments",
            "apiVersion": "2022-09-01",
            "name": "ConfigurationAssignmentsName",
            "dependsOn": [
                "[concat('Microsoft.Maintenance/maintenanceConfigurations/', 'mc1')]",
                "[concat('Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'))]"
            ],
            "properties": {
                "mode": "Incremental",
                "template": {
                    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
                    "resources": [
                        {
                            "apiVersion": "2022-07-01-preview",
                            "type": "Microsoft.Maintenance/configurationAssignments",
                            "name": "mc1Assignment",
                            "location": "[parameters('location')]",
                            "scope": "[concat('Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'))]",
                            "tags": {},
                            "properties": {
                                "maintenanceConfigurationId": "/subscriptions/<subId>/resourcegroups/<rgName>/providers/microsoft.maintenance/maintenanceconfigurations/mc1"
                            }
                        }
                    ]
                }
            },
            "subscriptionId": "<subId>",
            "resourceGroup": "<rgName>"
        }

注释

  • 若要禁用群集上的维护控制,请取消分配/删除群集的分配。
  • 应在相同的 Azure 区域订阅中创建维护资源和 SFMC 群集资源。

注释

已知问题:

  • 仅删除维护配置资源不会禁用 MaintenanceControl。 若要禁用 MaintenanceControl,必须先删除群集的 configAssignment,然后再删除维护配置资源。