Udostępnij za pośrednictwem


Wdrażanie klastra usługi Azure Service Fabric z typami węzłów tylko bezstanowymi

Typy węzłów usługi Service Fabric są związane z założeniem, że w pewnym momencie usługi stanowe mogą być umieszczane w węzłach. Typy węzłów bezstanowych zmieniają to założenie dla typu węzła, co pozwala typowi węzła na korzystanie z innych funkcji, takich jak szybsze operacje skalowania w poziomie, obsługa automatycznych uaktualnień systemu operacyjnego na brąz trwałości i skalowanie w poziomie do ponad 100 węzłów w jednym zestawie skalowania maszyn wirtualnych.

  • Nie można skonfigurować typów węzłów podstawowych jako bezstanowych
  • Typy węzłów bezstanowych są obsługiwane tylko w przypadku poziomów trwałości z brązu
  • Typy węzłów bezstanowych są obsługiwane tylko w środowisku uruchomieniowym usługi Service Fabric w wersji 7.1.409 lub nowszej.

Dostępne są przykładowe szablony: szablon Typy węzłów bezstanowych usługi Service Fabric

Włączanie typów węzłów bezstanowych w klastrze usługi Service Fabric

Aby ustawić co najmniej jeden typ węzła jako bezstanowy w zasobie klastra, ustaw właściwość isStateless na true. Podczas wdrażania klastra usługi Service Fabric z typami węzłów bezstanowych pamiętaj, aby mieć jeden podstawowy typ węzła w zasobie klastra.

  • Wersja apiVersion zasobu klastra usługi Service Fabric powinna mieć wartość "2020-12-01-preview" lub nowsza.
{
    "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')]"
    }    
    ],
}

Konfigurowanie zestawu skalowania maszyn wirtualnych dla typów węzłów bezstanowych

Aby włączyć typy węzłów bezstanowych, należy skonfigurować bazowy zasób zestawu skalowania maszyn wirtualnych w następujący sposób:

  • Wartość właściwości singlePlacementGroup , która powinna być ustawiona na wartość false , jeśli wymagane jest skalowanie do więcej niż 100 maszyn wirtualnych.
  • Zasady uaktualniania zestawu skalowania powinny być ustawione na Wartość Rolling.
  • Tryb uaktualniania stopniowego wymaga skonfigurowania rozszerzenia kondycji aplikacji lub sond kondycji. Aby uzyskać więcej informacji na temat konfigurowania sond kondycji lub rozszerzenia kondycji aplikacji, zapoznaj się z tym dokumentem. Skonfiguruj sondę kondycji z domyślną konfiguracją dla typów węzłów bezstanowych, jak pokazano poniżej. Po wdrożeniu aplikacji do typu węzła można zmienić porty rozszerzenia Sonda kondycji/Kondycja, aby monitorować rzeczywistą kondycję aplikacji.

Uwaga

Podczas korzystania z skalowania automatycznego z typami węzłów bezstanowych po operacji skalowania w dół stan węzła nie jest automatycznie czyszczony. Aby wyczyścić węzeł NodeState węzłów w dół podczas autoskalowania, zaleca się użycie pomocnika autoskalowania usługi 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"
            }
            }
        },
    ]
}

Konfigurowanie typów węzłów bezstanowych z wieloma Strefy dostępności

Aby skonfigurować typ węzła bezstanowego obejmujący wiele stref dostępności, postępuj zgodnie z dokumentacją w tym miejscu wraz z kilkoma zmianami w następujący sposób:

  • Ustaw wartość singlePlacementGroup : false , jeśli do włączenia wielu grup umieszczania jest wymaganych.
  • Ustaw element upgradePolicy : rolling and add Application Health Extension/Health Probes (Ustaw element upgradePolicy: rolling and add Application Health Extension/Health Probes as mentioned above).
  • Ustaw wartość platformFaultDomainCount : 5 dla zestawu skalowania maszyn wirtualnych.

Aby zapoznać się z dokumentacją, zapoznaj się z szablonem konfigurowania typów węzłów bezstanowych z wieloma Strefy dostępności

Wymagania dotyczące sieci

Publiczny adres IP i zasób Load Balancer

Aby włączyć skalowanie do ponad 100 maszyn wirtualnych w zasobie zestawu skalowania maszyn wirtualnych, moduł równoważenia obciążenia i zasób IP, do którego odwołuje się ten zestaw skalowania maszyn wirtualnych, musi używać jednostki SKU w warstwie Standardowa . Utworzenie zasobu modułu równoważenia obciążenia lub adresu IP bez właściwości jednostki SKU spowoduje utworzenie jednostki SKU w warstwie Podstawowa, która nie obsługuje skalowania do więcej niż 100 maszyn wirtualnych. Moduł równoważenia obciążenia jednostki SKU w warstwie Standardowa domyślnie zablokuje cały ruch z zewnątrz; aby zezwolić na ruch zewnętrzny, sieciowa grupa zabezpieczeń musi zostać wdrożona w podsieci.

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

Uwaga

Nie można przeprowadzić zmiany jednostki SKU w miejscu w publicznym adresie IP i zasobach modułu równoważenia obciążenia.

Reguły NAT zestawu skalowania maszyn wirtualnych

Reguły NAT dla ruchu przychodzącego modułu równoważenia obciążenia powinny być zgodne z pulami translatora adresów sieciowych z zestawu skalowania maszyn wirtualnych. Każdy zestaw skalowania maszyn wirtualnych musi mieć unikatową pulę nat dla ruchu przychodzącego.

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

Standardowa jednostka SKU Load Balancer reguł ruchu wychodzącego

usługa Load Balancer w warstwie Standardowa i standardowy publiczny adres IP wprowadzają nowe możliwości i różne zachowania łączności wychodzącej w porównaniu z użyciem jednostek SKU w warstwie Podstawowa. Jeśli chcesz, aby łączność wychodząca podczas pracy z jednostkami SKU w warstwie Standardowa była jawnie definiowana z publicznymi adresami IP w warstwie Standardowa lub publicznymi Load Balancer w warstwie Standardowa. Aby uzyskać więcej informacji, zobacz Połączenia wychodzące i Azure usługa Load Balancer w warstwie Standardowa.

Uwaga

Standardowy szablon odwołuje się do sieciowej grupy zabezpieczeń, która domyślnie zezwala na cały ruch wychodzący. Ruch przychodzący jest ograniczony do portów wymaganych przez operacje zarządzania usługą Service Fabric. Reguły sieciowej grupy zabezpieczeń można zmodyfikować w celu spełnienia wymagań.

Uwaga

Każdy klaster usługi Service Fabric korzystający z usługi SLB w warstwie Standardowa musi mieć pewność, że każdy typ węzła ma regułę zezwalającą na ruch wychodzący na porcie 443. Jest to konieczne do ukończenia konfiguracji klastra, a każde wdrożenie bez takiej reguły zakończy się niepowodzeniem.

Migrowanie do używania typów węzłów bezstanowych w klastrze

W przypadku wszystkich scenariuszy migracji należy dodać nowy typ węzła tylko bezstanowy. Nie można migrować istniejącego typu węzła jako bezstanowego.

Aby przeprowadzić migrację klastra, który używał Load Balancer i adresu IP z podstawową jednostkę SKU, należy najpierw utworzyć zupełnie nowy zasób Load Balancer i IP przy użyciu standardowej jednostki SKU. Nie można zaktualizować tych zasobów w miejscu.

Nowy moduł równoważenia obciążenia i adres IP powinny być przywołyne w nowych typach węzłów bezstanowych, których chcesz użyć. W powyższym przykładzie dodano nowe zasoby zestawu skalowania maszyn wirtualnych, które mają być używane dla typów węzłów bezstanowych. Te zestawy skalowania maszyn wirtualnych odwołują się do nowo utworzonego modułu równoważenia obciążenia i adresu IP i są oznaczone jako typy węzłów bezstanowych w zasobie klastra usługi Service Fabric.

Aby rozpocząć, należy dodać nowe zasoby do istniejącego szablonu Resource Manager. Te zasoby obejmują:

  • Zasób publicznego adresu IP korzystający z jednostki SKU w warstwie Standardowa.
  • Zasób Load Balancer przy użyciu jednostki SKU w warstwie Standardowa.
  • Sieciowa grupa zabezpieczeń, do której odwołuje się podsieć, w której są wdrażane zestawy skalowania maszyn wirtualnych.

Po zakończeniu wdrażania zasobów można rozpocząć wyłączanie węzłów w typie węzła, który chcesz usunąć z oryginalnego klastra.

Następne kroki