部署每个 NodeType 一个子网的 Service Fabric 托管群集
在自带虚拟网络方案中,Service Fabric 托管群集现在支持每个 NodeType 使用不同子网。 由于每个 NodeType 使用不同子网,客户可以将特定应用程序部署到特定子网,并通过网络安全组 (NSG) 规则利用流量管理。 客户可以通过这种配置加强部署的网络隔离。 此功能适用于主要 NodeType 和辅助 NodeType。
先决条件
为方案正确配置托管群集的网络。 在自带虚拟网络方案中,每个 NodeType 可以使用不同子网。 还可以根据需要自带 Azure 负载均衡器。 按照群集的相应步骤操作:
你需要在子网上配置 NSG 的规则,以允许来自 Service Fabric 资源提供程序 (SFRP) 的连接。 具体而言,必须允许 SFMC_AllowServiceFabricGatewayToSFRP
和 SFMC_AllowServiceFabricGatewayToLB
。
SFMC_AllowServiceFabricGatewayToSFRP
NSG 规则应采用以下形式:
规则 | 目标端口范围 | 协议 | 源地址前缀 | 目标地址前缀 | Access |
---|---|---|---|---|---|
SFMC_AllowServiceFabricGatewayToSFRP | 19000、19080 | TCP | ServiceFabric | VirtualNetwork | 允许 |
SFMC_AllowServiceFabricGatewayToLB
NSG 规则应采用以下形式:
规则 | 目标端口范围 | 协议 | 源地址前缀 | 目标地址前缀 | Access |
---|---|---|---|---|---|
SFMC_AllowServiceFabricGatewayToLB | 任意 | 任意 | AzureLoadBalancer | VirtualNetwork | 允许 |
有关 NSG 规则的 ARM 模板格式设置,请参阅“为 Service Fabric 托管群集配置网络设置”的“NSG 规则:SFMC_AllowServiceFabricGatewayToSFRP”部分作为示例。
每个 NodeType 一个子网仅适用于 Service Fabric API 版本 2022-10-01 preview
或更高版本。
注意事项和限制
- 对于指定了
subnetId
的自带虚拟网络配置中的现有群集,启用每个 NodeType 一个子网将替代当前 NodeType 的现有值。 - 对于新群集,客户需要在群集级别指定
useCustomVNet : true
。 此设置指示群集使用自带虚拟网络,但子网在 NodeType 级别指定。 对于此类群集,不会在托管资源组中创建虚拟网络。 对于此类群集,NodeType 需要subnetId
属性。
在 ARM 模板中包含 subnetId 属性
创建新的 NodeType 时,需要使用这个新的 subnetId
属性修改 ARM 模板。
{
"apiVersion": "2022-10-01-preview",
"type": "Microsoft.ServiceFabric/managedclusters/nodetypes",
"name": "[concat(parameters('clusterName'), '/', parameters('nodeTypeName'))]",
"location": "[parameters('clusterLocation')]",
"dependsOn": [
"[concat('Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'))]"
],
"properties": {
"isPrimary": false,
"subnetId": "[parameters('nodeTypeSubnetId')]",
"dataDiskSizeGB": "[parameters('dataDiskSizeGB')]",
"vmImagePublisher": "[parameters('vmImagePublisher')]",
"vmImageOffer": "[parameters('vmImageOffer')]",
"vmImageSku": "[parameters('vmImageSku')]",
"vmImageVersion": "[parameters('vmImageVersion')]",
"vmSize": "[parameters('vmSize')]",
"vmInstanceCount": "[parameters('vmInstanceCount')]"
}
}