你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
通过无状态节点类型部署 Service Fabric 托管群集
关于 Service Fabric 节点类型,存在一种固有假设,即在某个时间点,有状态服务可能会被放置到节点上。 无状态节点类型更改了节点类型的这一假设。 这样,节点类型就可以受益于更快的横向扩展操作、自动 OS 升级支持、现成 VM 以及将一个节点类型横向扩展到超过 100 个节点等功能。
- 主节点类型不能配置为无状态。
- 无状态节点类型需使用 2021-05-01 或更高版本的 API。
- 这样会自动将 multipleplacementgroup 属性设置为 true,可在此处了解相关详细信息。 启用此属性的基础虚拟机规模集要求和限制适用于 Service Fabric 托管群集。
- 这样,给定节点类型将最多支持 1000 个节点。
- 无状态节点类型可以利用 VM SKU 临时磁盘。
在 Service Fabric 托管群集中启用无状态节点类型
若要在节点类型资源中将一个或多个节点类型设置为无状态,请将“isStateless”属性设置为“true” 。 部署具有无状态节点类型的 Service Fabric 群集时,设置需至少具有一种在群集中不是无状态的主节点类型。
现提供示例模板:Service Fabric 无状态节点类型模板
- Service Fabric 托管群集资源 apiVersion 应为 2021-05-01 或更高版本。
{
"apiVersion": "[variables('sfApiVersion')]",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
"name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeName'))]",
"location": "[resourcegroup().location]",
"dependsOn": [
"[concat('Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'))]"
],
"properties": {
"isStateless": true,
"isPrimary": false,
"vmImagePublisher": "[parameters('vmImagePublisher')]",
"vmImageOffer": "[parameters('vmImageOffer')]",
"vmImageSku": "[parameters('vmImageSku')]",
"vmImageVersion": "[parameters('vmImageVersion')]",
"vmSize": "[parameters('nodeTypeSize')]",
"vmInstanceCount": "[parameters('nodeTypeVmInstanceCount')]",
"dataDiskSizeGB": "[parameters('nodeTypeDataDiskSizeGB')]"
}
}
使用 Service Fabric 托管群集中的现成 VM 启用无状态节点类型
规模集上的 Azure 现成虚拟机支持用户利用未使用的计算容量,同时大幅降低成本。 每当 Azure 需要回收容量时,Azure 基础结构就会逐出这些 Azure 现成虚拟机实例。 因此,现成 VM 节点类型非常适合于可以处理中断、且不需要在特定时间范围内完成的工作负载。 建议的工作负载包括开发、测试、批处理作业、大数据或其他大规模无状态场景。
若要将一种或多种无状态节点类型设置为使用现成 VM,请将 isStateless 和 IsSpotVM 属性设置为 true。 部署具有无状态节点类型的 Service Fabric 群集时,需至少具有一种在群集中不是无状态的主节点类型。 配置为使用现成 VM 的无状态节点类型默认将“逐出策略”设置为“删除”。 客户可以将“evictionPolicy”配置为“删除”或“解除分配”,但这只能在创建节点类型时定义。
现提供示例模板:Service Fabric 现成节点类型模板
- Service Fabric 托管群集资源 apiVersion 应为 2022-06-01-preview 或更高版本。
{
"apiVersion": "[variables('sfApiVersion')]",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
"name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeName'))]",
"location": "[resourcegroup().location]",
"dependsOn": [
"[concat('Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'))]"
],
"properties": {
"isStateless": true,
"isPrimary": false,
"IsSpotVM": true,
"vmImagePublisher": "[parameters('vmImagePublisher')]",
"vmImageOffer": "[parameters('vmImageOffer')]",
"vmImageSku": "[parameters('vmImageSku')]",
"vmImageVersion": "[parameters('vmImageVersion')]",
"vmSize": "[parameters('nodeTypeSize')]",
"vmInstanceCount": "[parameters('nodeTypeVmInstanceCount')]",
"dataDiskSizeGB": "[parameters('nodeTypeDataDiskSizeGB')]"
}
}
通过“尝试与还原”启用现成 VM
此配置使平台能够自动尝试还原已逐出的现成 VM。 有关详细信息,请参阅虚拟机规模集文档。 只能通过指定 spotRestoreTimeout(这是一个 ISO 8601 持续时间,其值介于 30 和 2880 分钟之间)在新的现成节点类型上启用此配置。 在逐出后,平台将尝试在这段时间内还原 VM。
{
"apiVersion": "[variables('sfApiVersion')]",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
"name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeName'))]",
"location": "[resourcegroup().location]",
"dependsOn": [
"[concat('Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'))]"
],
"properties": {
"isStateless": true,
"isPrimary": false,
"IsSpotVM": true,
"evictionPolicy": "deallocate",
"spotRestoreTimeout": "PT30M",
"vmImagePublisher": "[parameters('vmImagePublisher')]",
"vmImageOffer": "[parameters('vmImageOffer')]",
"vmImageSku": "[parameters('vmImageSku')]",
"vmImageVersion": "[parameters('vmImageVersion')]",
"vmSize": "[parameters('nodeTypeSize')]",
"vmInstanceCount": "[parameters('nodeTypeVmInstanceCount')]",
"dataDiskSizeGB": "[parameters('nodeTypeDataDiskSizeGB')]"
}
}
为区域复原能力配置无状态节点类型
若要为区域复原能力配置无状态节点类型,必须在群集级别配置托管群集区域跨越。
注意
必须在群集级别设置区域复原能力属性,并且不能就地更改该属性。
临时磁盘支持
可以将无状态节点类型配置为使用临时磁盘作为数据磁盘,而不是托管磁盘。 使用临时磁盘可以降低无状态工作负载的成本。 若要将无状态节点类型配置为使用临时磁盘,将 useTempDataDisk 属性设置为 true。
- 临时磁盘大小必须为 32 GB 或更多。 临时磁盘的大小取决于 VM 大小。
- 服务器端加密不会加密临时磁盘,除非你在主机上启用加密。
- Service Fabric 托管群集资源 apiVersion 应为 2022-01-01 或更高版本。
{
"apiVersion": "[variables('sfApiVersion')]",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
"name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeName'))]",
"location": "[resourcegroup().location]",
"dependsOn": [
"[concat('Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'))]"
],
"properties": {
"isStateless": true,
"isPrimary": false,
"vmImagePublisher": "[parameters('vmImagePublisher')]",
"vmImageOffer": "[parameters('vmImageOffer')]",
"vmImageSku": "[parameters('vmImageSku')]",
"vmImageVersion": "[parameters('vmImageVersion')]",
"vmSize": "[parameters('nodeTypeSize')]",
"vmInstanceCount": "[parameters('nodeTypeVmInstanceCount')]",
"useTempDataDisk": true
}
}
迁移为在群集中使用无状态节点类型
对于所有迁移场景,都需要添加一个新的无状态节点类型。 现有节点类型不能迁移为无状态。 可以向现有 Service Fabric 托管群集添加新的无状态节点类型,并从该群集中删除所有初始节点类型。
后续步骤
若要详细了解 Service Fabric 托管群集,请参阅: