Delen via


Een Linux Service Fabric-cluster implementeren in een virtueel Azure-netwerk

In dit artikel leert u hoe u een Linux Service Fabric-cluster implementeert in een virtueel Azure-netwerk (VNET) met behulp van Azure CLI en een sjabloon. Wanneer u klaar bent, wordt er in de cloud een cluster uitgevoerd waarin u toepassingen kunt implementeren. Als u met behulp van PowerShell een Windows-cluster wilt maken, raadpleegt u Een Service Fabric Windows-cluster in een Azure-netwerk implementeren.

Vereisten

Voordat u begint:

Met de volgende procedures wordt er een Service Fabric-cluster met zeven knooppunten gemaakt. Gebruik de Azure-prijscalculator om de kosten te berekenen voor het uitvoeren van een Service Fabric-cluster in Azure.

De sjabloon downloaden en verkennen

Download de volgende Resource Manager-sjabloonbestanden:

Voor Ubuntu 18.04 LTS:

  • AzureDeploy.json
    • het kenmerk vmImageSku is van 18.04-LTS
    • Resource van Microsoft.ServiceFabric/clusters
      • apiVersion wordt ingesteld op '2019-03-01'
      • vmImage-eigenschap die wordt ingesteld op 'Ubuntu18_04'
  • AzureDeploy.Parameters.json

Voor Ubuntu 20.04 LTS:

  • AzureDeploy.json
    • het kenmerk vmImageSku is van 20.04-LTS
    • Resource van Microsoft.ServiceFabric/clusters
      • apiVersion wordt ingesteld op '2019-03-01'
      • vmImage-eigenschap die wordt ingesteld op 'Ubuntu20_04'
  • AzureDeploy.Parameters.json

Met deze sjablonen wordt een beveiligd cluster van zeven virtuele machines en drie knooppunttypen geïmplementeerd in een virtueel netwerk. Andere voorbeeldsjablonen zijn te vinden op GitHub. De AzureDeploy.json implementeert een aantal resources, waaronder de volgende.

Service Fabric-cluster

In de resource Microsoft.ServiceFabric/clusters wordt een Linux-cluster geïmplementeerd met de volgende kenmerken:

  • drie knooppunttypen
  • vijf knooppunten in het primaire knooppunttype (configureerbaar in de sjabloonparameters), één knooppunt in elk van de andere knooppunttypen
  • Besturingssysteem: (Ubuntu 18.04 LTS / Ubuntu 20.04) (configureerbaar in de sjabloonparameters)
  • een beveiligd certificaat (configureerbaar in de sjabloonparameters)
  • een ingeschakelde DNS-service
  • een bronzen duurzaamheidsniveau (configureerbaar in de sjabloonparameters)
  • een zilveren betrouwbaarheidsniveau (configureerbaar in de sjabloonparameters)
  • eindpunt van de clientverbinding: 19000 (configureerbaar in de sjabloonparameters)
  • eindpunt van de HTTP-gateway: 19080 (configureerbaar in de sjabloonparameters)

Azure load balancer

In de resource Microsoft.Network/loadBalancers wordt een load balancer geconfigureerd en worden tests en regels ingesteld voor de volgende poorten:

  • het eindpunt van de clientverbinding: 19000
  • het eindpunt van de HTTP-gateway: 19080
  • toepassingspoort: 80
  • toepassingspoort: 443

Virtueel netwerk en subnet

De namen van het virtuele netwerk en het subnet worden gedeclareerd in de sjabloonparameters. Adresruimten van het virtuele netwerk en subnet worden ook gedeclareerd in de sjabloonparameters en geconfigureerd in de resource Microsoft.Network/virtualNetworks:

  • virtuele netwerkadresruimte: 10.0.0.0/16
  • Service Fabric-subnetadresruimte: 10.0.2.0/24

Als er andere toepassingspoorten nodig zijn, moet u de resource Microsoft.Network/loadBalancers zo wijzigen dat verkeer kan binnenkomen.

Service Fabric-extensie

In de resource Microsoft.Compute/virtualMachineScaleSets is de Service Fabric Linux-extensie geconfigureerd. Deze extensie wordt gebruikt om Service Fabric te bootstrapen naar virtuele Azure-machines en knooppuntbeveiliging te configureren.

Hier volgt een sjabloonfragment voor de Service Fabric Linux-extensie:

"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"
     }
   },

De sjabloonparameters instellen

Het bestand AzureDeploy.Parameters declareert veel waarden die worden gebruikt voor het implementeren van het cluster en de bijbehorende resources. Enkele van de parameters die u mogelijk moet wijzigen voor uw implementatie:

Parameter Voorbeeldwaarde Opmerkingen
adminUserName vmadmin De gebruikersnaam van de beheerder van de cluster-VM's.
adminPassword Password#1234 Het wachtwoord van de beheerder van de cluster-VM's.
clusterName mysfcluster123 De naam van het cluster.
locatie US - zuid-centraal De locatie van het cluster.
certificateThumbprint

De waarde moet leeg zijn als u een zelfondertekend certificaat maakt of als u een certificaatbestand opgeeft.

Als u een bestaand certificaat wilt gebruiken dat u eerder hebt geüpload naar een sleutelkluis, vult u de SHA1-waarde van de certificaatvingerafdruk in. Bijvoorbeeld 6190390162C988701DB5676EB81083EA608DCCF3.

certificateUrlValue

De waarde moet leeg zijn als u een zelfondertekend certificaat maakt of als u een certificaatbestand opgeeft.

Als u een bestaand certificaat wilt gebruiken dat u eerder hebt geüpload naar een sleutelkluis, vult u de URL van het certificaat in. Bijvoorbeeld "https://mykeyvault.vault.azure.net:443/secrets/mycertificate/02bea722c9ef4009a76c5052bcbf8346".

sourceVaultValue

De waarde moet leeg zijn als u een zelfondertekend certificaat maakt of als u een certificaatbestand opgeeft.

Als u een bestaand certificaat wilt gebruiken dat u eerder hebt geüpload naar een sleutelkluis, vult u de waarde van de bronkluis in. Bijvoorbeeld /subscriptions/333cc2c84-12fa-5778-bd71-c71c07bf873f/resourceGroups/MyTestRG/providers/Microsoft.KeyVault/vaults/MYKEYVAULT.

Het virtuele netwerk en het cluster implementeren

Stel vervolgens de netwerktopologie in en implementeer het Service Fabric-cluster. De Resource Manager-sjabloon AzureDeploy.json maakt een virtueel netwerk (VNET) en een subnet voor Service Fabric. De sjabloon implementeert ook een cluster met certificaatbeveiliging ingeschakeld. Gebruik voor productieclusters een certificaat van een certificeringsinstantie (CA) als clustercertificaat. Een zelfondertekend certificaat kan worden gebruikt om testclusters te beveiligen.

De sjabloon in dit artikel implementeert een cluster dat gebruik maakt van de certificaatvingerafdruk voor het identificeren van het clustercertificaat. Geen twee certificaten kunnen dezelfde vingerafdruk hebben, waardoor certificaatbeheer moeilijker wordt. Schakelen tussen een geïmplementeerd cluster vanuit vingerafdrukken voor certificaten naar het gebruik van gewone namen voor certificaten maakt het beheer van certificaten veel eenvoudiger. Lees Cluster wijzigen naar certificaatbeheer met gewone namen voor informatie over het bijwerken van het cluster voor het gebruik van gewone namen voor certificaten voor het beheren van certificaten.

Een cluster maken met behulp van een bestaand certificaat

Het volgende script maakt gebruik van de opdracht en de sjabloon az sf cluster create om een nieuw cluster te implementeren dat met een bestaand certificaat is beveiligd. De opdracht maakt ook een nieuwe sleutelkluis in Azure en uploadt uw certificaat.

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

Een cluster met een nieuw, zelfondertekend certificaat maken

Het volgende script maakt gebruik van de opdracht az sf cluster create en een sjabloon om een nieuw cluster te implementeren in Azure. Met de opdracht wordt ook een nieuwe sleutelkluis in Azure gemaakt, een nieuw zelfondertekend certificaat toegevoegd aan de sleutelkluis en het certificaatbestand lokaal gedownload.

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

Verbinding maken met het beveiligde cluster

Maak verbinding met het cluster met behulp van de Service Fabric CLI-opdracht sfctl cluster select en uw sleutel. Opmerking: gebruik voor een zelfondertekend certificaat alleen de optie --no-verify.

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

Controleer of u bent verbonden en of het cluster goed werkt door de opdracht sfctl cluster health uit te voeren.

sfctl cluster health

Resources opschonen

Als u niet meteen verdergaat met het volgende artikel, is het wellicht een goed idee om het cluster te verwijderen. U bespaart dan kosten.

Volgende stappen

Meer informatie over het schalen van een cluster.

De sjabloon in dit artikel implementeert een cluster dat gebruik maakt van de certificaatvingerafdruk voor het identificeren van het clustercertificaat. Geen twee certificaten kunnen dezelfde vingerafdruk hebben, waardoor certificaatbeheer moeilijker wordt. Schakelen tussen een geïmplementeerd cluster vanuit vingerafdrukken voor certificaten naar het gebruik van gewone namen voor certificaten maakt het beheer van certificaten veel eenvoudiger. Lees Cluster wijzigen naar certificaatbeheer met gewone namen voor informatie over het bijwerken van het cluster voor het gebruik van gewone namen voor certificaten voor het beheren van certificaten.