Dela via


Distribuera ett Azure Service Fabric-kluster med tillståndslösa nodtyper

Service Fabric-nodtyperna förutsätter att tillståndskänsliga tjänster någon gång kan placeras på noderna. Tillståndslösa nodtyper ändrar det här antagandet för en nodtyp, vilket gör att nodtypen kan använda andra funktioner, till exempel snabbare skalningsåtgärder, stöd för automatiska OS-uppgraderingar på bronshållbarhet och utskalning till mer än 100 noder i en enda VM-skalningsuppsättning.

  • Primära nodtyper kan inte konfigureras att vara tillståndslösa
  • Tillståndslösa nodtyper stöds endast med bronshållbarhetsnivåer
  • Tillståndslösa nodtyper stöds endast på Service Fabric Runtime version 7.1.409 eller senare.

Exempelmallar är tillgängliga: Mall för Tillståndslösa nodtyper i Service Fabric

Aktivera tillståndslösa nodtyper i Service Fabric-kluster

Om du vill ange en eller flera nodtyper som tillståndslösa i en klusterresurs anger du egenskapen isStateless till true. När du distribuerar ett Service Fabric-kluster med tillståndslösa nodtyper ska du komma ihåg att ha minst en primär nodtyp i klusterresursen.

  • Service Fabric-klusterresursen apiVersion ska vara "2020-12-01-preview" eller högre.
{
    "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')]"
    }    
    ],
}

Konfigurera vm-skalningsuppsättning för tillståndslösa nodtyper

Om du vill aktivera tillståndslösa nodtyper bör du konfigurera den underliggande vm-skalningsuppsättningsresursen på följande sätt:

  • Egenskapen singlePlacementGroup som ska anges till false om du behöver skala till fler än 100 virtuella datorer.
  • Skalningsuppsättningens upgradePolicy ska vara inställd på Rullande.
  • Rullande uppgraderingsläge kräver att programhälsotillägget eller hälsoavsökningarna har konfigurerats. Mer information om hur du konfigurerar hälsoavsökningar eller programhälsotillägg finns i det här dokumentet. Konfigurera hälsoavsökning med standardkonfigurationen för tillståndslösa nodtyper enligt nedanstående förslag. När programmen har distribuerats till nodtypen kan portar för hälsoavsökning/hälsotillägg ändras för att övervaka den faktiska programhälsan.

Kommentar

När du använder autoskalning med tillståndslösa nodtyper rensas nodtillståndet inte automatiskt efter nedskalning. För att rensa NodeState för nednoder under autoskalning rekommenderar vi att du använder Service Fabric AutoScale Helper .

{
    "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"
            }
            }
        },
    ]
}

Konfigurera tillståndslösa nodtyper med flera Tillgänglighetszoner

Om du vill konfigurera tillståndslös nodtyp som sträcker sig över flera tillgänglighetszoner följer du dokumentationen här, tillsammans med några ändringar på följande sätt:

  • Ange singlePlacementGroup : false om flera placeringsgrupper krävs för att aktiveras.
  • Ange upgradePolicy : Rullande och lägg till Programhälsotillägg/Hälsoavsökningar enligt ovan.
  • Ange platformFaultDomainCount : 5 för VM-skalningsuppsättning.

Som referens kan du titta på mallen för att konfigurera tillståndslösa nodtyper med flera Tillgänglighetszoner

Nätverkskrav

Offentlig IP- och lastbalanserarresurs

Om du vill aktivera skalning till fler än 100 virtuella datorer på en vm-skalningsuppsättningsresurs måste både lastbalanseraren och IP-resursen som refereras av den virtuella datorskalningsuppsättningen använda en standard-SKU. Om du skapar en IP-resurs utan SKU-egenskapen skapas en grundläggande SKU som inte stöder skalning till fler än 100 virtuella datorer. En Standard SKU-lastbalanserare blockerar all trafik utifrån som standard. för att tillåta extern trafik måste en NSG distribueras till undernätet.

{
    "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"
    }
}

Kommentar

Det går inte att göra en ändring på plats av SKU på den offentliga IP- och lastbalanserarens resurser.

NAT-regler för VM-skalningsuppsättning

Lastbalanserarens inkommande NAT-regler ska matcha NAT-poolerna från vm-skalningsuppsättningen. Varje VM-skalningsuppsättning måste ha en unik inkommande NAT-pool.

{
"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"
        }
    }
    ]
}

Utgående regler för Standard SKU Load Balancer

Offentlig STANDARD-IP-adress introducerar nya funktioner och olika beteenden för utgående anslutning jämfört med att använda Basic SKU. Om du vill ha utgående anslutning när du arbetar med standard-SKU:er måste du uttryckligen definiera den antingen med offentliga STANDARD-IP-adresser eller Standard public Load Balancer. Mer information finns i Utgående anslutningar och Azure Standard Load Balancer.

Kommentar

Standardmallen refererar till en NSG som tillåter all utgående trafik som standard. Inkommande trafik är begränsad till de portar som krävs för Service Fabric-hanteringsåtgärder. NSG-reglerna kan ändras för att uppfylla dina krav.

Kommentar

Alla Service Fabric-kluster som använder en Standard SKU SLB måste se till att varje nodtyp har en regel som tillåter utgående trafik på port 443. Detta är nödvändigt för att slutföra klusterkonfigurationen, och all distribution utan en sådan regel misslyckas.

Migrera till att använda tillståndslösa nodtyper i ett kluster

För alla migreringsscenarier måste en ny tillståndslös nodtyp läggas till. Det går inte att migrera den befintliga nodtypen så att den endast är tillståndslös.

Om du vill migrera ett kluster, som använde en IP-adress med en grundläggande SKU, måste du först skapa en helt ny IP-resurs med hjälp av standard-SKU:n. Det går inte att uppdatera dessa resurser på plats.

Den nya lb- och IP-adressen ska refereras till i de nya tillståndslösa nodtyperna som du vill använda. I exemplet ovan läggs en ny vm-skalningsuppsättningsresurser till för att användas för tillståndslösa nodtyper. Dessa vm-skalningsuppsättningar refererar till den nyligen skapade LB och IP-adressen och markeras som tillståndslösa nodtyper i Service Fabric-klusterresursen.

Börja med att lägga till de nya resurserna i din befintliga Resource Manager-mall. Dessa resurser omfattar:

  • En offentlig IP-resurs med standard-SKU.
  • En lastbalanserarresurs med standard-SKU.
  • En NSG som refereras av undernätet där du distribuerar vm-skalningsuppsättningar.

När resurserna har distribuerats kan du börja inaktivera noderna i den nodtyp som du vill ta bort från det ursprungliga klustret.

Nästa steg