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
- Wenn Sie kein Azure-Abonnement besitzen, erstellen Sie ein kostenloses Konto.
- Installieren Sie die Service Fabric CLI.
- Installieren Sie die Azure CLI.
- Die grundlegenden Konzepte von Clustern finden Sie unter Übersicht über Azure-Cluster.
- Führen Sie die Schritte zum Planen und Vorbereiten der Bereitstellung eines Produktionsclusters aus.
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.