Dela via


Distribuera ett Linux Service Fabric-kluster till ett virtuellt Azure-nätverk

I den här artikeln får du lära dig hur du distribuerar ett Linux Service Fabric-kluster till ett virtuellt Azure-nätverk (VNET) med hjälp av Azure CLI och en mall. När du är klar har du ett kluster som körs i molnet som du kan distribuera program till. Information om hur du skapar ett Windows-kluster med PowerShell finns i Skapa ett säkert Windows-kluster i Azure.

Förutsättningar

Innan du börjar:

Följande procedurer skapar ett Service Fabric-kluster med sju noder. Om du vill beräkna kostnaden för att köra ett Service Fabric-kluster i Azure använder du Priskalkylatorn för Azure.

Ladda ned och utforska mallen

Ladda ned följande Resource Manager-mallfiler:

För Ubuntu 18.04 LTS:

  • AzureDeploy.json
    • vmImageSku-attributet är satt till "18.04-LTS"
    • Resursen Microsoft.ServiceFabric/clusters
      • apiVersion anges till "2019-03-01"
      • vmImage-egenskapen är inställd på "Ubuntu18_04"
  • AzureDeploy.Parameters.json

För Ubuntu 20.04 LTS:

  • AzureDeploy.json
    • vmImageSku-attributet sätts till "20.04-LTS"
    • Resursen Microsoft.ServiceFabric/clusters
      • apiVersion anges till "2019-03-01"
      • vmImage-egenskapen har satts till "Ubuntu20_04"
  • AzureDeploy.Parameters.json

Dessa mallar distribuerar ett säkert kluster med sju virtuella datorer och tre nodtyper till ett virtuellt nätverk. Andra exempelmallar finns på GitHub. AzureDeploy.json distribuerar ett antal resurser, inklusive följande.

Service Fabric-kluster

I resursen Microsoft.ServiceFabric/clusters distribueras ett Linux-kluster med följande egenskaper:

  • tre nodtyper
  • fem noder i den primära nodtypen (kan konfigureras i mallparametrarna), en nod i var och en av de andra nodtyperna
  • OPERATIVSYSTEM: (Ubuntu 18.04 LTS/Ubuntu 20.04) (kan konfigureras i mallparametrarna)
  • skyddat certifikat (kan konfigureras i mallparametrarna)
  • DNS-tjänsten är aktiverad
  • Hållbarhetsnivå för Brons (kan konfigureras i mallparametrarna)
  • Tillförlitlighetsnivå för Silver (kan konfigureras i mallparametrarna)
  • slutpunkt för klientanslutning: 19000 (kan konfigureras i mallparametrarna)
  • HTTP-gatewayslutpunkt: 19080 (kan konfigureras i mallparametrarna)

Azure-lastbalanserare

I resursen Microsoft.Network/loadBalancers konfigureras en lastbalanserare och avsökningar och regler konfigureras för följande portar:

  • slutpunkt för klientanslutning: 19000
  • HTTP-gatewayslutpunkt: 19080
  • applikationsport: 80
  • applikationsport: 443

Virtuellt nätverk och undernät

Namnen på det virtuella nätverket och undernätet deklareras i mallparametrarna. Adressutrymmen för det virtuella nätverket och undernätet deklareras också i mallparametrarna och konfigureras i resursen Microsoft.Network/virtualNetworks :

  • virtuellt nätverksadressutrymme: 10.0.0.0/16
  • Service Fabric-undernätsadressutrymme: 10.0.2.0/24

Om det behövs några andra programportar måste du justera resursen Microsoft.Network/loadBalancers för att tillåta trafik.

Service Fabric-tillägg

I resursen Microsoft.Compute/virtualMachineScaleSets konfigureras Service Fabric Linux-tillägget. Det här tillägget används för att starta Service Fabric till virtuella Azure-datorer och konfigurera Node Security.

Följande är ett mallfragment för Service Fabric Linux-tillägget:

"extensions": [
  {
    "name": "[concat('ServiceFabricNodeVmExt','_vmNodeType0Name')]",
    "properties": {
      "type": "ServiceFabricLinuxNode",
      "autoUpgradeMinorVersion": true,
      "enableAutomaticUpgrade": true,
      "protectedSettings": {
        "StorageAccountKey1": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')),'2015-05-01-preview').key1]",
       },
       "publisher": "Microsoft.Azure.ServiceFabric",
       "settings": {
         "clusterEndpoint": "[reference(parameters('clusterName')).clusterEndpoint]",
         "nodeTypeRef": "[variables('vmNodeType0Name')]",
         "durabilityLevel": "Silver",
         "enableParallelJobs": true,
         "nicPrefixOverride": "[variables('subnet0Prefix')]",
         "certificate": {
           "commonNames": [
             "[parameters('certificateCommonName')]"
           ],
           "x509StoreName": "[parameters('certificateStoreValue')]"
         }
       },
       "typeHandlerVersion": "2.0"
     }
   },

Ställ in mallparametrar

Filen AzureDeploy.Parameters deklarerar många värden som används för att distribuera klustret och associerade resurser. Några av de parametrar som du kan behöva ändra för distributionen:

Parameter Exempelvärde Noteringar
administratörsAnvändarnamn vmadmin Administratörsanvändarnamn för de virtuella klusterdatorerna.
administratörslösenord Lösenord#1234 Administratörslösenord för de virtuella klusterdatorerna.
klusternamn mysfcluster123 Namnet på klustret.
läge southcentralus Klustrets placering.
certificateThumbprint

Värdet bör vara tomt om du skapar ett självsignerat certifikat eller tillhandahåller en certifikatfil.

Om du vill använda ett befintligt certifikat som tidigare laddats upp till ett nyckelvalv fyller du i certifikatets SHA1-tumavtrycksvärde. Till exempel "AA11BB22CC33DD44EE55FF66AA77BB88CC99DD00".

certificateUrlValue

Värdet bör vara tomt om du skapar ett självsignerat certifikat eller tillhandahåller en certifikatfil.

Om du vill använda ett befintligt certifikat som tidigare laddats upp till ett nyckelvalv fyller du i certifikat-URL:en. Till exempel "https://mykeyvault.vault.azure.net:443/secrets/mycertificate/02bea722c9ef4009a76c5052bcbf8346".

sourceVaultValue

Värdet bör vara tomt om du skapar ett självsignerat certifikat eller tillhandahåller en certifikatfil.

Om du vill använda ett befintligt certifikat som tidigare laddats upp till ett nyckelvalv fyller du i källvalvets värde. Till exempel "/subscriptions/333cc2c84-12fa-5778-bd71-c71c07bf873f/resourceGroups/MyTestRG/providers/Microsoft.KeyVault/vaults/MYKEYVAULT".

Distribuera det virtuella nätverket och klustret

Konfigurera sedan nätverkstopologin och distribuera Service Fabric-klustret. Mallen AzureDeploy.json Resource Manager skapar ett virtuellt nätverk (VNET) och ett undernät för Service Fabric. Mallen distribuerar också ett kluster med certifikatsäkerhet aktiverat. För produktionskluster använder du ett certifikat från en certifikatutfärdare (CA) som klustercertifikat. Ett självsignerat certifikat kan användas för att skydda testkluster.

Mallen i den här artikeln distribuerar ett kluster som använder certifikatets tumavtryck för att identifiera klustercertifikatet. Inga två certifikat kan ha samma tumavtryck, vilket gör certifikathanteringen svårare. Om du växlar ett distribuerat kluster från att använda tumavtryck för certifikat till att använda certifikatets vanliga namn blir certifikathanteringen mycket enklare. Om du vill lära dig hur du uppdaterar klustret för att använda vanliga certifikatnamn för certifikathantering läser du Ändra kluster till certifikatets vanliga namnhantering.

Skapa ett kluster med ett befintligt certifikat

Följande skript använder kommandot och mallen az sf cluster create för att distribuera ett nytt kluster som skyddas med ett befintligt certifikat. Kommandot skapar också ett nytt nyckelvalv i Azure och laddar upp ditt certifikat.

ResourceGroupName="sflinuxclustergroup"
Location="southcentralus"
Password="q6D7nN%6ck@6"
VaultName="linuxclusterkeyvault"
VaultGroupName="linuxclusterkeyvaultgroup"
CertPath="C:\MyCertificates\MyCertificate.pem"

# sign in to your Azure account and select your subscription
az login
az account set --subscription <guid>

# Create a new resource group for your deployment and give it a name and a location.
az group create --name $ResourceGroupName --location $Location

# Create the Service Fabric cluster.
az sf cluster create --resource-group $ResourceGroupName --location $Location \
   --certificate-password $Password --certificate-file $CertPath \
   --vault-name $VaultName --vault-resource-group $ResourceGroupName  \
   --template-file AzureDeploy.json --parameter-file AzureDeploy.Parameters.json

Skapa ett kluster med ett nytt självsignerat certifikat

Följande skript använder kommandot az sf cluster create och en mall för att distribuera ett nytt kluster i Azure. Kommandot skapar också ett nytt nyckelvalv i Azure, lägger till ett nytt självsignerat certifikat i nyckelvalvet och laddar ned certifikatfilen lokalt.

ResourceGroupName="sflinuxclustergroup"
ClusterName="sflinuxcluster"
Location="southcentralus"
Password="q6D7nN%6ck@6"
VaultName="linuxclusterkeyvault"
VaultGroupName="linuxclusterkeyvaultgroup"
CertPath="C:\MyCertificates"

az sf cluster create --resource-group $ResourceGroupName --location $Location \
   --cluster-name $ClusterName --template-file C:\temp\cluster\AzureDeploy.json \
   --parameter-file C:\temp\cluster\AzureDeploy.Parameters.json --certificate-password $Password \
   --certificate-output-folder $CertPath --certificate-subject-name $ClusterName.$Location.cloudapp.azure.com \
   --vault-name $VaultName --vault-resource-group $ResourceGroupName

Ansluta till det säkra klustret

Anslut till klustret med hjälp av Service Fabric CLI-kommandot sfctl cluster select med din nyckel. Obs! Använd endast alternativet --no-verify för ett självsignerat certifikat.

sfctl cluster select --endpoint https://aztestcluster.southcentralus.cloudapp.azure.com:19080 \
--pem ./aztestcluster201709151446.pem --no-verify

Kontrollera att du är ansluten och att klustret är felfritt med kommandot sfctl cluster health .

sfctl cluster health

Rensa resurser

Om du inte omedelbart går vidare till nästa artikel kanske du vill ta bort klustret för att undvika att debiteras.

Nästa steg

Lär dig hur du skalar ett kluster.

Mallen i den här artikeln distribuerar ett kluster som använder certifikatets tumavtryck för att identifiera klustercertifikatet. Inga två certifikat kan ha samma tumavtryck, vilket gör certifikathanteringen svårare. Om du växlar ett distribuerat kluster från att använda tumavtryck för certifikat till att använda certifikatets vanliga namn blir certifikathanteringen mycket enklare. Om du vill lära dig hur du uppdaterar klustret för att använda vanliga certifikatnamn för certifikathantering läser du Ändra kluster till certifikatets vanliga namnhantering.