Bereitstellen eines Service Fabric-Linux-Clusters in einem virtuellen Azure-Netzwerk

In diesem Artikel erfahren Sie, wie Sie mithilfe der Azure CLI und einer Vorlage einen Service Fabric-Linux-Cluster in einem virtuellen Azure-Netzwerk (VNET) bereitstellen. Wenn Sie fertig sind, verfügen Sie über einen Cluster, der in der Cloud ausgeführt wird und für den Sie Anwendungen bereitstellen können. Informationen zum Erstellen eines Windows-Clusters mithilfe von PowerShell finden Sie unter Bereitstellen eines sicheren Service Fabric-Windows-Clusters in einem virtuellen Azure-Netzwerk.

Voraussetzungen

Vorbereitungen

Mit den folgenden Schritten wird ein Service Fabric-Cluster mit sieben Knoten erstellt. Zum Berechnen der Kosten, die durch das Ausführen eines Service Fabric-Clusters in Azure anfallen, verwenden Sie den Azure-Preisrechner.

Herunterladen und Erkunden der Vorlage

Laden Sie die folgenden Resource Manager-Vorlagendateien herunter:

Für Ubuntu 18.04 LTS:

  • AzureDeploy.json
    • Das vmImageSku-Attribut wird auf „18.04-LTS“ festgelegt
    • Für die Ressource „Microsoft.ServiceFabric/clusters“:
      • apiVersion wird auf „2019-03-01“ festgelegt
      • vmImage-Eigenschaft ist auf „Ubuntu18_04“ festgelegt
  • AzureDeploy.Parameters.json

Für Ubuntu 20.04 LTS:

  • AzureDeploy.json
    • Das vmImageSku-Attribut wird auf „20.04-LTS“ festgelegt
    • Für die Ressource „Microsoft.ServiceFabric/clusters“:
      • apiVersion wird auf „2019-03-01“ festgelegt
      • Die vmImage-Eigenschaft wird auf „Ubuntu20_04“ festgelegt
  • AzureDeploy.Parameters.json

Diese Vorlagen stellen einen sicheren Cluster mit sieben VMs und drei Knotentypen in einem virtuellen Netzwerk bereit. Weitere Beispielvorlagen finden Sie auf GitHub. „AzureDeploy.json“ stellt eine Reihe von Ressourcen bereit, darunter die folgenden.

Service Fabric-Cluster

In der Ressource Microsoft.ServiceFabric/clusters wird ein Linux-Cluster mit den folgenden Eigenschaften bereitgestellt:

  • Drei Knotentypen
  • Fünf Knoten für den primären Knotentyp (in den Vorlagenparametern konfigurierbar) sowie jeweils ein Knoten für die anderen Knotentypen
  • Betriebssystem: Ubuntu 18.04 LTS / Ubuntu 20.04 (in den Vorlagenparametern konfigurierbar)
  • Geschütztes Zertifikat (in den Vorlagenparametern konfigurierbar)
  • DNS-Dienst aktiviert
  • Dauerhaftigkeitsstufe „Bronze“ (in den Vorlagenparametern konfigurierbar)
  • Zuverlässigkeitsstufe „Silber“ (in den Vorlagenparametern konfigurierbar)
  • Clientverbindungsendpunkt: 19000 (in den Vorlagenparametern konfigurierbar)
  • HTTP-Gatewayendpunkt: 19080 (in den Vorlagenparametern konfigurierbar)

Azure Load Balancer

In der Ressource Microsoft.Network/loadBalancers ist ein Lastenausgleich konfiguriert, und Tests und Regeln für die folgenden Ports sind eingerichtet:

  • Clientverbindungsendpunkt: 19000
  • HTTP-Gatewayendpunkt: 19080
  • Anwendungsport: 80
  • Anwendungsport: 443

Virtuelles Netzwerk und Subnetz

Die Namen des virtuellen Netzwerks und Subnetzes werden in den Vorlagenparametern deklariert. Adressräume des virtuellen Netzwerks und des Subnetzes werden auch in den Vorlagenparametern deklariert und in der Ressource Microsoft.Network/virtualNetworks konfiguriert:

  • Adressraum des virtuellen Netzwerks: 10.0.0.0/16
  • Service Fabric-Subnetzadressraum: 10.0.2.0/24

Wenn keine anderen Anwendungsports benötigt werden, müssen Sie die Ressource „Microsoft.Network/loadBalancers“ anpassen, um eingehenden Datenverkehr zuzulassen.

Service Fabric-Erweiterung

In der Ressource Microsoft.Compute/virtualMachineScaleSets ist die Service Fabric-Linux-Erweiterung konfiguriert. Diese Erweiterung wird zum Starten von Service Fabric in Azure Virtual Machines und zum Konfigurieren der Knotensicherheit verwendet.

Nachfolgend sehen Sie einen Vorlagenschnipsel für die Service Fabric-Linux-Erweiterung:

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

Festlegen von Vorlagenparametern

In der AzureDeploy.Parameters-Datei werden viele Werte deklariert, die zum Bereitstellen des Clusters und der zugehörigen Ressourcen verwendet werden. Hier sind einige Parameter angegeben, die Sie für Ihre Bereitstellung ggf. ändern müssen:

Parameter Beispielwert Notizen
adminUserName vmadmin Administratorbenutzername für die Cluster-VMs
adminPassword Password#1234 Administratorkennwort für die Cluster-VMs
clusterName mysfcluster123 Name des Clusters
location southcentralus Standort des Clusters
certificateThumbprint

Der Wert sollte leer sein, wenn ein selbstsigniertes Zertifikat erstellt oder eine Zertifikatsdatei bereitgestellt wird.

Um ein vorhandenes, zuvor in einen Schlüsseltresor hochgeladenes Zertifikat zu verwenden, geben Sie den Wert für den SHA-1-Zertifikatfingerabdruck ein. Beispiel: „6190390162C988701DB5676EB81083EA608DCCF3“.

certificateUrlValue

Der Wert sollte leer sein, wenn ein selbstsigniertes Zertifikat erstellt oder eine Zertifikatsdatei bereitgestellt wird.

Geben Sie die Zertifikat-URL ein, wenn Sie ein vorhandenes Zertifikat verwenden möchten, das zuvor in einen Schlüsseltresor hochgeladen wurde. Beispiel: "https://mykeyvault.vault.azure.net:443/secrets/mycertificate/02bea722c9ef4009a76c5052bcbf8346".

sourceVaultValue

Der Wert sollte leer sein, wenn ein selbstsigniertes Zertifikat erstellt oder eine Zertifikatsdatei bereitgestellt wird.

Geben Sie den Wert für den Quelltresor ein, wenn Sie ein vorhandenes Zertifikat verwenden möchten, das zuvor in einen Schlüsseltresor hochgeladen wurde. Beispiel: „/subscriptions/333cc2c84-12fa-5778-bd71-c71c07bf873f/resourceGroups/MyTestRG/providers/Microsoft.KeyVault/vaults/MYKEYVAULT“.

Bereitstellen des virtuellen Netzwerks und des Clusters

Richten Sie als Nächstes die Netzwerktopologie ein, und stellen Sie den Service Fabric-Cluster bereit. Die Resource Manager-Vorlage AzureDeploy.json erstellt ein virtuelles Netzwerk (VNET) und ein Subnetz für Service Fabric. Außerdem wird mit der Vorlage ein Cluster mit aktivierter Zertifikatsicherheit bereitgestellt. Verwenden Sie für Produktionscluster ein Zertifikat einer Zertifizierungsstelle als Clusterzertifikat. Es kann ein selbstsigniertes Zertifikat zum Schützen von Testclustern verwendet werden.

Mit der Vorlage in diesem Artikel wird ein Cluster bereitgestellt, der das Clusterzertifikat anhand des Zertifikatfingerabdrucks identifiziert. Zwei Zertifikate können nicht den gleichen Fingerabdruck haben, was die Zertifikatverwaltung erschwert. Durch den Wechsel von „Zertifikatfingerabdruck“ zu „Allgemeiner Name“ bei einem bereitgestellten Cluster wird die Zertifikatverwaltung vereinfacht. Unter Ändern des Clusters in Zertifikatverwaltung mit allgemeinen Namen erfahren Sie, wie Sie den Cluster aktualisieren, um allgemeine Zertifikatnamen für die Zertifikatverwaltung zu verwenden.

Erstellen eines Clusters mit einem vorhandenen Zertifikat

Im folgenden Skript werden der Befehl az sf cluster create und eine Vorlage verwendet, um einen neuen Cluster bereitzustellen, der durch ein vorhandenes Zertifikat geschützt ist. Außerdem wird mit dem Befehl ein neuer Schlüsseltresor in Azure erstellt und Ihr Zertifikat hochgeladen.

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

Erstellen eines Clusters mit einem neuen selbstsignierten Zertifikat

Das folgende Skript verwendet den Befehl az sf cluster create und eine Vorlage, um einen neuen Cluster in Azure bereitzustellen. Der Befehl erstellt auch einen neuen Schlüsseltresor in Azure, fügt diesem ein neues selbstsigniertes Zertifikat hinzu und lädt das Zertifikat an einen lokalen Speicherort herunter.

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

Herstellen einer Verbindung mit dem sicheren Cluster

Stellen Sie mit dem Service Fabric-CLI-Befehl sfctl cluster select unter Verwendung Ihres Schlüssels eine Verbindung mit dem Cluster her. Verwenden Sie für ein selbstsigniertes Zertifikat nur die Option --no-verify.

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

Überprüfen Sie mithilfe des Befehls sfctl cluster health, ob die Verbindung hergestellt wurde und der Cluster fehlerfrei ist.

sfctl cluster health

Bereinigen von Ressourcen

Wenn Sie nicht direkt mit dem nächsten Artikel fortfahren, sollten Sie den Cluster löschen, um anfallende Gebühren zu vermeiden.

Nächste Schritte

Erfahren Sie, wie Sie einen Cluster skalieren.

Mit der Vorlage in diesem Artikel wird ein Cluster bereitgestellt, der das Clusterzertifikat anhand des Zertifikatfingerabdrucks identifiziert. Zwei Zertifikate können nicht den gleichen Fingerabdruck haben, was die Zertifikatverwaltung erschwert. Durch den Wechsel von „Zertifikatfingerabdruck“ zu „Allgemeiner Name“ bei einem bereitgestellten Cluster wird die Zertifikatverwaltung vereinfacht. Unter Ändern des Clusters in Zertifikatverwaltung mit allgemeinen Namen erfahren Sie, wie Sie den Cluster aktualisieren, um allgemeine Zertifikatnamen für die Zertifikatverwaltung zu verwenden.