Udostępnij za pośrednictwem


Wdrażanie klastra usługi Azure Service Fabric w Strefy dostępności

Strefy dostępności na platformie Azure to oferta wysokiej dostępności, która chroni aplikacje i dane przed awariami centrum danych. Strefa dostępności to unikatowa lokalizacja fizyczna wyposażona w niezależne zasilanie, chłodzenie i sieć w regionie świadczenia usługi Azure.

Aby obsługiwać klastry obejmujące Strefy dostępności, usługa Azure Service Fabric udostępnia dwie metody konfiguracji zgodnie z opisem w poniższym artykule. Strefy dostępności są dostępne tylko w wybranych regionach. Aby uzyskać więcej informacji, zobacz omówienie Strefy dostępności.

Przykładowe szablony są dostępne w szablonach między strefami dostępności usługi Service Fabric.

Topologia obejmująca typ węzła podstawowego w Strefy dostępności

Uwaga

Korzyści wynikające z połączenia typu węzła podstawowego w strefach dostępności są naprawdę widoczne tylko dla trzech stref, a nie tylko dwóch.

  • Poziom niezawodności klastra ustawiony na wartość Platinum
  • Pojedynczy zasób publicznego adresu IP korzystający z jednostki SKU w warstwie Standardowa
  • Zasób pojedynczego modułu równoważenia obciążenia przy użyciu jednostki SKU w warstwie Standardowa
  • Sieciowa grupa zabezpieczeń, do której odwołuje się podsieć, w której wdrażasz zestawy skalowania maszyn wirtualnych

Uwaga

Właściwość grupy pojedynczego umieszczania zestawu skalowania maszyn wirtualnych musi być ustawiona na truewartość .

Poniższa przykładowa lista węzłów przedstawia formaty FD/UD w zestawach skalowania maszyn wirtualnych obejmujących strefy:

Zrzut ekranu przedstawiający przykładową listę węzłów formatów FD/UD w zestawie skalowania maszyn wirtualnych obejmujących strefy.

Rozkład replik usług między strefami

Po wdrożeniu usługi w typach węzłów, które obejmują Strefy dostępności, repliki są umieszczane w celu zapewnienia, że znajdują się w oddzielnych strefach. Domeny błędów w węzłach w każdym z tych typów węzłów są konfigurowane przy użyciu informacji o strefie (czyli FD = fd:/zone1/1 itp.). Na przykład w przypadku pięciu replik lub wystąpień usługi dystrybucja jest 2-2-1, a środowisko uruchomieniowe podejmie próbę zapewnienia równego rozkładu między strefami.

Konfiguracja repliki usługi użytkownika

Stanowe usługi użytkownika wdrożone w typach węzłów w Strefy dostępności powinny być skonfigurowane w następujący sposób: liczba replik z wartością docelową = 9, min = 5. Ta konfiguracja ułatwia działanie usługi nawet wtedy, gdy jedna strefa ulegnie awarii, ponieważ sześć replik będzie nadal znajdować się w pozostałych dwóch strefach. Uaktualnienie aplikacji w tym scenariuszu zakończy się również pomyślnie.

Niezawodność klastraPoszczel

Ta wartość definiuje liczbę węzłów inicjowania w klastrze i rozmiar repliki usług systemowych. Konfiguracja strefy dostępności między strefami ma większą liczbę węzłów, które są rozłożone między strefami, aby umożliwić odporność strefy.

Wyższa ReliabilityLevel wartość zapewnia, że więcej węzłów inicjujących i replik usługi systemowej jest obecnych i równomiernie rozmieszczonych między strefami, dzięki czemu w przypadku awarii strefy klaster i usługi systemowe nie będą miały wpływu. ReliabilityLevel = Platinum (zalecane) gwarantuje, że w klastrze znajduje się dziewięć węzłów inicjujących, z trzema nasionami w każdej strefie.

Scenariusz w dół strefy

Gdy strefa ulegnie awarii, wszystkie węzły i repliki usługi dla tej strefy są wyświetlane jako wyłączone. Ponieważ istnieją repliki w innych strefach, usługa nadal odpowiada. Repliki podstawowe są przenoszone w tryb failover do działających stref. Usługi wydają się znajdować w stanach ostrzegawczych, ponieważ liczba replik docelowych nie jest jeszcze osiągnięta, a liczba maszyn wirtualnych jest nadal wyższa niż minimalny rozmiar repliki docelowej.

Moduł równoważenia obciążenia usługi Service Fabric powoduje wyświetlenie replik w strefach roboczych w celu dopasowania ich do liczby replik docelowych. W tym momencie usługi są w dobrej kondycji. Gdy strefa, która nie działa, zostanie przywrócona, moduł równoważenia obciążenia rozdzieli wszystkie repliki usługi równomiernie w różnych strefach.

Nadchodzące optymalizacje

  • Aby zapewnić niezawodne aktualizacje infrastruktury, usługa Service Fabric wymaga, aby trwałość zestawu skalowania maszyn wirtualnych miała być ustawiona co najmniej na silver. Dzięki temu podstawowy zestaw skalowania maszyn wirtualnych i środowisko uruchomieniowe usługi Service Fabric zapewniają niezawodne aktualizacje. Wymaga to również, aby każda strefa miała co najmniej 5 maszyn wirtualnych. Pracujemy nad przeniesieniem tego wymagania do 3 i 2 maszyn wirtualnych na strefę odpowiednio dla typów węzłów podstawowych i innych niż podstawowe.
  • Wszystkie wymienione poniżej konfiguracje i nadchodzące prace zapewniają migrację w miejscu do klientów, dla których można uaktualnić ten sam klaster, aby korzystać z nowej konfiguracji, dodając nowe nodeTypes i przechodząc na emeryturę starych.

Wymagania dotyczące sieci

Publiczny adres IP i zasób modułu równoważenia obciążenia

Aby włączyć zones właściwość 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 IP bez właściwości jednostki SKU powoduje utworzenie jednostki SKU w warstwie Podstawowa, która nie obsługuje Strefy dostępności. Moduł równoważenia obciążenia jednostki SKU w warstwie Standardowa domyślnie blokuje cały ruch z zewnątrz. Aby zezwolić na ruch zewnętrzny, wdróż sieciową grupę zabezpieczeń 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 zasobach publicznych adresów IP. Jeśli przeprowadzasz migrację z istniejących zasobów, które mają podstawową jednostkę SKU, zobacz sekcję migracji tego artykułu.

Reguły translatora adresów sieciowych dla zestawów skalowania maszyn wirtualnych

Reguły translatora adresów sieciowych dla modułu równoważenia obciążenia dla ruchu przychodzącego 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"
      }
    }
  ]
}

Reguły ruchu wychodzącego dla modułu równoważenia obciążenia jednostki SKU w warstwie Standardowa

Publiczny adres IP jednostki SKU w warstwie Standardowa wprowadza 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 uzyskać łączność wychodzącą podczas pracy z jednostkami SKU w warstwie Standardowa, musisz jawnie zdefiniować ją przy użyciu publicznych adresów IP jednostki SKU w warstwie Standardowa lub modułu równoważenia obciążenia jednostki SKU w warstwie Standardowa. Aby uzyskać więcej informacji, zobacz Połączenia wychodzące i Co to jest usługa Azure Load Balancer?.

Uwaga

Szablon standardowy 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 w przypadku operacji zarządzania usługą Service Fabric. Reguły sieciowej grupy zabezpieczeń można modyfikować w celu spełnienia wymagań.

Ważne

Każdy typ węzła w klastrze usługi Service Fabric, który używa modułu równoważenia obciążenia jednostki SKU w warstwie Standardowa, wymaga reguły zezwalającej na ruch wychodzący na porcie 443. Jest to konieczne do ukończenia konfiguracji klastra. Każde wdrożenie bez tej reguły zakończy się niepowodzeniem.

1. Włączanie wielu Strefy dostępności w jednym zestawie skalowania maszyn wirtualnych

To rozwiązanie pozwala użytkownikom obejmować trzy Strefy dostępności w tym samym typie węzła. Jest to zalecana topologia wdrożenia, ponieważ umożliwia wdrażanie w różnych strefach dostępności przy zachowaniu pojedynczego zestawu skalowania maszyn wirtualnych.

Pełny przykładowy szablon jest dostępny w witrynie GitHub.

Diagram architektury strefy dostępności usługi Azure Service Fabric.

Konfigurowanie stref w zestawie skalowania maszyn wirtualnych

Aby włączyć strefy w zestawie skalowania maszyn wirtualnych, uwzględnij następujące trzy wartości w zasobie zestawu skalowania maszyn wirtualnych:

  • Pierwszą wartością zones jest właściwość, która określa Strefy dostępności, które znajdują się w zestawie skalowania maszyn wirtualnych.

  • Drugą wartością singlePlacementGroup jest właściwość , która musi być ustawiona na true. Zestaw skalowania obejmujący trzy Strefy dostępności może skalować do 300 maszyn wirtualnych nawet przy użyciu polecenia singlePlacementGroup = true.

  • Trzecia wartość to zoneBalance, która zapewnia ścisłe równoważenie strefy. Ta wartość powinna mieć wartość true. Gwarantuje to, że dystrybucje maszyn wirtualnych między strefami nie są niezrównoważone, co oznacza, że gdy jedna strefa ulegnie awarii, dwie pozostałe strefy mają wystarczającą liczbę maszyn wirtualnych, aby utrzymać działanie klastra.

    Klaster z niezrównoważonej dystrybucji maszyn wirtualnych może nie przetrwać scenariusza w dół strefy, ponieważ ta strefa może mieć większość maszyn wirtualnych. Dystrybucja niezrównoważonej maszyny wirtualnej między strefami prowadzi również do problemów z umieszczaniem usług i blokowaniem aktualizacji infrastruktury. Przeczytaj więcej o strefieBalancing.

Nie trzeba konfigurować FaultDomain przesłonięć i UpgradeDomain .

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

Uwaga

  • Klastry usługi Service Fabric powinny mieć co najmniej jeden typ węzła podstawowego. Poziom trwałości typów węzłów podstawowych powinien być srebrny lub wyższy.
  • Strefę dostępności obejmującą zestaw skalowania maszyn wirtualnych należy skonfigurować z co najmniej trzema Strefy dostępności, niezależnie od poziomu trwałości.
  • Strefa dostępności obejmująca zestaw skalowania maszyn wirtualnych ze srebrem lub większą trwałością powinna mieć co najmniej 15 maszyn wirtualnych (5 na region).
  • Strefa dostępności obejmująca zestaw skalowania maszyn wirtualnych z trwałością z brązu powinna mieć co najmniej sześć maszyn wirtualnych.

Włączanie obsługi wielu stref w typie węzła usługi Service Fabric

Aby obsługiwać wiele Strefy dostępności, należy włączyć typ węzła usługi Service Fabric.

  • Pierwsza wartość to multipleAvailabilityZones, która powinna być ustawiona na true dla typu węzła.

  • Druga wartość to sfZonalUpgradeMode i jest opcjonalna. Tej właściwości nie można zmodyfikować, jeśli typ węzła z wieloma Strefy dostępności jest już obecny w klastrze. Ta właściwość steruje logicznym grupowaniem maszyn wirtualnych w domenach uaktualniania (UD).

    • Jeśli ta wartość jest ustawiona na Parallel: Maszyny wirtualne w ramach typu węzła są pogrupowane w identyfikatory UD i ignorują informacje o strefie w pięciu identyfikatorach UD. To ustawienie powoduje uaktualnienie identyfikatorów UD we wszystkich strefach w tym samym czasie. Ten tryb wdrażania jest szybszy w przypadku uaktualnień. Nie zalecamy go, ponieważ jest on zgodny z wytycznymi SDP, które stanowią, że aktualizacje powinny być stosowane do jednej strefy naraz.
    • Jeśli ta wartość zostanie pominięta lub ustawiona na Hierarchical: maszyny wirtualne są pogrupowane w celu odzwierciedlenia rozkładu strefowego w maksymalnie 15 identyfikatorach UD. Każda z trzech stref ma pięć identyfikatorów UD. Dzięki temu strefy są aktualizowane pojedynczo, przechodząc do następnej strefy dopiero po ukończeniu pięciu identyfikatorów UD w pierwszej strefie. Ten proces aktualizacji jest bezpieczniejszy dla klastra i aplikacji użytkownika.

    Ta właściwość definiuje tylko zachowanie uaktualniania dla aplikacji usługi Service Fabric i uaktualnień kodu. Podstawowe uaktualnienia zestawu skalowania maszyn wirtualnych są nadal równoległe we wszystkich Strefy dostępności. Ta właściwość nie ma wpływu na dystrybucję trasy zdefiniowanej przez użytkownika dla typów węzłów, które nie mają włączonej wielu stref.

  • Trzecia wartość to vmssZonalUpgradeMode, jest opcjonalna i może być aktualizowana w dowolnym momencie. Ta właściwość definiuje schemat uaktualniania zestawu skalowania maszyn wirtualnych, który ma się odbywać równolegle lub sekwencyjnie w Strefy dostępności.

    • Jeśli ta wartość jest ustawiona na Parallel: Wszystkie aktualizacje zestawu skalowania są wykonywane równolegle we wszystkich strefach. Ten tryb wdrażania jest szybszy w przypadku uaktualnień. Nie zalecamy go, ponieważ jest on zgodny z wytycznymi SDP, które stanowią, że aktualizacje powinny być stosowane do jednej strefy naraz.
    • Jeśli ta wartość zostanie pominięta lub ustawiona na Hierarchicalwartość : Gwarantuje to, że strefy są aktualizowane pojedynczo, przechodząc do następnej strefy dopiero po ukończeniu pięciu identyfikatorów UD w pierwszej strefie. Ten proces aktualizacji jest bezpieczniejszy dla klastra i aplikacji użytkownika.

Ważne

Wersja interfejsu API zasobów klastra usługi Service Fabric powinna mieć wartość 2020-12-01-preview lub nowsza.

Wersja kodu klastra powinna być zgodna z wersją 8.1.321 lub nowszą.

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

Uwaga

  • Zasoby publicznego adresu IP i modułu równoważenia obciążenia powinny używać jednostki SKU w warstwie Standardowa opisanej wcześniej w artykule.
  • multipleAvailabilityZones Właściwość typu węzła można zdefiniować tylko po utworzeniu typu węzła i nie można jej później modyfikować. Nie można skonfigurować istniejących typów węzłów za pomocą tej właściwości.
  • Jeśli sfZonalUpgradeMode pominięto lub ustawiono wartość Hierarchical, wdrożenia klastra i aplikacji będą wolniejsze, ponieważ w klastrze istnieje więcej domen uaktualnienia. Ważne jest, aby prawidłowo dostosować limity czasu zasad uaktualniania, aby uwzględnić czas uaktualniania wymagany dla 15 domen uaktualnienia. Zasady uaktualniania aplikacji i klastra powinny zostać zaktualizowane, aby upewnić się, że wdrożenie nie przekracza limitu czasu wdrożenia usługi Azure Resource Service w wysokości 12 godzin. Oznacza to, że wdrożenie nie powinno trwać dłużej niż 12 godzin dla 15 identyfikatorów UD (czyli nie powinno trwać więcej niż 40 minut dla każdego użytkownika).
  • Ustaw poziom niezawodności klastra, aby Platinum upewnić się, że klaster przetrwa scenariusz z jedną strefą w dół.
  • Uaktualnianie elementu DurabilityLevel dla typu węzła za pomocą funkcji multipleAvailabilityZones nie jest obsługiwane. Utwórz nowy typ węzła z większą trwałością.
  • Usługa SF obsługuje tylko 3 strefy dostępności. Każda wyższa liczba nie jest obecnie obsługiwana.

Napiwek

Zalecamy ustawienie sfZonalUpgradeMode wartości Hierarchical lub pominięcie jej. Wdrożenie będzie zgodne z rozkładem strefowym maszyn wirtualnych i wpłynie na mniejszą ilość replik lub wystąpień, co czyni je bezpieczniejszymi. Ustaw sfZonalUpgradeMode wartość , jeśli szybkość Parallel wdrożenia jest priorytetem lub tylko bezstanowe obciążenia są uruchamiane w typie węzła z wieloma Strefy dostępności. Powoduje to równoległe przejście przez użytkownika we wszystkich Strefy dostępności.

Migrowanie do typu węzła z wieloma Strefy dostępności

W przypadku wszystkich scenariuszy migracji należy dodać nowy typ węzła, który obsługuje wiele Strefy dostępności. Nie można migrować istniejącego typu węzła do obsługi wielu stref. Artykuł Skalowanie w górę podstawowego typu węzła klastra usługi Service Fabric zawiera szczegółowe kroki dodawania nowego typu węzła i innych zasobów wymaganych dla nowego typu węzła, takich jak adres IP i zasoby modułu równoważenia obciążenia. W tym artykule opisano również sposób wycofywania istniejącego typu węzła po dodaniu nowego typu węzła z wieloma Strefy dostępności do klastra.

  • Migracja z typu węzła korzystającego z podstawowych zasobów IP: ten proces jest już opisany w poniższej sekcji podrzędnej dla rozwiązania z jednym typem węzła na strefę dostępności.

    W przypadku nowego typu węzła jedyną różnicą jest to, że istnieje tylko jeden zestaw skalowania maszyn wirtualnych i jeden typ węzła dla wszystkich Strefy dostępności zamiast jednego na strefę dostępności.

  • Migracja z typu węzła, który używa zasobów adresów IP jednostki SKU w warstwie Standardowa z sieciową grupą zabezpieczeń: wykonaj tę samą procedurę opisaną wcześniej. Nie ma jednak potrzeby dodawania nowych zasobów ip i sieciowej grupy zabezpieczeń. Te same zasoby można ponownie użyć w nowym typie węzła.

2. Wdróż strefy, przypinając jeden zestaw skalowania maszyn wirtualnych do każdej strefy

Jest to teraz ogólnie dostępna konfiguracja. Aby obejmować klaster usługi Service Fabric w Strefy dostępności, należy utworzyć podstawowy typ węzła w każdej strefie dostępności obsługiwanej przez region. Powoduje to równomierne rozłożenie węzłów inicjowania w każdym z typów węzłów podstawowych.

Zalecana topologia typu węzła podstawowego wymaga następującej:

  • Trzy typy węzłów oznaczone jako podstawowe
    • Każdy typ węzła powinien być mapowany na własny zestaw skalowania maszyn wirtualnych znajdujący się w innej strefie.
    • Każdy zestaw skalowania maszyn wirtualnych powinien mieć co najmniej pięć węzłów (trwałość silver).

Na poniższym diagramie przedstawiono architekturę strefy dostępności usługi Azure Service Fabric:

Diagram przedstawiający architekturę strefy dostępności usługi Azure Service Fabric.

Włączanie stref w zestawie skalowania maszyn wirtualnych

Aby włączyć strefę w zestawie skalowania maszyn wirtualnych, uwzględnij następujące trzy wartości w zasobie zestawu skalowania maszyn wirtualnych:

  • Pierwszą wartością zones jest właściwość , która określa strefę dostępności, w której wdrożono zestaw skalowania maszyn wirtualnych.
  • Drugą wartością singlePlacementGroup jest właściwość , która musi być ustawiona na true.
  • Trzecia wartość to faultDomainOverride właściwość w rozszerzeniu zestawu skalowania maszyn wirtualnych usługi Service Fabric. Ta właściwość powinna zawierać tylko strefę, w której zostanie umieszczony ten zestaw skalowania maszyn wirtualnych. Przykład: "faultDomainOverride": "az1". Wszystkie zasoby zestawu skalowania maszyn wirtualnych muszą być umieszczone w tym samym regionie, ponieważ klastry usługi Azure Service Fabric nie obsługują wielu regionów.
{
  "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"
          }
        }
      ]
    }
  }
}

Włączanie wielu podstawowych typów węzłów w zasobie klastra usługi Service Fabric

Aby ustawić co najmniej jeden typ węzła jako podstawowy w zasobie klastra, ustaw isPrimary właściwość na true. Podczas wdrażania klastra usługi Service Fabric w Strefy dostępności powinny istnieć trzy typy węzłów w różnych strefach.

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

Migrowanie do Strefy dostępności z klastra przy użyciu podstawowego adresu IP jednostki SKU

Aby przeprowadzić migrację klastra korzystającego z adresu IP z podstawową jednostkę SKU, należy najpierw utworzyć zupełnie nowy zasób IP przy użyciu jednostki SKU w warstwie Standardowa. Nie można zaktualizować tych zasobów.

Odwołuj się do nowego adresu IP w nowych typach węzłów strefy dostępności, których chcesz użyć. W poprzednim przykładzie dodano trzy nowe zasoby zestawu skalowania maszyn wirtualnych w strefach 1, 2 i 3. Te zestawy skalowania maszyn wirtualnych odwołują się do nowo utworzonego adresu IP i są oznaczone jako podstawowe typy węzłów w zasobie klastra usługi Service Fabric.

  1. Aby rozpocząć, dodaj nowe zasoby do istniejącego szablonu usługi Azure Resource Manager. Te zasoby obejmują:

    • Zasób publicznego adresu IP korzystający z jednostki SKU w warstwie Standardowa
    • Zasób modułu równoważenia obciążenia przy użyciu jednostki SKU w warstwie Standardowa
    • Sieciowa grupa zabezpieczeń, do której odwołuje się podsieć, w której wdrażasz zestawy skalowania maszyn wirtualnych
    • Trzy typy węzłów oznaczone jako podstawowe
      • Każdy typ węzła powinien być mapowany na własny zestaw skalowania maszyn wirtualnych znajdujący się w innej strefie.
      • Każdy zestaw skalowania maszyn wirtualnych powinien mieć co najmniej pięć węzłów (trwałość silver).

    Przykład tych zasobów można znaleźć w przykładowym szablonie.

    New-AzureRmResourceGroupDeployment `
        -ResourceGroupName $ResourceGroupName `
        -TemplateFile $Template `
        -TemplateParameterFile $Parameters
    
  2. Po zakończeniu wdrażania zasobów można wyłączyć węzły w typie węzła podstawowego z oryginalnego klastra. Gdy węzły są wyłączone, usługi systemowe są migrowane do nowego typu węzła podstawowego, który został wcześniej wdrożony.

    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. Po wyłączeniu wszystkich węzłów usługi systemowe będą działać w typie węzła podstawowego, który jest rozłożony na strefy. Następnie można usunąć wyłączone węzły z klastra. Po usunięciu węzłów można usunąć oryginalny adres IP, moduł równoważenia obciążenia i zasoby zestawu skalowania maszyn wirtualnych.

    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. Następnie usuń odwołania do tych zasobów z wdrożonego szablonu usługi Resource Manager.

  5. Na koniec zaktualizuj nazwę DNS i publiczny adres IP.

$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