你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Service Fabric 托管群集上的 MaintenanceControl 简介

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

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

要求:

  • 只需为 Service Fabric 托管群集资源定义维护时段配置
  • 支持的最小时段为 5 小时

SFMC 的维护控制如何工作

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

示例部署

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

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

    Login-AzAccount
    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. 使用以下维护配置在群集上配置维护控制:

此维护配置定义从下午 10 点 PST 开始每天 5 小时的更新计划,从 30-05-2023 开始。 有关维护配置的更多详细信息

    "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 群集资源的维护配置应具有维护范围“资源”和维护子范围“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": "http://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>"
        }

若要检查维护配置的状态,请使用 “获取维护窗口”

$resourceGroupName = "testResourceGroup"
$clusterName = "testCluster"
Invoke-AzResourceAction -ResourceGroupName $resourceGroupName -ResourceName $clusterName -ResourceType Microsoft.ServiceFabric/managedclusters -Action getMaintenanceWindowStatus

如果缺少通知,并且存在可以安全应用的时间关键的挂起的更新,则可以使用“应用维护时段状态操作”手动应用 5 小时的维护时段。

$resourceGroupName = "testResourceGroup"
$clusterName = "testCluster"
Invoke-AzResourceAction -ResourceGroupName $resourceGroupName -ResourceName $clusterName -ResourceType Microsoft.ServiceFabric/managedclusters -Action applyMaintenanceWindow

注意

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

注意

已知问题:

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