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 wykonaniu tych czynności powstanie działający w chmurze klaster, w którym można będzie wdrażać aplikacje. Aby utworzyć klaster systemu Windows za pomocą programu PowerShell, zobacz Tworzenie bezpiecznego klastra systemu Windows na platformie Azure.

Wymagania wstępne

Przed rozpoczęciem:

Następujące procedury umożliwiają utworzenie klastra usługi Service Fabric z siedmioma węzłami. Aby obliczyć koszt działania klastra usługi Service Fabric na platformie Azure, skorzystaj z Kalkulatora cen platformy Azure.

Pobieranie i eksplorowanie szablonu

Pobierz poniższe pliki szablonu usługi Resource Manager:

Dla systemu Ubuntu 18.04 LTS:

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

Dla systemu Ubuntu 20.04 LTS:

  • AzureDeploy.json
    • atrybut vmImageSku to "20.04-LTS"
    • Zasób Microsoft.ServiceFabric/clusters
      • parametr apiVersion ustawiany na wartość "2019-03-01"
      • właściwość vmImage ustawiana na "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. Plik AzureDeploy.json wdraża wiele zasobów, w tym następujące.

Klaster usługi Service Fabric

W zasobie Microsoft.ServiceFabric/clusters został wdrożony klaster systemu Linux o następujących właściwościach:

  • Trzy typy węzła
  • 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)
  • Zabezpieczenie przy użyciu certyfikatu (z możliwością konfiguracji za pomocą parametrów szablonu)
  • Usługa DNS jest włączona
  • Poziom trwałości: Brązowy (z możliwością konfiguracji za pomocą parametrów szablonu)
  • Poziom niezawodności: Srebrny (z możliwością konfiguracji za pomocą parametrów szablonu)
  • Punkt końcowy połączenia klienta: 19000 (z możliwością konfiguracji za pomocą parametrów szablonu)
  • Punkt końcowy bramy protokołu HTTP: 19080 (z możliwością konfiguracji za pomocą parametrów 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 protokołu 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 również są deklarowane 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 będą potrzebne dowolne inne porty aplikacji, będzie trzeba 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 być może będzie trzeba zmodyfikować na potrzeby danego wdrożenia:

Parametr Przykładowa wartość Uwagi
adminUserName vmadmin Nazwa użytkownika będącego administratorem maszyn wirtualnych klastra.
adminPassword Haslo#1234 Hasło administratora maszyn wirtualnych klastra.
clusterName mojklastersf123 Nazwa klastra.
lokalizacja southcentralus Lokalizacja klastra.
certificateThumbprint

W przypadku tworzenia certyfikatu z podpisem własnym lub podania pliku certyfikatu ta wartość powinna być pusta.

Aby użyć istniejącego certyfikatu, który został wcześniej przekazany do magazynu kluczy, wprowadź wartość odcisku palca SHA1 certyfikatu. Na przykład „6190390162C988701DB5676EB81083EA608DCCF3”.

certificateUrlValue

W przypadku tworzenia certyfikatu z podpisem własnym lub podania pliku certyfikatu ta wartość powinna być pusta.

Aby użyć istniejącego certyfikatu, który został wcześniej przekazany do magazynu kluczy, wprowadź adres URL certyfikatu. Na przykład "https://mykeyvault.vault.azure.net:443/secrets/mycertificate/02bea722c9ef4009a76c5052bcbf8346".

sourceVaultValue

W przypadku tworzenia certyfikatu z podpisem własnym lub podania pliku certyfikatu ta wartość powinna być pusta.

Aby użyć istniejącego certyfikatu, który został wcześniej przekazany do magazynu kluczy, wprowadź 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ępnym etapem jest skonfigurowanie topologii sieci i wdrożenie klastra usługi Service Fabric. Plik AzureDeploy.json szablonu usługi Resource Manager tworzy sieć wirtualną (VNET) i podsieć dla usługi Service Fabric. Szablon pozwala również wdrożyć klaster z włączonymi zabezpieczeniami opartymi na certyfikacie. W przypadku klastrów produkcyjnych jako certyfikatu klastra należy używać certyfikatu z urzędu certyfikacji. Do zabezpieczenia klastrów testowych może służyć certyfikat z podpisem własnym.

Szablon w tym artykule umożliwia wdrożenie klastra, który używa odcisku palca certyfikatu do identyfikowania certyfikatu klastra. Żadne dwa certyfikaty nie mogą mieć tego samego odcisku palca, co sprawia, że zarządzanie certyfikatami jest trudniejsze. Przełączenie 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 pod kątem używania nazw pospolitych certyfikatów do zarządzania certyfikatami, przeczytaj artykuł Modyfikacja klastra pod kątem zarządzania certyfikatami za pomocą nazw pospolitych.

Tworzenie klastra przy użyciu istniejącego certyfikatu

W poniższym skrypcie wdrożenie nowego klastra zabezpieczonego przy użyciu istniejącego certyfikatu odbywa się za pomocą polecenia az sf cluster create oraz szablonu. Polecenie to powoduje także utworzenie nowego magazynu kluczy na platformie Azure i przekazanie danego certyfikatu.

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, aby wdrożyć nowy klaster 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 do środowiska lokalnego.

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 zabezpieczonym klastrem

Połącz się z klastrem przy użyciu polecenia sfctl cluster select interfejsu wiersza polecenia usługi Service Fabric oraz swojego klucza. Użyj opcji --no-verify tylko w przypadku certyfikatu z podpisem własnym.

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

Za pomocą polecenia sfctl cluster health sprawdź poprawność połączenia i upewnij się, że klaster jest w dobrej kondycji.

sfctl cluster health

Czyszczenie zasobów

Jeśli nie przechodzisz od razu do następnego artykułu, rozważ usunięcie klastra, aby uniknąć naliczania opłat.

Następne kroki

Dowiedz się, jak skalować klaster.

Szablon w tym artykule umożliwia wdrożenie klastra, który używa odcisku palca certyfikatu do identyfikowania certyfikatu klastra. Żadne dwa certyfikaty nie mogą mieć tego samego odcisku palca, co sprawia, że zarządzanie certyfikatami jest trudniejsze. Przełączenie 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 pod kątem używania nazw pospolitych certyfikatów do zarządzania certyfikatami, przeczytaj artykuł Modyfikacja klastra pod kątem zarządzania certyfikatami za pomocą nazw pospolitych.