Sdílet prostřednictvím


Nasazení clusteru Azure Service Fabric s bezstavovými typy uzlů

Typy uzlů Service Fabric mají vlastní předpoklad, že v určitém okamžiku se stavové služby můžou na uzly umístit. Bezstavové typy uzlů mění tento předpoklad pro typ uzlu, což umožňuje, aby typ uzlu používal další funkce, jako je rychlejší operace horizontálního navýšení kapacity, podpora automatických upgradů operačního systému v bronzové odolnosti a horizontální navýšení kapacity na více než 100 uzlů ve škálovací sadě virtuálních počítačů.

  • Primární typy uzlů nelze nakonfigurovat tak, aby byly bezstavové.
  • Bezstavové typy uzlů jsou podporovány pouze s bronzovými úrovněmi stálosti.
  • Bezstavové typy uzlů jsou podporovány pouze v modulu runtime Service Fabric verze 7.1.409 nebo vyšší.

K dispozici jsou ukázkové šablony: Šablona bezstavových typů uzlů Service Fabric

Povolení bezstavových typů uzlů v clusteru Service Fabric

Chcete-li nastavit jeden nebo více typů uzlů jako bezstavový v prostředku clusteru, nastavte vlastnost isStateless na hodnotu true. Při nasazování clusteru Service Fabric s bezstavovými typy uzlů nezapomeňte mít alespoň jeden primární typ uzlu v prostředku clusteru.

  • ApiVersion prostředků clusteru Service Fabric by mělo být 2020-12-01-preview nebo vyšší.
{
    "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')]"
    }    
    ],
}

Konfigurace škálovací sady virtuálních počítačů pro typy bezstavových uzlů

Pokud chcete povolit bezstavové typy uzlů, měli byste nakonfigurovat základní prostředek škálovací sady virtuálních počítačů následujícím způsobem:

  • Hodnota singlePlacementGroup vlastnost, která by měla být nastavena na false pokud potřebujete škálovat na více než 100 virtuálních počítačů.
  • Zásada upgradu škálovací sady by měla být nastavená na Rolling.
  • Režim postupného upgradu vyžaduje nakonfigurované rozšíření stavu aplikace nebo sondy stavu. Další podrobnosti o konfiguraci sond stavu nebo rozšíření stavu aplikace najdete v tomto dokumentu. Nakonfigurujte sondu stavu s výchozí konfigurací pro typy bezstavových uzlů, jak je doporučeno níže. Po nasazení aplikací do typu uzlu je možné změnit porty rozšíření Sonda stavu nebo Stav, aby se monitorovaly skutečné stav aplikace.

Poznámka:

Při použití automatického škálování s typy bezstavových uzlů se po operaci vertikálního snížení kapacity stav uzlu automaticky nevyčistí. Pokud chcete vyčistit NodeState of Down Nodes během automatického škálování, doporučujeme použít pomocníka pro automatické škálování 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"
            }
            }
        },
    ]
}

Konfigurace typů bezstavových uzlů s více Zóny dostupnosti

Pokud chcete nakonfigurovat bezstavový typ uzlu v několika zónách dostupnosti, postupujte podle této dokumentace spolu s několika změnami následujícím způsobem:

  • Nastavte singlePlacementGroup : false , pokud je nutné povolit více skupin umístění.
  • Nastavte upgradePolicy : Rolling and add Application Health Extension/Health Probes, jak je uvedeno výše.
  • Nastavení platformyFaultDomainCount : 5 pro škálovací sadu virtuálních počítačů

Referenční informace najdete v šabloně pro konfiguraci typů bezstavových uzlů s více Zóny dostupnosti

Požadavky na síť

Prostředek veřejné IP adresy a Load Balanceru

Aby bylo možné škálování na více než 100 virtuálních počítačů na prostředku škálovací sady virtuálních počítačů, musí nástroj pro vyrovnávání zatížení a prostředek IP odkazovaný na danou škálovací sadu virtuálních počítačů používat skladovou položku Standard . Vytvoření nástroje pro vyrovnávání zatížení nebo prostředku IP bez vlastnosti skladové položky vytvoří skladovou položku Basic, která nepodporuje škálování na více než 100 virtuálních počítačů. Nástroj pro vyrovnávání zatížení skladové položky Standard ve výchozím nastavení zablokuje veškerý provoz zvenčí; pokud chcete povolit vnější provoz, musí být skupina zabezpečení sítě nasazená do podsítě.

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

Poznámka:

U veřejných IP adres a prostředků nástroje pro vyrovnávání zatížení není možné provést místní změnu skladové položky.

Pravidla překladu adres (NAT) škálovací sady virtuálních počítačů

Pravidla příchozího překladu adres (NAT) nástroje pro vyrovnávání zatížení by se měla shodovat s fondy překladu adres (NAT) ze škálovací sady virtuálních počítačů. Každá škálovací sada virtuálních počítačů musí mít jedinečný příchozí fond překladu adres (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"
        }
    }
    ]
}

Odchozí pravidla Load Balanceru úrovně Standard

Služba Standard Load Balancer a veřejná IP adresa úrovně Standard přinášejí nové možnosti a různá chování odchozího připojení v porovnání s používáním skladových položek Basic. Pokud chcete odchozí připojení při práci se skladovými položkami Úrovně Standard, musíte ho explicitně definovat pomocí standardních veřejných IP adres nebo veřejného Load Balanceru úrovně Standard. Další informace najdete v tématu Odchozí připojení a Azure Standard Load Balancer.

Poznámka:

Standardní šablona odkazuje na skupinu zabezpečení sítě, která ve výchozím nastavení umožňuje veškerý odchozí provoz. Příchozí provoz je omezený na porty potřebné pro operace správy Service Fabric. Pravidla NSG je možné upravit tak, aby splňovala vaše požadavky.

Poznámka:

Každý cluster Service Fabric, který využívá SLB úrovně Standard, musí zajistit, aby každý typ uzlu používal pravidlo umožňující odchozí provoz na portu 443. To je nezbytné k dokončení nastavení clusteru a jakékoli nasazení bez takového pravidla selže.

Migrace na používání bezstavových typů uzlů v clusteru

Pro všechny scénáře migrace je potřeba přidat nový bezstavový typ uzlu. Existující typ uzlu nelze migrovat tak, aby byl bezstavový.

Pokud chcete migrovat cluster, který používal Load Balancer a IP adresu se základní skladovou jednotkou, musíte nejprve vytvořit zcela nový nástroj pro vyrovnávání zatížení a prostředek PROTOKOLU IP pomocí standardní skladové položky. Tyto prostředky není možné aktualizovat na místě.

Na nový nástroj pro vyrovnávání zatížení a IP adresu byste měli odkazovat v nových typech bezstavových uzlů, které chcete použít. V předchozím příkladu se přidá nové prostředky škálovací sady virtuálních počítačů, které se použijí pro typy bezstavových uzlů. Tyto škálovací sady virtuálních počítačů odkazují na nově vytvořené nástroje pro vyrovnávání zatížení a IP adresy a v prostředku clusteru Service Fabric jsou označené jako typy bezstavových uzlů.

Abyste mohli začít, budete muset nové prostředky přidat do existující šablony Resource Manageru. Mezi tyto prostředky patří:

  • Prostředek veřejné IP adresy využívající skladovou položku Standard.
  • Prostředek Load Balanceru s využitím skladové položky Standard.
  • Skupina zabezpečení sítě, na kterou odkazuje podsíť, ve které nasadíte škálovací sady virtuálních počítačů.

Po dokončení nasazení prostředků můžete začít zakazovat uzly v typu uzlu, který chcete odebrat z původního clusteru.

Další kroky