Service Fabric 托管群集节点类型

虚拟机规模集支持 Service Fabric 托管群集中的每种节点类型。 使用托管群集,可通过 Service Fabric 托管群集资源提供程序进行任何所需的更改。 托管群集提供程序代表你创建和抽象群集的所有基础资源。 由资源提供程序管理资源有助于简化群集节点类型的部署和管理。 管理可防止删除种子节点等操作错误,并有助于应用最佳做法,如验证虚拟机 (VM) SKU 是否可以安全使用。

本文档的其余部分介绍如何调整各种设置,包括:

  • 创建节点类型
  • 调整节点类型实例计数
  • 启用自动 OS 映像升级
  • 更改 OS 映像
  • 配置放置属性
  • 设置计算机名前缀

本文档重点介绍如何使用 Azure 门户和 Azure 资源管理器模板进行更改。

重要

目前,Service Fabric 托管群集不支持自定义 OS 映像。

注意

正在进行更改时,你将无法修改节点类型。 建议在执行其他更改之前,先完成任何请求的更改。

添加节点类型

可以通过门户、Azure 资源管理器模板或 PowerShell 将节点类型添加到 Service Fabric 托管群集。

使用门户添加

备注

只能使用门户添加次要节点类型

  1. 登录到 Azure 门户

  2. 导航到群集资源概述页面。 示例概述页面

  3. Settings 部分下选择 Node types节点类型视图

  4. 选择顶部的 Add,填写所需信息,然后选择底部的“添加”,就完成了!

  5. 等待新节点类型添加完成

使用 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,并且必须有多个可用的主节点类型。

使用门户删除

  1. 登录到 Azure 门户

  2. 导航到群集资源概述页面。 示例概述页面

  3. Settings 部分下选择 Node types节点类型视图

  4. 选择要删除的 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 个。

使用门户缩放

在本演练中,你将了解如何使用门户修改节点类型的节点计数。

  1. 登录到 Azure 门户

  2. 导航到群集资源概述页面。 示例概述页面

  3. Settings 部分下选择 Node Types

  4. 选择要修改的 Node type name

  5. 查看并更新节点类型属性(如有需要)。

显示节点计数增加的示例

  1. 选择 Manage node type scaling 以配置缩放设置,并在自定义自动缩放和手动缩放选项之间进行选择。 自动缩放是一项内置功能,可帮助应用程序在需求改变时达到最佳性能。 可以选择手动将资源缩放到特定实例计数,或者通过自定义自动缩放策略来根据指标阈值进行缩放。 还可以安排实例计数在指定的时间窗口内缩放。 详细了解 Azure 自动缩放观看操作说明视频

    • 自定义自动缩放:选择合适的 scale mode 以定义自定义自动缩放策略 - Scale to a specific instance countScale based on a metric。 后者基于指标触发器规则,例如,当 CPU 百分比高于 70% 时,实例计数增加 1。 定义策略后,选择顶部的 Save

      展现自动缩放设置的示例

    • 手动缩放:将 Node count 调整为所需的新值,然后选择顶部的 Save。 在此屏幕截图中,值原本为 3,将其调整成了 5

      展现手动缩放设置的示例

    选择底部的 Apply 以在节点类型上配置这些已保存的设置。

  2. 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 映像。

  1. 登录到 Azure 门户

  2. 导航到群集资源概述页面。 示例概述页面

  3. Settings 部分下选择 Node Types

  4. 选择要修改的 Node type name

  5. OS Image 调整为所需的新值,然后选择底部的 Apply。 ![显示正在更改 OS 映像的示例][change-os-image]

  6. 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 配置这些属性。

使用门户配置放置属性

在本演练中,你将了解如何使用门户修改节点类型的放置属性。

  1. 登录到 Azure 门户

  2. 导航到群集资源概述页面。 示例概述页面

  3. Settings 部分下选择 Node Types

  4. 选择要修改的 Node type name

  5. Placement properties 部分,添加你想要的名称和值,然后选择底部的 Apply。 在此屏幕截图中,Name SSD_Premium 与为 trueValue 一起使用。 显示正在添加放置属性的示例

  6. 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"
  }
} 

后续步骤