Sdílet prostřednictvím


Nasazení clusteru Azure Service Fabric napříč Zóny dostupnosti

Zóny dostupnosti v Azure je nabídka s vysokou dostupností, která chrání vaše aplikace a data před selháním datacentra. Zóna dostupnosti je jedinečné fyzické umístění vybavené nezávislým napájením, chlazením a sítí v rámci oblasti Azure.

Pro podporu clusterů, které se napříč Zóny dostupnosti, poskytuje Azure Service Fabric dvě metody konfigurace, jak je popsáno v následujícím článku. Zóny dostupnosti jsou k dispozici pouze ve vybraných oblastech. Další informace najdete v přehledu Zóny dostupnosti.

Ukázkové šablony jsou k dispozici v šablonách Service Fabric pro různé zóny dostupnosti.

Topologie pro přeskakování primárního typu uzlu napříč Zóny dostupnosti

Poznámka:

Výhoda přecházení primárního typu uzlu napříč zónami dostupnosti je skutečně viditelná pouze pro tři zóny, a ne jen pro dvě.

  • Úroveň spolehlivosti clusteru nastavená na Platinum
  • Jeden prostředek veřejné IP adresy s využitím skladové položky Standard
  • Jeden prostředek nástroje pro vyrovnávání zatížení s využitím skladové položky Standard
  • Skupina zabezpečení sítě (NSG), na kterou odkazuje podsíť, ve které nasadíte škálovací sady virtuálních počítačů

Poznámka:

Vlastnost skupiny umístění škálovací sady virtuálních počítačů musí být nastavena na truehodnotu .

Následující ukázkový seznam uzlů znázorňuje formáty FD/UD ve škálovací sadě virtuálních počítačů, které pokrývají zóny:

Snímek obrazovky znázorňující seznam ukázkových uzlů s formáty FD/UD ve škálovací sadě virtuálních počítačů, které pokrývají zóny

Distribuce replik služeb napříč zónami

Při nasazení služby na typy uzlů, které se nacházejí Zóny dostupnosti, se repliky umístí, aby se zajistilo, že přistane v samostatných zónách. Domény selhání na uzlech v každém z těchto typů uzlů jsou nakonfigurovány s informacemi o zóně (tj. FD = fd:/zone1/1 atd.). Například pro pět replik nebo instancí služby je distribuce 2–2-1 a modul runtime se pokusí zajistit rovnoměrnou distribuci napříč zónami.

Konfigurace repliky služby uživatele

Stavové uživatelské služby nasazené na typy uzlů napříč Zóny dostupnosti by se měly nakonfigurovat takto: počet replik s cílem = 9, min = 5. Tato konfigurace pomáhá službě fungovat i v případě, že jedna zóna klesne, protože v ostatních dvou zónách bude stále vzhůru šest replik. Upgrade aplikace v tomto scénáři bude také úspěšný.

Úroveň spolehlivosti clusteru

Tato hodnota definuje počet počátečních uzlů v clusteru a velikost repliky systémových služeb. Nastavení zóny křížové dostupnosti má vyšší počet uzlů, které jsou rozdělené mezi zóny, aby bylo možné odolnost zón.

Vyšší ReliabilityLevel hodnota zajišťuje, že jsou přítomny a rovnoměrně rozděleny mezi zóny více počátečních uzlů a replik systémových služeb, takže pokud dojde k selhání zóny, cluster a systémové služby nebudou ovlivněny. ReliabilityLevel = Platinum (doporučeno) zajišťuje, že se v clusteru rozprostírá devět počátečních uzlů se třemi semeny v každé zóně.

Scénář zónově mimo provoz

Když zóna přestane fungovat, zobrazí se všechny uzly a repliky služeb pro danou zónu jako down. Vzhledem k tomu, že v ostatních zónách jsou repliky, služba bude dál reagovat. Primární repliky převezme služby při selhání do funkčních zón. Zdá se, že služby jsou ve stavu upozornění, protože počet cílových replik ještě není dosažen a počet virtuálních počítačů je stále vyšší než minimální velikost cílové repliky.

Nástroj pro vyrovnávání zatížení Service Fabric zobrazí repliky v pracovních zónách tak, aby odpovídal počtu cílových replik. V tuto chvíli se služby zobrazují v pořádku. Když se zóna, která byla dolů, vrátí zpět, nástroj pro vyrovnávání zatížení rozloží všechny repliky služby rovnoměrně mezi zóny.

Nadcházející optimalizace

  • Kvůli zajištění spolehlivých aktualizací infrastruktury vyžaduje Service Fabric, aby byla stálost škálovací sady virtuálních počítačů nastavená alespoň na Silver. To umožňuje základní škálovací sadě virtuálních počítačů a modulu runtime Service Fabric poskytovat spolehlivé aktualizace. To také vyžaduje, aby každá zóna měla minimálně 5 virtuálních počítačů. Pracujeme na přenesení tohoto požadavku na 3 a 2 virtuální počítače na zónu pro primární a neprimární typy uzlů.
  • Všechny níže uvedené konfigurace a nadcházející práce poskytují místní migraci zákazníkům, u kterých je možné upgradovat stejný cluster tak, aby používal novou konfiguraci přidáním nových typů uzlů a vyřazením starých typů uzlů.

Požadavky na síť

Prostředek veřejné IP adresy a nástroje pro vyrovnávání zatížení

zones Pokud chcete povolit vlastnost prostředku škálovací sady virtuálních počítačů, musí nástroj pro vyrovnávání zatížení a prostředek IP, na který odkazuje tato škálovací sada virtuálních počítačů, používat skladovou položku Standard. Vytvoření prostředku PROTOKOLU IP bez vlastnosti SKU vytvoří základní skladovou položku, která nepodporuje Zóny dostupnosti. Nástroj pro vyrovnávání zatížení skladové položky Úrovně Standard ve výchozím nastavení blokuje veškerý provoz zvenčí. Pokud chcete povolit vnější provoz, nasaďte skupinu zabezpečení sítě 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 prostředků veřejné IP adresy není možné provést místní změnu skladové položky. Pokud migrujete z existujících prostředků, které mají skladovou položku Basic, projděte si část migrace tohoto článku.

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

Pravidla překladu příchozích síťových adres (NAT) pro nástroj 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 pro nástroj pro vyrovnávání zatížení skladové položky Standard

Veřejná IP adresa skladové položky Standard přináší nové možnosti a různé chování odchozího připojení v porovnání s používáním základních skladových položek. Pokud chcete odchozí připojení při práci se skladovými položkami Úrovně Standard, musíte ho explicitně definovat pomocí veřejných IP adres skladové položky Standard nebo nástroje pro vyrovnávání zatížení skladové položky Standard. Další informace najdete v tématu Odchozí připojení a co je Azure 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.

Důležité

Každý typ uzlu v clusteru Service Fabric, který používá nástroj pro vyrovnávání zatížení skladové položky Standard, vyžaduje pravidlo umožňující odchozí provoz na portu 443. To je nezbytné k dokončení nastavení clusteru. Jakékoli nasazení bez tohoto pravidla selže.

1. Povolení více Zóny dostupnosti ve škálovací sadě s jedním virtuálním počítačem

Toto řešení umožňuje uživatelům překlenovat tři Zóny dostupnosti stejného typu uzlu. Jedná se o doporučenou topologii nasazení, protože umožňuje nasazení napříč zónami dostupnosti při zachování jedné škálovací sady virtuálních počítačů.

Úplná ukázková šablona je k dispozici na GitHubu.

Diagram architektury zóny dostupnosti Azure Service Fabric

Konfigurace zón ve škálovací sadě virtuálních počítačů

Pokud chcete povolit zóny ve škálovací sadě virtuálních počítačů, zahrňte do prostředku škálovací sady virtuálních počítačů následující tři hodnoty:

  • První hodnota je zones vlastnost, která určuje Zóny dostupnosti, které jsou ve škálovací sadě virtuálních počítačů.

  • Druhá hodnota je singlePlacementGroup vlastnost, která musí být nastavena na true. Škálovací sada, která je rozložená napříč třemi Zóny dostupnosti, může vertikálně navýšit kapacitu až na 300 virtuálních počítačů i s singlePlacementGroup = true.

  • Třetí hodnota je zoneBalance, která zajišťuje přísné vyrovnávání zóny. Tato hodnota by měla být true. Tím se zajistí, že distribuce virtuálních počítačů napříč zónami nebudou nevyvážené, což znamená, že když dojde k výpadku jedné zóny, budou mít ostatní dvě zóny dostatek virtuálních počítačů, aby cluster zůstal spuštěný.

    Cluster s nevyváženou distribucí virtuálních počítačů nemusí přežít scénář výpadku zóny, protože tato zóna může mít většinu virtuálních počítačů. Nevyvážená distribuce virtuálních počítačů napříč zónami také vede k problémům s umístěním služeb a zablokovaným aktualizacím infrastruktury. Přečtěte si další informace o zóněBalancing.

Nemusíte konfigurovat FaultDomain a UpgradeDomain přepisovat.

{
  "apiVersion": "2018-10-01",
  "type": "Microsoft.Compute/virtualMachineScaleSets",
  "name": "[parameters('vmNodeType1Name')]",
  "location": "[parameters('computeLocation')]",
  "zones": [ "1", "2", "3" ],
  "properties": {
    "singlePlacementGroup": true,
    "zoneBalance": true
  }
}

Poznámka:

  • Clustery Service Fabric by měly mít alespoň jeden primární typ uzlu. Úroveň stálosti primárních typů uzlů by měla být Silver nebo vyšší.
  • Zóna dostupnosti, která obsahuje škálovací sadu virtuálních počítačů, by měla být nakonfigurovaná alespoň se třemi Zóny dostupnosti bez ohledu na úroveň odolnosti.
  • Zóna dostupnosti zahrnující škálovací sadu virtuálních počítačů se stříbrou nebo vyšší odolností by měla mít alespoň 15 virtuálních počítačů (5 na oblast).
  • Zóna dostupnosti zahrnující škálovací sadu virtuálních počítačů s bronzovou odolností by měla mít alespoň šest virtuálních počítačů.

Povolení podpory více zón v typu uzlu Service Fabric

Aby bylo možné podporovat více Zóny dostupnosti, musí být povolený typ uzlu Service Fabric.

  • První hodnota je multipleAvailabilityZones, která by měla být nastavena true na typ uzlu.

  • Druhá hodnota je sfZonalUpgradeMode a je nepovinná. Tuto vlastnost nelze upravit, pokud již v clusteru existuje typ uzlu s více Zóny dostupnosti. Tato vlastnost řídí logické seskupení virtuálních počítačů v doménách upgradu.

    • Pokud je tato hodnota nastavená na Parallel: Virtuální počítače pod typem uzlu jsou seskupené do identifikátorů UDS a ignorují informace o zóně v pěti identifikátorech UDS. Toto nastavení způsobí, že se současně upgraduje UD ve všech zónách. Tento režim nasazení je pro upgrady rychlejší, nedoporučujeme ho, protože se vztahuje k pokynům SDP, které uvádějí, že by se aktualizace měly použít na jednu zónu najednou.
    • Pokud je tato hodnota vynechána nebo nastavena na Hierarchical: Virtuální počítače se seskupí tak, aby odrážely zónovou distribuci v až 15 identifikátorech UD. Každá ze tří zón má pět identifikátorů UDS. Tím se zajistí, že se zóny aktualizují po jednom a přesunou se do další zóny až po dokončení pěti identifikátorů UDS v rámci první zóny. Tento proces aktualizace je pro cluster a uživatelskou aplikaci bezpečnější.

    Tato vlastnost definuje chování upgradu pouze pro aplikace Service Fabric a upgrady kódu. Upgrady škálovací sady základních virtuálních počítačů jsou stále paralelní ve všech Zóny dostupnosti. Tato vlastnost nemá vliv na distribuci UD pro typy uzlů, které nemají povolené více zón.

  • Třetí hodnota je vmssZonalUpgradeModevolitelná a lze ji kdykoli aktualizovat. Tato vlastnost definuje schéma upgradu škálovací sady virtuálních počítačů tak, aby probíhalo paralelně nebo postupně napříč Zóny dostupnosti.

    • Pokud je tato hodnota nastavená na Parallel: Všechny aktualizace škálovací sady probíhají paralelně ve všech zónách. Tento režim nasazení je pro upgrady rychlejší, nedoporučujeme ho, protože se vztahuje k pokynům SDP, které uvádějí, že by se aktualizace měly použít na jednu zónu najednou.
    • Pokud je tato hodnota vynechána nebo nastavena na Hierarchical: Tím se zajistí, že se zóny aktualizují po jednom, přesune se na další zónu až po dokončení pěti identifikátorů UD v první zóně. Tento proces aktualizace je pro cluster a uživatelskou aplikaci bezpečnější.

Důležité

Verze rozhraní API prostředků clusteru Service Fabric by měla být 2020–12-01-preview nebo novější.

Verze kódu clusteru by měla být minimálně 8.1.321 nebo novější.

{
  "apiVersion": "2020-12-01-preview",
  "type": "Microsoft.ServiceFabric/clusters",
  "name": "[parameters('clusterName')]",
  "location": "[parameters('clusterLocation')]",
  "dependsOn": [
    "[concat('Microsoft.Storage/storageAccounts/', parameters('supportLogStorageAccountName'))]"
  ],
  "properties": {
    "reliabilityLevel": "Platinum",
    "sfZonalUpgradeMode": "Hierarchical",
    "vmssZonalUpgradeMode": "Parallel",
    "nodeTypes": [
      {
        "name": "[parameters('vmNodeType0Name')]",
        "multipleAvailabilityZones": true
      }
    ]
  }
}

Poznámka:

  • Prostředky veřejné IP adresy a nástroje pro vyrovnávání zatížení by měly používat skladovou položku Standard popsanou výše v článku.
  • multipleAvailabilityZones Vlastnost typu uzlu lze definovat pouze při vytvoření typu uzlu a nelze ji později upravit. Pro tuto vlastnost nelze nakonfigurovat existující typy uzlů.
  • Pokud sfZonalUpgradeMode je vynecháno nebo je nastaveno Hierarchical, nasazení clusteru a aplikací bude pomalejší, protože v clusteru je více domén upgradu. Je důležité správně upravit časové limity zásad upgradu tak, aby zohlednily dobu upgradu potřebnou pro 15 upgradových domén. Zásady upgradu aplikace i clusteru by se měly aktualizovat, aby se zajistilo, že nasazení nepřekročí časový limit nasazení služby Azure Resource Service 12 hodin. To znamená, že nasazení by nemělo trvat déle než 12 hodin na 15 identifikátorů UD (to znamená, že by nemělo trvat déle než 40 minut pro každou UD).
  • Nastavte úroveň spolehlivosti clusteru, aby Platinum se zajistilo, že cluster přežije scénář s jednou zónou.
  • Upgrade úrovně DurabilityLevel pro typ uzlu s multipleAvailabilityZones se nepodporuje. Místo toho vytvořte nový typ uzlu s vyšší odolností.
  • SF podporuje pouze 3 zóny dostupnosti. Aktuálně se nepodporuje žádné vyšší číslo.

Tip

Doporučujeme ho nastavit sfZonalUpgradeMode Hierarchical nebo vynechat. Nasazení bude následovat po zónové distribuci virtuálních počítačů a ovlivní menší množství replik nebo instancí, což je bezpečnější. Tuto možnost použijtesfZonalUpgradeMode, pokud Parallel je rychlost nasazení prioritou nebo pouze bezstavové úlohy spouštěné na typu uzlu s více Zóny dostupnosti. To způsobí, že se procházka uživatelem provede paralelně ve všech Zóny dostupnosti.

Migrace na typ uzlu s více Zóny dostupnosti

Pro všechny scénáře migrace musíte přidat nový typ uzlu, který podporuje více Zóny dostupnosti. Existující typ uzlu nejde migrovat, aby podporoval více zón. Článek o vertikálním navýšení kapacity primárního uzlu clusteru Service Fabric obsahuje podrobné kroky pro přidání nového typu uzlu a dalších prostředků požadovaných pro nový typ uzlu, jako jsou IP adresy a prostředky nástroje pro vyrovnávání zatížení. Tento článek také popisuje, jak vyřadit existující typ uzlu po přidání nového typu uzlu s více Zóny dostupnosti do clusteru.

  • Migrace z typu uzlu, který používá základní prostředky PROTOKOLU IP: Tento proces je již popsaný v podsekci níže pro řešení s jedním typem uzlu pro každou zónu dostupnosti.

    U nového typu uzlu je jediným rozdílem, že existuje pouze jedna škálovací sada virtuálních počítačů a jeden typ uzlu pro všechny Zóny dostupnosti místo jednoho pro každou zónu dostupnosti.

  • Migrace z typu uzlu, který používá prostředky IP adres skladové položky Standard se skupinou zabezpečení sítě: Postupujte podle stejného postupu popsaného výše. Není však nutné přidávat nové IP adresy a prostředky NSG. Stejné prostředky je možné znovu použít v novém typu uzlu.

2. Nasaďte zóny připnutím jedné škálovací sady virtuálních počítačů do každé zóny.

Toto je obecně dostupná konfigurace právě teď. Pokud chcete překlenovat cluster Service Fabric napříč Zóny dostupnosti, musíte vytvořit primární typ uzlu v každé zóně dostupnosti podporované oblastí. Tím se rovnoměrně distribuují počáteční uzly mezi každý z primárních typů uzlů.

Doporučená topologie pro primární typ uzlu vyžaduje toto:

  • Tři typy uzlů označené jako primární
    • Každý typ uzlu by se měl mapovat na vlastní škálovací sadu virtuálních počítačů umístěnou v jiné zóně.
    • Každá škálovací sada virtuálních počítačů by měla mít alespoň pět uzlů (Silver Durability).

Následující diagram znázorňuje architekturu zóny dostupnosti Azure Service Fabric:

Diagram znázorňující architekturu zóny dostupnosti Azure Service Fabric

Povolení zón ve škálovací sadě virtuálních počítačů

Pokud chcete povolit zónu ve škálovací sadě virtuálních počítačů, zahrňte do prostředku škálovací sady virtuálních počítačů následující tři hodnoty:

  • První hodnota je zones vlastnost, která určuje, do které zóny dostupnosti se škálovací sada virtuálních počítačů nasadí.
  • Druhá hodnota je singlePlacementGroup vlastnost, která musí být nastavena na true.
  • Třetí hodnota je faultDomainOverride vlastnost v rozšíření škálovací sady virtuálních počítačů Service Fabric. Tato vlastnost by měla zahrnovat pouze zónu, ve které bude tato škálovací sada virtuálních počítačů umístěna. Příklad: "faultDomainOverride": "az1". Všechny prostředky škálovací sady virtuálních počítačů musí být umístěné ve stejné oblasti, protože clustery Azure Service Fabric nepodporují různé oblasti.
{
  "apiVersion": "2018-10-01",
  "type": "Microsoft.Compute/virtualMachineScaleSets",
  "name": "[parameters('vmNodeType1Name')]",
  "location": "[parameters('computeLocation')]",
  "zones": [
    "1"
  ],
  "properties": {
    "singlePlacementGroup": true
  },
  "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": "Silver",
              "certificate": {
                "thumbprint": "[parameters('certificateThumbprint')]",
                "x509StoreName": "[parameters('certificateStoreValue')]"
              },
              "systemLogUploadSettings": {
                "Enabled": true
              },
              "faultDomainOverride": "az1"
            },
            "typeHandlerVersion": "1.0"
          }
        }
      ]
    }
  }
}

Povolení více primárních typů uzlů v prostředku clusteru Service Fabric

Chcete-li nastavit jeden nebo více typů uzlů jako primární v prostředku clusteru, nastavte isPrimary vlastnost na true. Když nasadíte cluster Service Fabric napříč Zóny dostupnosti, měli byste mít v různých zónách tři typy uzlů.

{
  "reliabilityLevel": "Platinum",
  "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,
      "vmInstanceCount": "[parameters('nt0InstanceCount')]"
    },
    {
      "name": "[parameters('vmNodeType1Name')]",
      "applicationPorts": {
        "endPort": "[parameters('nt1applicationEndPort')]",
        "startPort": "[parameters('nt1applicationStartPort')]"
      },
      "clientConnectionEndpointPort": "[parameters('nt1fabricTcpGatewayPort')]",
      "durabilityLevel": "Silver",
      "ephemeralPorts": {
        "endPort": "[parameters('nt1ephemeralEndPort')]",
        "startPort": "[parameters('nt1ephemeralStartPort')]"
      },
      "httpGatewayEndpointPort": "[parameters('nt1fabricHttpGatewayPort')]",
      "isPrimary": true,
      "vmInstanceCount": "[parameters('nt1InstanceCount')]"
    },
    {
      "name": "[parameters('vmNodeType2Name')]",
      "applicationPorts": {
        "endPort": "[parameters('nt2applicationEndPort')]",
        "startPort": "[parameters('nt2applicationStartPort')]"
      },
      "clientConnectionEndpointPort": "[parameters('nt2fabricTcpGatewayPort')]",
      "durabilityLevel": "Silver",
      "ephemeralPorts": {
        "endPort": "[parameters('nt2ephemeralEndPort')]",
        "startPort": "[parameters('nt2ephemeralStartPort')]"
      },
      "httpGatewayEndpointPort": "[parameters('nt2fabricHttpGatewayPort')]",
      "isPrimary": true,
      "vmInstanceCount": "[parameters('nt2InstanceCount')]"
    }
  ]
}

Migrace na Zóny dostupnosti z clusteru pomocí IP adresy skladové položky Basic

Pokud chcete migrovat cluster, který používá IP adresu se skladovou jednotkou Basic, musíte nejprve vytvořit zcela nový prostředek IP adresy pomocí skladové položky Standard. Tyto prostředky není možné aktualizovat.

Odkaz na novou IP adresu v nových typech uzlů zóny křížové dostupnosti, které chcete použít. V předchozím příkladu byly do zón 1, 2 a 3 přidány tři nové prostředky škálovací sady virtuálních počítačů. Tyto škálovací sady virtuálních počítačů odkazují na nově vytvořenou IP adresu a jsou označené jako primární typy uzlů v prostředku clusteru Service Fabric.

  1. Začněte tím, že do existující šablony Azure Resource Manageru přidáte nové prostředky. Mezi tyto prostředky patří:

    • Prostředek veřejné IP adresy s využitím skladové položky Standard
    • Prostředek nástroje pro vyrovnávání zatížení s využitím skladové položky Standard
    • Skupina zabezpečení sítě, na kterou odkazuje podsíť, ve které nasazujete škálovací sady virtuálních počítačů
    • Tři typy uzlů označené jako primární
      • Každý typ uzlu by se měl mapovat na vlastní škálovací sadu virtuálních počítačů umístěnou v jiné zóně.
      • Každá škálovací sada virtuálních počítačů by měla mít alespoň pět uzlů (Silver Durability).

    Příklad těchto prostředků najdete v ukázkové šabloně.

    New-AzureRmResourceGroupDeployment `
        -ResourceGroupName $ResourceGroupName `
        -TemplateFile $Template `
        -TemplateParameterFile $Parameters
    
  2. Po dokončení nasazení prostředků můžete zakázat uzly v primárním typu uzlu z původního clusteru. Pokud jsou uzly zakázané, systémové služby se migrují na nový primární typ uzlu, který jste nasadili dříve.

    Connect-ServiceFabricCluster -ConnectionEndpoint $ClusterName `
        -KeepAliveIntervalInSec 10 `
        -X509Credential `
        -ServerCertThumbprint $thumb  `
        -FindType FindByThumbprint `
        -FindValue $thumb `
        -StoreLocation CurrentUser `
        -StoreName My 
    
    Write-Host "Connected to cluster"
    
    $nodeNames = @("_nt0_0", "_nt0_1", "_nt0_2", "_nt0_3", "_nt0_4")
    
    Write-Host "Disabling nodes..."
    foreach($name in $nodeNames) {
        Disable-ServiceFabricNode -NodeName $name -Intent RemoveNode -Force
    }
    
  3. Jakmile jsou všechny uzly zakázané, systémové služby se budou spouštět na primárním typu uzlu, který je rozložený mezi zóny. Pak můžete z clusteru odebrat zakázané uzly. Po odebrání uzlů můžete odebrat původní ip adresu, nástroj pro vyrovnávání zatížení a prostředky škálovací sady virtuálních počítačů.

    foreach($name in $nodeNames){
        # Remove the node from the cluster
        Remove-ServiceFabricNodeState -NodeName $name -TimeoutSec 300 -Force
        Write-Host "Removed node state for node $name"
    }
    
    $scaleSetName="nt0"
    Remove-AzureRmVmss -ResourceGroupName $groupname -VMScaleSetName $scaleSetName -Force
    
    $lbname="LB-cluster-nt0"
    $oldPublicIpName="LBIP-cluster-0"
    $newPublicIpName="LBIP-cluster-1"
    
    Remove-AzureRmLoadBalancer -Name $lbname -ResourceGroupName $groupname -Force
    Remove-AzureRmPublicIpAddress -Name $oldPublicIpName -ResourceGroupName $groupname -Force
    
  4. Potom odeberte odkazy na tyto prostředky ze šablony Resource Manageru, kterou jste nasadili.

  5. Nakonec aktualizujte název DNS a veřejnou IP adresu.

$oldprimaryPublicIP = Get-AzureRmPublicIpAddress -Name $oldPublicIpName  -ResourceGroupName $groupname
$primaryDNSName = $oldprimaryPublicIP.DnsSettings.DomainNameLabel
$primaryDNSFqdn = $oldprimaryPublicIP.DnsSettings.Fqdn

Remove-AzureRmLoadBalancer -Name $lbname -ResourceGroupName $groupname -Force
Remove-AzureRmPublicIpAddress -Name $oldPublicIpName -ResourceGroupName $groupname -Force

$PublicIP = Get-AzureRmPublicIpAddress -Name $newPublicIpName  -ResourceGroupName $groupname
$PublicIP.DnsSettings.DomainNameLabel = $primaryDNSName
$PublicIP.DnsSettings.Fqdn = $primaryDNSFqdn
Set-AzureRmPublicIpAddress -PublicIpAddress $PublicIP