你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
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 托管群集示例
在区域中创建资源组:
Login-AzAccount Select-AzSubscription -SubscriptionId $subscriptionid New-AzResourceGroup -Name $myresourcegroup -Location $location创建群集资源:
请执行以下命令部署群集资源:
$parameters = @{ clusterName = $clusterName adminPassword = $VmAdminPassword clientCertificateThumbprint = $clientCertificateThumbprint } New-AzResourceGroupDeployment -Name "deploy_cluster" -ResourceGroupName $resourceGroupName -TemplateFile .\azuredeploy.json -TemplateParameterObject $parameters -Verbose使用以下维护配置在群集上配置维护控制:
此维护配置定义从下午 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,然后再删除维护配置资源。