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:
- Jeśli nie masz subskrypcji platformy Azure, utwórz bezpłatne konto
- Zainstaluj interfejs wiersza polecenia usługi Service Fabric.
- Zainstaluj interfejs wiersza polecenia platformy Azure
- Aby dowiedzieć się więcej na temat kluczowych pojęć dotyczących klastrów, przeczytaj Omówienie klastrów platformy Azure
- Planowanie i przygotowywanie wdrożenia klastra produkcyjnego.
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. 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.