部署具有 Stateless-only 節點類型的 Service Fabric 叢集
Service Fabric 節點類型隨附固有的假設,在某個時間點,可設定狀態的服務可能會放在節點上。 無狀態節點類型會變更此假設的節點類型,因此可讓節點類型使用其他功能,例如更快的擴展作業、支援以銅級持久性自動執行作業系統升級,以及在單一虛擬機器擴展集中擴展至超過 100 個節點。
- 主要節點類型無法設定為無狀態
- 只有銅級持久性層級支援無狀態節點類型
- 只有 Service Fabric 執行階段版本 7.1.409 或更高版本才支援無狀態節點類型。
可用的範例範本:Service Fabric 無狀態節點類型範本
在 Service Fabric 叢集中啟用無狀態節點類型
若要在叢集資源中將一或多個節點類型設定為無狀態,請將 isStateless 屬性設定為 true。 部署具有無狀態節點類型的 Service Fabric 叢集時,請記得在叢集資源中至少要有一個主要節點類型。
- Service Fabric 叢集資源 apiVersion 必須是 "2020-12-01-preview" 或更高版本。
{
"nodeTypes": [
{
"name": "[parameters('vmNodeType0Name')]",
"applicationPorts": {
"endPort": "[parameters('nt0applicationEndPort')]",
"startPort": "[parameters('nt0applicationStartPort')]"
},
"clientConnectionEndpointPort": "[parameters('nt0fabricTcpGatewayPort')]",
"durabilityLevel": "Silver",
"ephemeralPorts": {
"endPort": "[parameters('nt0ephemeralEndPort')]",
"startPort": "[parameters('nt0ephemeralStartPort')]"
},
"httpGatewayEndpointPort": "[parameters('nt0fabricHttpGatewayPort')]",
"isPrimary": true,
"isStateless": false, // Primary Node Types cannot be stateless
"vmInstanceCount": "[parameters('nt0InstanceCount')]"
},
{
"name": "[parameters('vmNodeType1Name')]",
"applicationPorts": {
"endPort": "[parameters('nt1applicationEndPort')]",
"startPort": "[parameters('nt1applicationStartPort')]"
},
"clientConnectionEndpointPort": "[parameters('nt1fabricTcpGatewayPort')]",
"durabilityLevel": "Bronze",
"ephemeralPorts": {
"endPort": "[parameters('nt1ephemeralEndPort')]",
"startPort": "[parameters('nt1ephemeralStartPort')]"
},
"httpGatewayEndpointPort": "[parameters('nt1fabricHttpGatewayPort')]",
"isPrimary": false,
"isStateless": true,
"vmInstanceCount": "[parameters('nt1InstanceCount')]"
}
],
}
設定無狀態節點類型的虛擬機器擴展集
若要啟用無狀態節點類型,您必須以下列方式設定基礎虛擬機器擴展集資源:
- 如果您需要擴展至超過 100 個 VM,則 singlePlacementGroup 屬性值應設定為 false。
- 擴展集的 upgradePolicy 應設定為 Rolling。
- 必須設定應用程式健康情況擴充功能或健康情況探查,才能使用輪流升級模式。 如需設定健全狀態探查或應用程式健康情況延伸模組的詳細資訊,請參閱此文件。使用無狀態節點類型的預設設定來設定健全狀態探查,如下所建議。 將應用程式部署至節點類型後,您就可以變更健康情況探查/健康情況擴充功能連接埠,來監視實際的應用程式健康情況。
注意
使用無狀態節點類型的自動調整時,在縮小作業之後,節點狀態不會自動清除。 為了在自動調整期間清除向下節點的 NodeState,建議使用 Service Fabric 自動調整協助程式。
{
"apiVersion": "2019-03-01",
"type": "Microsoft.Compute/virtualMachineScaleSets",
"name": "[parameters('vmNodeType1Name')]",
"location": "[parameters('computeLocation')]",
"properties": {
"overprovision": "[variables('overProvision')]",
"upgradePolicy": {
"mode": "Rolling",
"automaticOSUpgradePolicy": {
"enableAutomaticOSUpgrade": true
}
},
"platformFaultDomainCount": 5
},
"virtualMachineProfile": {
"extensionProfile": {
"extensions": [
{
"name": "[concat(parameters('vmNodeType1Name'),'_ServiceFabricNode')]",
"properties": {
"type": "ServiceFabricNode",
"autoUpgradeMinorVersion": false,
"publisher": "Microsoft.Azure.ServiceFabric",
"settings": {
"clusterEndpoint": "[reference(parameters('clusterName')).clusterEndpoint]",
"nodeTypeRef": "[parameters('vmNodeType1Name')]",
"dataPath": "D:\\\\SvcFab",
"durabilityLevel": "Bronze",
"certificate": {
"thumbprint": "[parameters('certificateThumbprint')]",
"x509StoreName": "[parameters('certificateStoreValue')]"
},
"systemLogUploadSettings": {
"Enabled": true
},
},
"typeHandlerVersion": "1.1"
}
},
{
"type": "extensions",
"name": "HealthExtension",
"properties": {
"publisher": "Microsoft.ManagedServices",
"type": "ApplicationHealthWindows",
"autoUpgradeMinorVersion": true,
"typeHandlerVersion": "1.0",
"settings": {
"protocol": "tcp",
"port": "19000"
}
}
},
]
}
設定具有多個可用性區域的無狀態節點類型
若要設定跨越多個可用性區域的無狀態節點類型,請遵循此處說明和以下這些變更:
- 設定 singlePlacementGroup : 如果需要啟用多個放置群組,則為 false 。
- 設定 upgradePolicy:設定為 Rolling 並新增應用程式健康情況擴充功能/健康情況探查,如上所述。
- platformFaultDomainCount:為虛擬機器擴展集設定 5。
如需參考,請參閱設定具有多個可用性區域之無狀態節點類型的範本
網路需求
公用 IP 和負載平衡器資源
若要在虛擬機器擴展集資源上啟用超過 100 個 VM 的擴展,該虛擬機器擴展集所參考的負載平衡器和 IP 資源必須同時使用標準 SKU。 在沒有 SKU 屬性的情況下建立 IP 資源將會建立基本 SKU,不支援調整為超過 100 部 VM。 標準 SKU 負載平衡器預設會封鎖來自外部的所有流量;若要允許外部流量,必須將 NSG 部署至子網。
{
"apiVersion": "2018-11-01",
"type": "Microsoft.Network/publicIPAddresses",
"name": "[concat('LB','-', parameters('clusterName')]",
"location": "[parameters('computeLocation')]",
"sku": {
"name": "Standard"
}
}
{
"apiVersion": "2018-11-01",
"type": "Microsoft.Network/loadBalancers",
"name": "[concat('LB','-', parameters('clusterName')]",
"location": "[parameters('computeLocation')]",
"dependsOn": [
"[concat('Microsoft.Network/networkSecurityGroups/', concat('nsg', parameters('subnet0Name')))]"
],
"properties": {
"addressSpace": {
"addressPrefixes": [
"[parameters('addressPrefix')]"
]
},
"subnets": [
{
"name": "[parameters('subnet0Name')]",
"properties": {
"addressPrefix": "[parameters('subnet0Prefix')]",
"networkSecurityGroup": {
"id": "[resourceId('Microsoft.Network/networkSecurityGroups', concat('nsg', parameters('subnet0Name')))]"
}
}
}
]
},
"sku": {
"name": "Standard"
}
}
注意
您無法在公用 IP 和負載平衡器資源上進行 SKU 的就地變更。
虛擬機器擴展集 NAT 名稱
負載平衡器的輸入 NAT 規則應符合虛擬機器擴展集的 NAT 集區。 每個虛擬機器擴展集都必須有唯一的輸入 NAT 集區。
{
"inboundNatPools": [
{
"name": "LoadBalancerBEAddressNatPool0",
"properties": {
"backendPort": "3389",
"frontendIPConfiguration": {
"id": "[variables('lbIPConfig0')]"
},
"frontendPortRangeEnd": "50999",
"frontendPortRangeStart": "50000",
"protocol": "tcp"
}
},
{
"name": "LoadBalancerBEAddressNatPool1",
"properties": {
"backendPort": "3389",
"frontendIPConfiguration": {
"id": "[variables('lbIPConfig0')]"
},
"frontendPortRangeEnd": "51999",
"frontendPortRangeStart": "51000",
"protocol": "tcp"
}
},
{
"name": "LoadBalancerBEAddressNatPool2",
"properties": {
"backendPort": "3389",
"frontendIPConfiguration": {
"id": "[variables('lbIPConfig0')]"
},
"frontendPortRangeEnd": "52999",
"frontendPortRangeStart": "52000",
"protocol": "tcp"
}
}
]
}
標準 SKU 負載平衡器輸出規則
相較於使用基本 SKU,標準公用 IP 引進了輸出連線的新功能和不同行為。 如果您想要在使用標準 SKU 時輸出連線,您必須使用標準公用 IP 位址或標準公用 Load Balancer 明確定義該連線。 如需詳細資訊,請參閱輸出連線和 Azure 標準負載平衡器。
注意
標準範本會參考 NSG,以根據預設允許所有輸出流量。 輸入流量僅限於 Service Fabric 管理作業所需的連接埠。 NSG 規則可以修改為符合您的需求。
注意
凡是使用標準 SKU SLB 的 Service Fabric 叢集,都必須確保每個節點類型均有允許連接埠 443 上輸出流量的規則。 這是完成叢集設定的必要步驟,沒有這類規則的部署將會失敗。
移轉至在叢集中使用無狀態節點類型
在所有的遷移案例中,都必須新增 Stateless-only 的節點類型。 現有的節點類型無法移轉為僅限無狀態。
若要移轉使用具有基本 SKU 的 IP 叢集,您必須先使用標準 SKU 建立全新的 IP 資源。 您無法就地更新這些資源。
在您要使用的新無狀態節點類型中,必須參考新的 LB 和 IP。 上方的範例新增了用於無狀態節點類型的虛擬機器擴展集資源。 這些虛擬機器擴展集會參考新建立的 LB 和 IP,並在 Service Fabric 叢集資源中標示為無狀態節點類型。
若要開始,您必須將新的資源新增至現有的 Resource Manager 範本。 這些資源包括:
- 使用標準 SKU 的公用 IP 資源。
- 使用標準 SKU 的負載平衡器資源。
- 您要在其中部署虛擬機器擴展集的子網路所參考的 NSG。
資源部署完成之後,您就可以開始停用節點類型中想要從原始叢集移除的節點。