Udostępnij za pośrednictwem


Infrastruktura jako kod

W scenariuszu produkcyjnym utwórz klastry usługi Azure Service Fabric przy użyciu szablonów usługi Resource Manager. Szablony usługi Resource Manager zapewniają większą kontrolę nad właściwościami zasobów i zapewniają spójny model zasobów.

Przykładowe szablony usługi Resource Manager są dostępne dla systemów Windows i Linux w przykładach platformy Azure w witrynie GitHub. Te szablony mogą służyć jako punkt wyjścia dla szablonu klastra. Pobierz i azuredeploy.parameters.json zmodyfikuj azuredeploy.json je, aby spełnić wymagania niestandardowe.

Uwaga

Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. Aby rozpocząć, zobacz Instalowanie programu Azure PowerShell. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

Aby wdrożyć azuredeploy.json pobrane powyżej szablony i azuredeploy.parameters.json , użyj następujących poleceń interfejsu wiersza polecenia platformy Azure:

ResourceGroupName="sfclustergroup"
Location="westus"

az group create --name $ResourceGroupName --location $Location 
az deployment group create --name $ResourceGroupName  --template-file azuredeploy.json --parameters @azuredeploy.parameters.json

Tworzenie zasobu przy użyciu programu PowerShell

$ResourceGroupName="sfclustergroup"
$Location="westus"
$Template="azuredeploy.json"
$Parameters="azuredeploy.parameters.json"

New-AzResourceGroup -Name $ResourceGroupName -Location $Location
New-AzResourceGroupDeployment -Name $ResourceGroupName -TemplateFile $Template -TemplateParameterFile $Parameters

Zasoby usługi Service Fabric

Możesz wdrażać aplikacje i usługi w klastrze usługi Service Fabric za pośrednictwem usługi Azure Resource Manager. Aby uzyskać szczegółowe informacje, zobacz Zarządzanie aplikacjami i usługami jako zasobami usługi Azure Resource Manager. Poniżej przedstawiono najlepsze rozwiązanie dotyczące zasobów specyficznych dla aplikacji usługi Service Fabric do uwzględnienia w zasobach szablonu usługi Resource Manager.

{
    "apiVersion": "2019-03-01",
    "type": "Microsoft.ServiceFabric/clusters/applicationTypes",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'))]",
    "location": "[variables('clusterLocation')]",
},
{
    "apiVersion": "2019-03-01",
    "type": "Microsoft.ServiceFabric/clusters/applicationTypes/versions",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'), '/', parameters('applicationTypeVersion'))]",
    "location": "[variables('clusterLocation')]",
},
{
    "apiVersion": "2019-03-01",
    "type": "Microsoft.ServiceFabric/clusters/applications",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationName'))]",
    "location": "[variables('clusterLocation')]",
},
{
    "apiVersion": "2019-03-01",
    "type": "Microsoft.ServiceFabric/clusters/applications/services",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationName'), '/', parameters('serviceName'))]",
    "location": "[variables('clusterLocation')]"
}

Aby wdrożyć aplikację przy użyciu usługi Azure Resource Manager, należy najpierw utworzyć pakiet aplikacji sfpkg usługi Service Fabric. Poniższy skrypt języka Python to przykład tworzenia sfpkg:

# Create SFPKG that needs to be uploaded to Azure Storage Blob Container
microservices_sfpkg = zipfile.ZipFile(
    self.microservices_app_package_name, 'w', zipfile.ZIP_DEFLATED)
package_length = len(self.microservices_app_package_path)

for root, dirs, files in os.walk(self.microservices_app_package_path):
    root_folder = root[package_length:]
    for file in files:
        microservices_sfpkg.write(os.path.join(
            root, file), os.path.join(root_folder, file))

microservices_sfpkg.close()

Konfiguracja automatycznego uaktualniania systemu operacyjnego maszyny wirtualnej

Uaktualnianie maszyn wirtualnych jest operacją zainicjowaną przez użytkownika i zaleca się włączenie automatycznych uaktualnień obrazów zestawu skalowania maszyn wirtualnych na potrzeby zarządzania poprawkami węzłów klastra usługi Service Fabric. Aplikacja Patch Orchestration Application (POA) to alternatywne rozwiązanie przeznaczone dla klastrów hostowanych poza platformą Azure. Mimo że można używać weryfikacji koncepcji na platformie Azure, hostowanie wymaga więcej zarządzania niż po prostu włączenie automatycznych uaktualnień obrazów systemu operacyjnego w zestawie skalowania. Poniżej przedstawiono właściwości szablonu zestawu skalowania maszyn wirtualnych usługi Resource Manager w celu włączenia automatycznych uaktualnień systemu operacyjnego:

"upgradePolicy": {
   "mode": "Automatic",
   "automaticOSUpgradePolicy": {
        "enableAutomaticOSUpgrade": true,
        "disableAutomaticRollback": false
    }
},

W przypadku korzystania z automatycznych uaktualnień systemu operacyjnego w usłudze Service Fabric nowy obraz systemu operacyjnego jest wdrażany w jednej domenie aktualizacji jednocześnie w celu utrzymania wysokiej dostępności usług uruchomionych w usłudze Service Fabric. Aby korzystać z automatycznych uaktualnień systemu operacyjnego w usłudze Service Fabric, klaster musi być skonfigurowany do używania warstwy trwałości silver lub nowszej.

Upewnij się, że dla następującego klucza rejestru ustawiono wartość false, aby zapobiec inicjowaniu niezordowanych aktualizacji hosta systemu Windows: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU.

Ustaw następujące właściwości szablonu zestawu skalowania maszyn wirtualnych, aby wyłączyć usługę Windows Update:

"osProfile": {
        "computerNamePrefix": "{vmss-name}",
        "adminUsername": "{your-username}",
        "secrets": [],
        "windowsConfiguration": {
          "provisionVMAgent": true,
          "enableAutomaticUpdates": false
        }
      },

Konfiguracja uaktualniania klastra usługi Service Fabric

Poniżej znajduje się właściwość szablonu klastra usługi Service Fabric umożliwiająca automatyczne uaktualnianie:

"upgradeMode": "Automatic",

Aby ręcznie uaktualnić klaster, pobierz dystrybucję cab/deb do maszyny wirtualnej klastra, a następnie wywołaj następujący program PowerShell:

Copy-ServiceFabricClusterPackage -Code -CodePackagePath <"local_VM_path_to_msi"> -CodePackagePathInImageStore ServiceFabric.msi -ImageStoreConnectionString "fabric:ImageStore"
Register-ServiceFabricClusterPackage -Code -CodePackagePath "ServiceFabric.msi"
Start-ServiceFabricClusterUpgrade -Code -CodePackageVersion <"msi_code_version">

Następne kroki