Udostępnij za pośrednictwem


Wdrażanie klastra usługi Service Fabric systemu Linux w sieci wirtualnej platformy Azure

Z tego artykułu dowiesz się, jak wdrożyć klaster usługi Service Fabric systemu Linux w sieci wirtualnej platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure i szablonu. Po zakończeniu będziesz mieć klaster działający w chmurze, w którym można wdrażać aplikacje. Aby utworzyć klaster systemu Windows przy użyciu programu PowerShell, zobacz Tworzenie bezpiecznego klastra systemu Windows na platformie Azure.

Wymagania wstępne

Przed rozpoczęciem:

Poniższe procedury tworzą siedmiowęzłowy klaster Service Fabric. Aby obliczyć koszty poniesione przez uruchomienie klastra usługi Service Fabric na platformie Azure, użyj kalkulatora cen platformy Azure.

Pobieranie i eksplorowanie szablonu

Pobierz następujące pliki szablonów usługi Resource Manager:

Dla systemu Ubuntu 18.04 LTS:

  • AzureDeploy.json
    • Atrybut vmImageSku jest ustawiony na "18.04-LTS"
    • Zasób usługi Microsoft.ServiceFabric/clusters
      • parametr apiVersion ustawiany na wartość "2019-03-01"
      • właściwość vmImage ustawiona na "Ubuntu18_04"
  • AzureDeploy.Parameters.json

Dla systemu Ubuntu 20.04 LTS:

  • AzureDeploy.json
    • atrybut vmImageSku jest "20.04-LTS"
    • Zasób usługi Microsoft.ServiceFabric/clusters
      • parametr apiVersion ustawiany na wartość "2019-03-01"
      • właściwość vmImage ustawiana na wartość "Ubuntu20_04"
  • AzureDeploy.Parameters.json

Te szablony wdrażają bezpieczny klaster siedmiu maszyn wirtualnych i trzy typy węzłów w sieci wirtualnej. Inne przykładowe szablony można znaleźć w witrynie GitHub. AzureDeploy.json wdraża szereg zasobów, w tym następujące.

Klaster usługi Service Fabric

W zasobie Microsoft.ServiceFabric/clusters klaster systemu Linux jest wdrażany z następującymi cechami:

  • trzy typy węzłów
  • pięć węzłów w podstawowym typie węzła (konfigurowalnych w parametrach szablonu), jeden węzeł w każdym z innych typów węzłów
  • System operacyjny: (Ubuntu 18.04 LTS / Ubuntu 20.04) (konfigurowalny w parametrach szablonu)
  • zabezpieczony certyfikat (konfigurowalny w parametrach szablonu)
  • Usługa DNS jest włączona
  • Poziom trwałości brązu (konfigurowalny w parametrach szablonu)
  • Poziom niezawodności Srebrny (konfigurowalny w parametrach szablonu)
  • punkt końcowy połączenia klienta: 19000 (konfigurowalny w parametrach szablonu)
  • Punkt końcowy bramy HTTP: 19080 (konfigurowalny w parametrach szablonu)

Moduł równoważenia obciążenia platformy Azure

W zasobie Microsoft.Network/loadBalancers skonfigurowano moduł równoważenia obciążenia oraz skonfigurowano sondy i reguły dla następujących portów:

  • punkt końcowy połączenia klienta: 19000
  • Punkt końcowy bramy HTTP: 19080
  • port aplikacji: 80
  • port aplikacji: 443

Sieć wirtualna i podsieć

Nazwy sieci wirtualnej i podsieci są deklarowane w parametrach szablonu. Przestrzenie adresowe sieci wirtualnej i podsieci są również zadeklarowane w parametrach szablonu i skonfigurowane w zasobie Microsoft.Network/virtualNetworks :

  • Przestrzeń adresowa sieci wirtualnej: 10.0.0.0/16
  • Przestrzeń adresowa podsieci usługi Service Fabric: 10.0.2.0/24

Jeśli są potrzebne inne porty aplikacji, należy dostosować zasób Microsoft.Network/loadBalancers, aby zezwolić na ruch przychodzący.

Rozszerzenie usługi Service Fabric

W zasobie Microsoft.Compute/virtualMachineScaleSets zostanie skonfigurowane rozszerzenie systemu Linux usługi Service Fabric. To rozszerzenie służy do uruchamiania usługi Service Fabric w usłudze Azure Virtual Machines i konfigurowania zabezpieczeń węzła.

Poniżej przedstawiono fragment kodu szablonu dla rozszerzenia usługi Service Fabric dla systemu Linux:

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

Ustawianie parametrów szablonu

Plik AzureDeploy.Parameters deklaruje wiele wartości używanych do wdrażania klastra i skojarzonych zasobów. Niektóre parametry, które możesz potrzebować zmodyfikować w związku ze swoim wdrożeniem:

Parametr Przykładowa wartość Notatki
nazwaUżytkownikaAdministratora vmadmin Nazwa użytkownika administratora dla maszyn wirtualnych klastra.
hasło administratora Hasło#1234 Hasło administratora dla maszyn wirtualnych klastra.
nazwa klastra mysfcluster123 Nazwa klastra.
lokalizacja southcentralus Lokalizacja klastra.
odcisk palca certyfikatu

Wartość powinna być pusta, jeśli tworzysz certyfikat z podpisem własnym lub podajesz plik certyfikatu.

Aby użyć istniejącego certyfikatu przekazanego wcześniej do magazynu kluczy, wypełnij wartość odcisku palca SHA1 certyfikatu. Na przykład "AA11BB22CC33DD44EE55FF66AA77BB88CC99DD00".

wartośćAdresuCertyfikatu

Wartość powinna być pusta, jeśli tworzysz certyfikat z podpisem własnym lub podajesz plik certyfikatu.

Aby użyć istniejącego certyfikatu przesłanego wcześniej do magazynu kluczy, wypełnij adres URL certyfikatu. Na przykład "https://mykeyvault.vault.azure.net:443/secrets/mycertificate/02bea722c9ef4009a76c5052bcbf8346".

sourceVaultValue

Wartość powinna być pusta, jeśli tworzysz certyfikat z podpisem własnym lub podajesz plik certyfikatu.

Aby użyć istniejącego certyfikatu przekazanego wcześniej do magazynu kluczy, wypełnij wartość magazynu źródłowego. Na przykład "/subscriptions/333cc2c84-12fa-5778-bd71-c71c07bf873f/resourceGroups/MyTestRG/providers/Microsoft.KeyVault/vaults/MYKEYVAULT".

Wdrażanie sieci wirtualnej i klastra

Następnie skonfiguruj topologię sieci i wdróż klaster usługi Service Fabric. Szablon AzureDeploy.json Resource Manager tworzy sieć wirtualną i podsieć dla usługi Service Fabric. Szablon wdraża również klaster z włączonymi zabezpieczeniami certyfikatów. W przypadku klastrów produkcyjnych należy użyć certyfikatu z urzędu certyfikacji jako certyfikatu klastra. Certyfikat z podpisem własnym może służyć do zabezpieczania klastrów testowych.

Szablon w tym artykule wdraża klaster, który używa odcisku certyfikatu do identyfikacji certyfikatu klastra. Żadne dwa certyfikaty nie mogą mieć tego samego odcisku palca, co sprawia, że zarządzanie certyfikatami jest trudniejsze. Przełączanie wdrożonego klastra z używania odcisków palca certyfikatu na używanie nazw pospolitych certyfikatów sprawia, że zarządzanie certyfikatami jest znacznie prostsze. Aby dowiedzieć się, jak zaktualizować klaster do używania nazw pospolitych certyfikatów do zarządzania certyfikatami, przeczytaj artykuł Change cluster to certificate common name management (Zmienianie klastra na zarządzanie nazwami pospolitą certyfikatów).

Tworzenie klastra przy użyciu istniejącego certyfikatu

Poniższy skrypt używa polecenia az sf cluster create i szablonu do wdrożenia nowego klastra zabezpieczonego przy użyciu istniejącego certyfikatu. Polecenie tworzy również nowy magazyn kluczy na platformie Azure i wysyła twój certyfikat.

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

Tworzenie klastra przy użyciu nowego certyfikatu z podpisem własnym

Poniższy skrypt używa polecenia az sf cluster create i szablonu do wdrożenia nowego klastra na platformie Azure. Polecenie tworzy również nowy magazyn kluczy na platformie Azure, dodaje nowy certyfikat z podpisem własnym do magazynu kluczy i pobiera plik certyfikatu lokalnie.

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

Nawiązywanie połączenia z bezpiecznym klastrem

Połącz się z klastrem za pomocą polecenia CLI usługi Service Fabric sfctl cluster select i klucza. Należy pamiętać, że dla certyfikatu z podpisem własnym użyj opcji --no-verify .

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

Sprawdź, czy masz połączenie i czy klaster jest w dobrym stanie, używając polecenia sfctl cluster health.

sfctl cluster health

Czyszczenie zasobów

Jeśli nie przejdziesz od razu do następnego artykułu, możesz usunąć klaster , aby uniknąć naliczania opłat.

Następne kroki

Dowiedz się, jak skalować klaster.

Szablon w tym artykule wdraża klaster, który używa odcisku certyfikatu do identyfikacji certyfikatu klastra. Żadne dwa certyfikaty nie mogą mieć tego samego odcisku palca, co sprawia, że zarządzanie certyfikatami jest trudniejsze. Przełączanie wdrożonego klastra z używania odcisków palca certyfikatu na używanie nazw pospolitych certyfikatów sprawia, że zarządzanie certyfikatami jest znacznie prostsze. Aby dowiedzieć się, jak zaktualizować klaster do używania nazw pospolitych certyfikatów do zarządzania certyfikatami, przeczytaj artykuł Change cluster to certificate common name management (Zmienianie klastra na zarządzanie nazwami pospolitą certyfikatów).