Distribuera ett Service Fabric-kluster i Linux 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 färdig körs ett kluster i molnet som du kan distribuera program till. Om du vill skapa ett Windows-kluster med PowerShell läser du informationen om att 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. Du kan beräkna kostnaden för att köra ett Service Fabric-kluster i Azure med Azures prissättningsberäknare.

Ladda ned och titta närmare på mallen

Ladda ned följande mallfiler för Resource Manager:

För Ubuntu 18.04 LTS:

För Ubuntu 20.04 LTS:

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änst är aktiverad
  • Hållbarhetsnivå Brons (kan konfigureras i mallparametrarna)
  • Tillförlitlighetsnivå Silver (kan konfigureras i mallparametrarna)
  • slutpunkt för klientanslutning: 19000 (kan konfigureras i mallparametrarna)
  • slutpunkt för HTTP-gateway: 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:

  • klientanslutningsslutpunkt: 19000
  • HTTP-gatewayslutpunkt: 19080
  • programport: 80
  • programport: 443

Virtuellt nätverk och undernät

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

  • det virtuella nätverkets adressutrymme: 10.0.0.0/16
  • Service Fabric-undernätsadressutrymme: 10.0.2.0/24

Om du behöver andra programportar måste du justera resursen Microsoft.Network/loadBalancers för att låta trafiken komma in.

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älla in mallparametrar

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

Parameter Exempelvärde Kommentar
adminUserName vmadmin Administratörsnamn för virtuella datorer i klustret.
adminPassword Password#1234 Administratörslösenord för virtuella datorer i klustret.
clusterName mysfcluster123 Namnet på klustret.
plats USA, södra centrala Klustrets placering.
certificateThumbprint

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

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

certificateUrlValue

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

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

sourceVaultValue

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

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

Distribuera det virtuella nätverket och klustret

Konfigurera därefter nätverkstopologi och distribuera Service Fabric-klustret. Resource Manager-mallen AzureDeploy.json skapar ett virtuellt nätverk (VNET) och ett undernät för Service Fabric. Mallen distribuerar också ett kluster med certifikatsäkerhet aktiverad. För produktionskluster ska du använda ett certifikat från en certifikatutfärdare 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. Två certifikat kan inte ha samma tumavtryck, vilket gör certifikathantering svårare. Om ett distribuerat kluster växlas från att använda certifikattumavtryck till att använda vanliga certifikatnamn blir certifikathanteringen mycket enklare. Du kan lära dig att uppdatera klustret till att använda vanliga certifikatnamn för certifikathantering genom att läsa avsnittet om att ändra kluster till vanligt certifikatnamn för hantering.

Skapa ett kluster med ett befintligt certifikat

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

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 även 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 Service Fabric CLI sfctl cluster select-kommandot med din nyckel. Använd enbart 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 genast fortsätter till nästa artikel kanske du vill ta bort klustret för att undvika kostnader.

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. Två certifikat kan inte ha samma tumavtryck, vilket gör certifikathantering svårare. Om ett distribuerat kluster växlas från att använda certifikattumavtryck till att använda vanliga certifikatnamn blir certifikathanteringen mycket enklare. Du kan lära dig att uppdatera klustret till att använda vanliga certifikatnamn för certifikathantering genom att läsa avsnittet om att ändra kluster till vanligt certifikatnamn för hantering.