Service Fabric 托管群集节点类型
虚拟机规模集支持 Service Fabric 托管群集中的每种节点类型。 使用托管群集,可通过 Service Fabric 托管群集资源提供程序进行任何所需的更改。 托管群集提供程序代表你创建和抽象群集的所有基础资源。 由资源提供程序管理资源有助于简化群集节点类型的部署和管理。 管理可防止删除种子节点等操作错误,并有助于应用最佳做法,如验证虚拟机 (VM) SKU 是否可以安全使用。
本文档的其余部分介绍如何调整各种设置,包括:
- 创建节点类型
- 调整节点类型实例计数
- 启用自动 OS 映像升级
- 更改 OS 映像
- 配置放置属性
- 设置计算机名前缀
本文档重点介绍如何使用 Azure 门户和 Azure 资源管理器模板进行更改。
重要
目前,Service Fabric 托管群集不支持自定义 OS 映像。
注意
正在进行更改时,你将无法修改节点类型。 建议在执行其他更改之前,先完成任何请求的更改。
添加节点类型
可以通过门户、Azure 资源管理器模板或 PowerShell 将节点类型添加到 Service Fabric 托管群集。
使用门户添加
备注
只能使用门户添加次要节点类型
登录到 Azure 门户
导航到群集资源概述页面。
在
Settings
部分下选择Node types
选择顶部的
Add
,填写所需信息,然后选择底部的“添加”,就完成了!等待新节点类型添加完成
使用 ARM 模板添加
添加另一个具有所需值的资源类型 Microsoft.ServiceFabric/managedclusters/nodetypes
,并执行群集部署以使设置生效。
- Service Fabric 托管群集资源 apiVersion 应为 2021-05-01 或更高版本。
- 如果打算替换现有的主节点类型,请确保将
isPrimary
设置为true
。
{
"apiVersion": "[variables('sfApiVersion')]",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
"name": "[concat(parameters('clusterName'), '/', parameters('nodeType2Name'))]",
"location": "[resourcegroup().location]",
"dependsOn": [
"[concat('Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'))]"
],
"properties": {
"isPrimary": false,
"vmImagePublisher": "[parameters('vmImagePublisher')]",
"vmImageOffer": "[parameters('vmImageOffer')]",
"vmImageSku": "[parameters('vmImageSku')]",
"vmImageVersion": "[parameters('vmImageVersion')]",
"vmSize": "[parameters('nodeType2VmSize')]",
"vmInstanceCount": "[parameters('nodeType2VmInstanceCount')]",
"dataDiskSizeGB": "[parameters('nodeType2DataDiskSizeGB')]",
"dataDiskType": "[parameters('nodeType2managedDataDiskType')]"
}
}
有关双节点类型配置的示例,请参阅双节点类型 ARM 模板示例。
使用 PowerShell 添加
若要新建节点类型,需要定义以下属性:
- 资源组:群集所在的资源组
- 群集名称:托管群集的名称
- 节点类型名称:在群集的任何现有节点类型中独一无二的名称。
- 实例计数:新节点类型的初始节点数。
- VM 大小:节点的 VM SKU。 如果未指定,则使用默认值“Standard_D2”。
备注
如果要添加主节点类型,必须使用 -Primary
属性。
$resourceGroup = "myResourceGroup"
$clusterName = "mysfcluster"
$nodeTypeName = "nt2"
$vmSize = "Standard_D2_v2"
New-AzServiceFabricManagedNodeType -ResourceGroupName $resourceGroup -ClusterName $clusterName -Name $nodeTypeName -InstanceCount 3 -vmSize $vmSize
删除节点类型
可以使用门户或 PowerShell 删除 Service Fabric 托管群集节点类型。
备注
若要从 Service Fabric 托管群集中删除主节点类型,必须使用 PowerShell,并且必须有多个可用的主节点类型。
使用门户删除
登录到 Azure 门户
导航到群集资源概述页面。 ![示例概述页面][概述]
在
Settings
部分下选择Node types
选择要删除的
Node Type
,然后选择顶部的Delete
。
使用 PowerShell 删除
注意
如果为升级 SKU 等方案删除主节点类型,需要花费数小时才能完成删除,可以使用 SFX 来监视进度。 每个升级域 (UD) 中的种子节点将按照每次一个的进度迁移。
若要删除节点类型,需要定义以下属性:
- 资源组:群集所在的资源组
- 群集名称:托管群集的名称
- 节点类型名称:在群集的任何现有节点类型中独一无二的名称。
$resourceGroup = "myResourceGroup"
$clusterName = "myCluster"
$nodeTypeName = "nt2"
Remove-AzServiceFabricManagedNodeType -ResourceGroupName $resourceGroup -ClusterName $clusterName -Name $nodeTypeName
缩放节点类型
可以使用门户、ARM 模板或 PowerShell 来缩放 Service Fabric 托管群集节点类型。 如果需要全自动化的解决方案,还可以为辅助节点类型配置自动缩放。
备注
- 主节点类型不能设置为自动缩放,只能将它设置为手动缩放。
- 对于主节点类型,基本 SKU 群集的节点数不能少于 3 个,标准 SKU 群集的节点数不能少于 5 个。
使用门户缩放
在本演练中,你将了解如何使用门户修改节点类型的节点计数。
登录到 Azure 门户
导航到群集资源概述页面。 ![示例概述页面][概述]
在
Settings
部分下选择Node Types
选择要修改的
Node type name
查看并更新节点类型属性(如有需要)。
选择
Manage node type scaling
以配置缩放设置,并在自定义自动缩放和手动缩放选项之间进行选择。 自动缩放是一项内置功能,可帮助应用程序在需求改变时达到最佳性能。 可以选择手动将资源缩放到特定实例计数,或者通过自定义自动缩放策略来根据指标阈值进行缩放。 还可以安排实例计数在指定的时间窗口内缩放。 详细了解 Azure 自动缩放或观看操作说明视频。自定义自动缩放:选择合适的
scale mode
以定义自定义自动缩放策略 -Scale to a specific instance count
或Scale based on a metric
。 后者基于指标触发器规则,例如,当 CPU 百分比高于 70% 时,实例计数增加 1。 定义策略后,选择顶部的Save
。手动缩放:将
Node count
调整为所需的新值,然后选择顶部的Save
。 在此屏幕截图中,值原本为3
,将其调整成了5
。
选择底部的
Apply
以在节点类型上配置这些已保存的设置。Provisioning state
显示Updating
状态,直至完成。 完成后,它再次显示Succeeded
。
使用模板缩放节点类型
若要使用 ARM 模板调整节点类型的节点计数,请使用新值调整 vmInstanceCount
属性,并执行群集部署以使设置生效。 群集开始自动升级。 完成后,你会看到其他节点。
- Service Fabric 托管群集资源 apiVersion 应为 2021-05-01 或更高版本。
注意
如果缩放请求违反要求的最小值,托管群集提供程序将阻止缩放调整并返回一个错误。
{
"apiVersion": "[variables('sfApiVersion')]",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
"name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeName'))]",
"location": "[resourcegroup().location]",
"properties": {
...
"vmInstanceCount": "[parameters('nodeTypeVmInstanceCount')]",
...
}
}
使用 PowerShell 缩放节点类型
更改实例计数,以增加或减少要缩放的节点类型上的节点数。 可以在群集部署的 Azure 资源管理器模板(ARM 模板)或 Service Fabric 资源管理器中找到节点类型名称。
$resourceGroup = "myResourceGroup"
$clusterName = "mysfcluster"
$nodeTypeName = "FE"
$instanceCount = "7"
Set-AzServiceFabricManagedNodeType -ResourceGroupName $resourceGroup -ClusterName $clusterName -name $nodeTypeName -InstanceCount $instanceCount -Verbose
群集开始自动升级。 完成后,你会看到其他节点。
启用自动 OS 映像升级
你可以选择对运行托管群集节点的虚拟机启用自动 OS 映像升级。 尽管虚拟机规模集资源是由 Service Fabric 托管群集代表你进行管理的,但你可以选择为群集节点启用自动 OS 映像升级。 与经典 Service Fabric 群集一样,默认情况下不会升级托管群集节点,以防止群集意外中断。
注意
市场和自定义映像都支持自动 OS 映像升级。
启动自动 OS 升级:
- 使用 apiVersion
2021-05-01
或更高版本的“Microsoft.ServiceFabric/managedclusters”和“Microsoft.ServiceFabric/managedclusters/nodetypes”资源 - 将群集的属性
enableAutoOSUpgrade
设置为“true” - 将群集 nodeType 的资源属性
vmImageVersion
设置为“latest”
例如:
{
"apiVersion": "[variables('sfApiVersion')]",
"type": "Microsoft.ServiceFabric/managedclusters",
...
"properties": {
...
"enableAutoOSUpgrade": true
},
},
{
"apiVersion": "[variables('sfApiVersion')]",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
...
"properties": {
...
"vmImageVersion": "latest",
...
}
}
}
启用后,Service Fabric 将开始查询和跟踪托管群集中的 OS 映像版本。 如果有新的 OS 版本可用,将升级群集节点类型(虚拟机规模集),一次升级一个。 仅在确认没有群集节点 OS 映像升级正在进行后,才执行 Service Fabric 运行时升级。
如果升级失败,Service Fabric 将在 24 小时后重试,最多重试三次。 类似于经典(非托管)Service Fabric 升级,运行不正常的应用或节点可能会阻止 OS 映像升级。
有关映像升级的详细信息,请参阅 Azure 虚拟机规模集的自动 OS 映像升级。
修改节点类型的 OS SKU
Service Fabric 托管群集使你能够就地修改节点类型的 OS SKU。 此过程适用于从 Windows 2019 迁移到 Windows 2022 等场景,或者适用于要切换到服务器(核心)SKU 与具有桌面体验的服务器 SKU 的情况。
使用门户修改 OS SKU
在本演练中,你将了解如何使用门户修改节点类型的 OS 映像。
登录到 Azure 门户
导航到群集资源概述页面。 ![示例概述页面][概述]
在
Settings
部分下选择Node Types
选择要修改的
Node type name
将
OS Image
调整为所需的新值,然后选择底部的Apply
。 ![显示正在更改 OS 映像的示例][change-os-image]Provisioning state
显示Updating
状态,并一次执行一个升级域。 完成后,它再次显示Succeeded
。
使用模板修改 OS SKU
若要使用 ARM 模板修改用于节点类型的 OS 映像,请使用新值调整 vmImageSku
属性,并执行群集部署以使设置生效。 托管群集提供程序通过升级域对每个实例进行重置映像。
- Service Fabric 托管群集资源 apiVersion 应为 2021-05-01 或更高版本。
{
"apiVersion": "[variables('sfApiVersion')]",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
"name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeName'))]",
"location": "[resourcegroup().location]",
"properties": {
...
"vmImagePublisher": "[parameters('vmImagePublisher')]",
"vmImageOffer": "[parameters('vmImageOffer')]",
"vmImageSku": "[parameters('vmImageSku')]",
"vmImageVersion": "[parameters('vmImageVersion')]",
...
}
}
配置节点类型的放置属性
放置属性用于确保某些工作负载仅在群集中的某些节点类型上运行。 Service Fabric 托管群集支持通过门户、ARM 模板或 PowerShell 配置这些属性。
使用门户配置放置属性
在本演练中,你将了解如何使用门户修改节点类型的放置属性。
登录到 Azure 门户
导航到群集资源概述页面。 ![示例概述页面][概述]
在
Settings
部分下选择Node Types
选择要修改的
Node type name
在
Placement properties
部分,添加你想要的名称和值,然后选择底部的Apply
。 在此屏幕截图中,Name
SSD_Premium
与为true
的Value
一起使用。Provisioning state
显示Updating
状态,直至完成。 完成后,它再次显示Succeeded
。
使用模板配置放置属性
要使用 ARM 模板调整节点类型的放置属性,请使用一个或多个新值调整 placementProperties
属性,然后执行群集部署使设置生效。 下面的示例显示了要为节点类型设置的三个值。
- Service Fabric 托管群集资源 apiVersion 应为 2021-05-01 或更高版本。
{
"apiVersion": "[variables('sfApiVersion')]",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
"name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeName'))]",
"location": "[resourcegroup().location]",
"properties": {
"placementProperties": {
"PremiumSSD": "true",
"NodeColor": "green",
"SomeProperty": "5"
}
}
}
使用 PowerShell 配置放置属性
下面的示例更新并覆盖了指定节点类型的任何现有放置属性。
$rgName = "testRG"
$clusterName = "testCluster"
$NodeTypeName = "nt1"
Set-AzServiceFabricManagedNodeType -ResourceGroupName $rgName -ClusterName $clusterName -name $NodeTypeName -PlacementProperty @{NodeColor="Red";SomeProperty="6";} -Verbose
修改节点类型的 VM SKU
若要使用 ARM 模板修改用于节点类型的 VM SKU 大小,请使用新值调整 vmSize
属性,并执行群集部署以使设置生效。 托管群集提供程序通过升级域对每个实例进行重置映像。 有关 SKU 选项的列表,请参阅 VM 大小 - Azure 虚拟机 | Azure Learn。
{
"apiVersion": "[variables('sfApiVersion')]",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
"name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeName'))]",
"location": "[resourcegroup().location]",
"properties": {
...
"vmSize": "[parameters('vmImageVersion')]",
...
}
}
配置多个托管磁盘
Service Fabric 托管群集默认配置一个托管磁盘。 通过配置以下可选属性和值,可将更多托管磁盘添加到群集中的节点类型。 可以指定每个磁盘的驱动器号、磁盘类型和大小。
通过在资源管理器模板中声明 additionalDataDisks
属性和必需参数配置更多托管磁盘,如下所示:
功能要求
- Lun 必须对每个磁盘都是唯一的,并且不能使用保留的 lun 0 或 1
- 磁盘号不能使用保留字母 C 或 D,并且创建后无法修改。 如果未指定,则默认使用 S。
- 必须指定支持的磁盘类型
- Service Fabric 托管群集资源 apiVersion 应为 2022-01-01 或更高版本。
{
"apiVersion": "[variables('sfApiVersion')]",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
"name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeName'))]",
"location": "[resourcegroup().location]",
"properties": {
"additionalDataDisks": {
"lun": "2",
"diskSizeGB": "50",
"diskType": "Standard_LRS",
"diskLetter": "S"
}
}
}
请参阅可用参数的完整列表。
配置 Service Fabric 数据磁盘驱动器号
Service Fabric 托管群集默认配置 Service Fabric 数据磁盘,并在节点类型的所有节点上自动配置驱动器号。 通过配置此可选属性和值,如果对驱动器号映射有特定要求,可指定和保留 Service Fabric 数据磁盘号。
功能要求
- 磁盘号不能使用保留字母 C 或 D,并且创建后无法修改。 如果未指定,则 S 用作默认值。
- Service Fabric 托管群集资源 apiVersion 应为 2022-01-01 或更高版本。
{
{
"apiVersion": "[variables('sfApiVersion')]",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
"name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeName'))]",
"location": "[resourcegroup().location]",
"properties": {
"dataDiskLetter": "S"
}
}
}
设置计算机名前缀
如果客户需要较长的节点类型名称,以便进行更详细的描述,则可以使用计算机名前缀。
注意
计算机名称前缀仅适用于 Service Fabric API 版本 2024-04-01 or later
。
实现以下 ARM 模板更改以设置计算机名前缀:
{
"apiVersion": "2024-04-01",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
"name": "[concat(parameters('clusterName'), '/', 'BE-testResourceGroup-testRegion-test')]",
"location": "[parameters('clusterLocation')]",
"dependsOn": [
"[concat('Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'))]"
],
"properties": {
"isPrimary": false,
"dataDiskSizeGB": "[parameters('dataDiskSizeGB')]",
"vmImagePublisher": "[parameters('vmImagePublisher')]",
"vmImageOffer": "[parameters('vmImageOffer')]",
"vmImageSku": "[parameters('vmImageSku')]",
"vmImageVersion": "[parameters('vmImageVersion')]",
"vmSize": "[parameters('vmSize')]",
"vmInstanceCount": "[parameters('vmInstanceCount')]",
"computerNamePrefix": "computerNamePrefix"
}
}