Samouczek: wdrażanie klastra usługi Service Fabric z systemem Windows w sieci wirtualnej platformy Azure

Niniejszy samouczek jest pierwszą częścią serii. Dowiesz się, jak wdrożyć klaster usługi Azure Service Fabric z systemem Windows w sieci wirtualnej platformy Azure i sieciowej grupie zabezpieczeń przy użyciu programu PowerShell 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 Linux korzystający z interfejsu wiersza polecenia platformy Azure, zobacz Tworzenie bezpiecznego klastra systemu Linux na platformie Azure.

W tym samouczku opisano scenariusz produkcyjny. Jeśli chcesz utworzyć mniejszy klaster na potrzeby testowania, zobacz Tworzenie klastra testowego.

Z tego samouczka dowiesz się, jak wykonywać następujące czynności:

  • Tworzenie sieci wirtualnej na platformie Azure przy użyciu programu PowerShell
  • Tworzenie magazynu kluczy i przekazywanie certyfikatu
  • Konfigurowanie uwierzytelniania w usłudze Microsoft Entra
  • Konfigurowanie kolekcji diagnostyki
  • Konfigurowanie usługi EventStore
  • Konfigurowanie dzienników usługi Azure Monitor
  • Tworzenie bezpiecznego klastra usługi Service Fabric w programie Azure PowerShell
  • Zabezpieczanie klastra za pomocą certyfikatu X.509
  • Nawiązywanie połączenia z klastrem przy użyciu programu PowerShell
  • Usuwanie klastra

Ta seria samouczków zawiera informacje na temat wykonywania następujących czynności:

Uwaga

Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. Zobacz Instalowanie programu Azure PowerShell, aby rozpocząć. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

Wymagania wstępne

Przed rozpoczęciem tego samouczka:

Następujące procedury umożliwiają utworzenie klastra usługi Service Fabric z siedmioma węzłami. Skorzystaj z kalkulatora cen platformy Azure, aby obliczyć koszty poniesione przez uruchomienie klastra usługi Service Fabric na platformie Azure.

Pobieranie i eksplorowanie szablonu

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

Ten szablon umożliwia wdrożenie zabezpieczonego klastra siedmiu maszyn wirtualnych z trzema typami węzła w sieci wirtualnej i sieciowej grupie zabezpieczeń. 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 skonfigurowano klaster systemu Windows o następujących właściwościach:

  • Trzy typy węzłów.
  • Pięć węzłów w podstawowym typie węzła (konfigurowalnych w parametrach szablonu) i jeden węzeł w każdym z pozostałych dwóch typów węzłów.
  • System operacyjny: Windows Server 2016 Datacenter z kontenerami (konfigurowalny w parametrach szablonu).
  • Zabezpieczony certyfikat (konfigurowalny w parametrach szablonu).
  • Zwrotny serwer proxy jest włączony.
  • Usługa DNS jest włączona.
  • Poziom trwałości brązu (konfigurowalny w parametrach szablonu).
  • Poziom niezawodności silver (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).

Azure Load Balancer

W zasobie Microsoft.Network/loadBalancers skonfigurowano moduł równoważenia obciążenia. Sondy i reguły są konfigurowane 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
  • Odwrotny serwer proxy usługi Service Fabric: 19081

Jeśli potrzebne są inne porty aplikacji, musisz dostosować zasób Microsoft.Network/loadBalancers i zasób Microsoft.Network/networkSecurityGroups , aby zezwolić na ruch.

Sieć wirtualna, podsieć i sieciowa grupa zabezpieczeń

Nazwy sieci wirtualnej, podsieci i sieciowej grupy zabezpieczeń 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: 172.16.0.0/20
  • Przestrzeń adresowa podsieci usługi Service Fabric: 172.16.2.0/23

Poniższe reguły ruchu przychodzącego są włączone w zasobie Microsoft.Network/networkSecurityGroups. Wartości portów można zmienić, modyfikując zmienne szablonu.

  • ClientConnectionEndpoint (TCP): 19000
  • HttpGatewayEndpoint (HTTP/TCP): 19080
  • SMB: 445
  • Komunikacja międzywęźna: 1025, 1026, 1027
  • Zakres portów efemerycznych: od 49152 do 65534 (wymaga co najmniej 256 portów).
  • Porty do użytku aplikacji: 80 i 443
  • Zakres portów aplikacji: od 49152 do 65534 (używany do obsługi komunikacji między usługami). Inne porty nie są otwierane w module równoważenia obciążenia).
  • Wszystkie pozostałe porty są zablokowane

Jeśli potrzebne są inne porty aplikacji, musisz dostosować zasób Microsoft.Network/loadBalancers i zasób Microsoft.Network/networkSecurityGroups , aby zezwolić na ruch.

Windows Defender

Domyślnie program antywirusowy Windows Defender jest instalowany i funkcjonalny w systemie Windows Server 2016. Interfejs użytkownika jest instalowany domyślnie w niektórych jednostkach SKU, ale nie jest wymagany. Dla każdego typu węzła/zestawu skalowania maszyn wirtualnych zadeklarowanego w szablonie rozszerzenie Azure VM Antimalware służy do wykluczania katalogów i procesów usługi Service Fabric:

{
"name": "[concat('VMIaaSAntimalware','_vmNodeType0Name')]",
"properties": {
        "publisher": "Microsoft.Azure.Security",
        "type": "IaaSAntimalware",
        "typeHandlerVersion": "1.5",
        "settings": {
        "AntimalwareEnabled": "true",
        "Exclusions": {
                "Paths": "D:\\SvcFab;D:\\SvcFab\\Log;C:\\Program Files\\Microsoft Service Fabric",
                "Processes": "Fabric.exe;FabricHost.exe;FabricInstallerService.exe;FabricSetup.exe;FabricDeployer.exe;ImageBuilder.exe;FabricGateway.exe;FabricDCA.exe;FabricFAS.exe;FabricUOS.exe;FabricRM.exe;FileStoreService.exe"
        },
        "RealtimeProtectionEnabled": "true",
        "ScheduledScanSettings": {
                "isEnabled": "true",
                "scanType": "Quick",
                "day": "7",
                "time": "120"
        }
        },
        "protectedSettings": null
}
}

Ustawianie parametrów szablonu

Plik parametrów azuredeploy.parameters.json deklaruje wiele wartości służących do wdrażania klastra i skojarzonych zasobów. Poniżej przedstawiono parametry do zmodyfikowania wdrożenia:

Parametr Przykładowa wartość Uwagi
adminUserName vmadmin Nazwa użytkownika będącego administratorem maszyn wirtualnych klastra. Wymagania dotyczące nazwy użytkownika maszyny wirtualnej.
adminPassword Haslo#1234 Hasło administratora maszyn wirtualnych klastra. Wymagania dotyczące hasła dla maszyny wirtualnej.
clusterName mojklastersf123 Nazwa klastra. Może zawierać tylko litery i cyfry. Długość powinna wynosić od 3 do 23 znaków.
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”.

Konfigurowanie uwierzytelniania klienta firmy Microsoft Entra

W przypadku klastrów usługi Service Fabric wdrożonych w sieci publicznej hostowanej na platformie Azure zalecenia dla wzajemnego uwierzytelniania klienta i węzła są następujące:

  • Użyj identyfikatora Entra firmy Microsoft dla tożsamości klienta.
  • Użyj certyfikatu do obsługi tożsamości serwera i szyfrowania TLS komunikacji HTTP.

Przed utworzeniem klastra należy skonfigurować identyfikator entra firmy Microsoft w celu uwierzytelniania klientów klastra usługi Service Fabric. Microsoft Entra ID umożliwia organizacjom (znanym jako dzierżawy) zarządzanie dostępem użytkowników do aplikacji.

Klaster usługi Service Fabric udostępnia kilka punktów wejścia dla swoich funkcji zarządzania, w tym internetowe narzędzie Service Fabric Explorer i program Visual Studio. W rezultacie utworzysz dwie aplikacje firmy Microsoft Entra, aby kontrolować dostęp do klastra: jedną aplikację internetową i jedną aplikację natywną. Po utworzeniu aplikacji przypiszesz użytkowników do ról tylko do odczytu i administratora.

Uwaga

Przed utworzeniem klastra musisz wykonać następujące kroki. Ponieważ skrypty oczekują określenia nazw klastra i punktów końcowych, wartości powinny być zaplanowane i inne od wartości już utworzonych.

W tym artykule przyjęto założenie, że dzierżawa została już utworzona. Jeśli nie, zacznij od zapoznania się z artykułem Jak uzyskać dzierżawę firmy Microsoft Entra.

Aby uprościć kroki związane z konfigurowaniem identyfikatora Entra firmy Microsoft przy użyciu klastra usługi Service Fabric, utworzyliśmy zestaw skryptów programu Windows PowerShell. Pobierz skrypty na komputer.

Tworzenie aplikacji firmy Microsoft Entra i przypisywanie użytkowników do ról

Utwórz dwie aplikacje firmy Microsoft Entra, aby kontrolować dostęp do klastra: jedną aplikację internetową i jedną aplikację natywną. Po utworzeniu aplikacji reprezentujących klaster przypisz użytkowników do ról obsługiwanych przez usługę Service Fabric: tylko do odczytu i administratora.

Uruchom skrypt SetupApplications.ps1 i podaj jako parametry identyfikator dzierżawy, nazwę klastra i adres URL odpowiedzi aplikacji internetowej. Określ nazwy użytkowników i hasła. Na przykład:

$Configobj = .\SetupApplications.ps1 -TenantId '<MyTenantID>' -ClusterName 'mysfcluster123' -WebApplicationReplyUrl 'https://mysfcluster123.eastus.cloudapp.azure.com:19080/Explorer/index.html' -AddResourceAccess
.\SetupUser.ps1 -ConfigObj $Configobj -UserName 'TestUser' -Password 'P@ssword!123'
.\SetupUser.ps1 -ConfigObj $Configobj -UserName 'TestAdmin' -Password 'P@ssword!123' -IsAdmin

Uwaga

W przypadku chmur krajowych (na przykład Azure Government platforma Microsoft Azure obsługiwana przez firmę 21Vianet, Azure (Niemcy) określ -Location parametr .

Wartość TenantId, czyli identyfikator katalogu, możesz znaleźć w witrynie Azure Portal. Wybierz pozycję Microsoft Entra ID Properties (Właściwości identyfikatora>entra firmy Microsoft) i skopiuj wartość Identyfikator katalogu.

Nazwa_klastra służy do prefiksu aplikacji Microsoft Entra tworzonych przez skrypt. Nie musi dokładnie odpowiadać rzeczywistej nazwie klastra. Ułatwia mapowanie artefaktów firmy Microsoft tylko na używany klaster usługi Service Fabric.

WebApplicationReplyUrl to domyślny punkt końcowy, który identyfikator Entra firmy Microsoft powraca do użytkowników po zakończeniu logowania. Ustaw ten punkt końcowy jako punkt końcowy narzędzia Service Fabric Explorer dla klastra. Domyślnie to:

https://<domena_klastra>:19080/Explorer

Zostanie wyświetlony monit o zalogowanie się do konta z uprawnieniami administracyjnymi dla dzierżawy firmy Microsoft Entra. Po zalogowaniu skrypt utworzy aplikacje internetową i natywną mające reprezentować klaster usługi Service Fabric. W aplikacjach dzierżawy w witrynie Azure Portal powinny zostać wyświetlone dwa nowe wpisy:

  • Nazwa_klastra_Cluster
  • Nazwa_klastra_Client

Skrypt wyświetla kod JSON wymagany przez szablon usługi Resource Manager podczas tworzenia klastra, dlatego dobrym pomysłem jest pozostawienie otwartego okna programu PowerShell.

"azureActiveDirectory": {
  "tenantId":"<guid>",
  "clusterApplication":"<guid>",
  "clientApplication":"<guid>"
},

Dodawanie konfiguracji firmy Microsoft Entra w celu używania identyfikatora Entra firmy Microsoft na potrzeby dostępu klienta

W pliku azuredeploy.json skonfiguruj identyfikator Entra firmy Microsoft w sekcji Microsoft.ServiceFabric/clusters . Dodaj parametry identyfikatora dzierżawy, identyfikatora aplikacji klastra i identyfikatora aplikacji klienckiej.

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json",
  "contentVersion": "1.0.0.0",
  "parameters": {
    ...

    "aadTenantId": {
      "type": "string",
      "defaultValue": "0e3d2646-78b3-4711-b8be-74a381d9890c"
    },
    "aadClusterApplicationId": {
      "type": "string",
      "defaultValue": "cb147d34-b0b9-4e77-81d6-420fef0c4180"
    },
    "aadClientApplicationId": {
      "type": "string",
      "defaultValue": "7a8f3b37-cc40-45cc-9b8f-57b8919ea461"
    }
  },

...

{
  "apiVersion": "2018-02-01",
  "type": "Microsoft.ServiceFabric/clusters",
  "name": "[parameters('clusterName')]",
  ...
  "properties": {
    ...
    "azureActiveDirectory": {
      "tenantId": "[parameters('aadTenantId')]",
      "clusterApplication": "[parameters('aadClusterApplicationId')]",
      "clientApplication": "[parameters('aadClientApplicationId')]"
    },
    ...
  }
}

Dodaj wartości parametrów do pliku parametrów azuredeploy.parameters.json. Przykład:

"aadTenantId": {
"value": "0e3d2646-78b3-4711-b8be-74a381d9890c"
},
"aadClusterApplicationId": {
"value": "cb147d34-b0b9-4e77-81d6-420fef0c4180"
},
"aadClientApplicationId": {
"value": "7a8f3b37-cc40-45cc-9b8f-57b8919ea461"
}

Konfigurowanie zbierania danych diagnostycznych w klastrze

Podczas uruchamiania klastra usługi Service Fabric warto zebrać dzienniki ze wszystkich węzłów w centralnej lokalizacji. Posiadanie dzienników w centralnej lokalizacji ułatwia analizowanie i rozwiązywanie problemów w klastrze lub problemów z aplikacjami i usługami uruchomionymi w tym klastrze.

Jednym ze sposobów przekazywania i zbierania dzienników jest użycie rozszerzenia Diagnostyka Azure (WAD), które przekazuje dzienniki do usługi Azure Storage, a także ma możliwość wysyłania dzienników do usługi aplikacja systemu Azure Szczegółowe informacje lub Event Hubs. Możesz również użyć procesu zewnętrznego, aby odczytać zdarzenia z magazynu i umieścić je w produkcie platformy analizy, takim jak dzienniki usługi Azure Monitor lub inne rozwiązanie do analizowania dzienników.

Jeśli korzystasz z tego samouczka, kolekcja diagnostyki jest już skonfigurowana w szablonie.

Jeśli masz istniejący klaster, który nie ma wdrożonej diagnostyki, możesz dodać go lub zaktualizować za pomocą szablonu klastra. Zmodyfikuj szablon usługi Resource Manager użyty do utworzenia istniejącego klastra lub pobierz szablon z portalu. Zmodyfikuj plik template.json, wykonując następujące zadania:

Dodaj nowy zasób magazynu do sekcji zasobów w szablonie:

"resources": [
...
{
  "apiVersion": "2015-05-01-preview",
  "type": "Microsoft.Storage/storageAccounts",
  "name": "[parameters('applicationDiagnosticsStorageAccountName')]",
  "location": "[parameters('computeLocation')]",
  "sku": {
    "accountType": "[parameters('applicationDiagnosticsStorageAccountType')]"
  },
  "tags": {
    "resourceType": "Service Fabric",
    "clusterName": "[parameters('clusterName')]"
  }
},
...
]

Następnie dodaj parametry dla nazwy konta magazynu i wpisz do sekcji parameters szablonu. Zastąp symbol zastępczy nazwą tekstowego konta magazynu, które ma być nazwa konta magazynu, które chcesz.

"parameters": {
...
"applicationDiagnosticsStorageAccountType": {
    "type": "string",
    "allowedValues": [
    "Standard_LRS",
    "Standard_GRS"
    ],
    "defaultValue": "Standard_LRS",
    "metadata": {
    "description": "Replication option for the application diagnostics storage account"
    }
},
"applicationDiagnosticsStorageAccountName": {
    "type": "string",
    "defaultValue": "**STORAGE ACCOUNT NAME GOES HERE**",
    "metadata": {
    "description": "Name for the storage account that contains application diagnostics data from the cluster"
    }
},
...
}

Następnie dodaj rozszerzenie IaaSDiagnostics do tablicy rozszerzeń właściwości VirtualMachineProfile każdego zasobu Microsoft.Compute/virtualMachineScaleSets w klastrze. Jeśli używasz przykładowego szablonu, istnieją trzy zestawy skalowania maszyn wirtualnych (jeden dla każdego typu węzła w klastrze).

"apiVersion": "2018-10-01",
"type": "Microsoft.Compute/virtualMachineScaleSets",
"name": "[variables('vmNodeType1Name')]",
"properties": {
    ...
    "virtualMachineProfile": {
        "extensionProfile": {
            "extensions": [
                {
                    "name": "[concat(parameters('vmNodeType0Name'),'_Microsoft.Insights.VMDiagnosticsSettings')]",
                    "properties": {
                        "type": "IaaSDiagnostics",
                        "autoUpgradeMinorVersion": true,
                        "protectedSettings": {
                        "storageAccountName": "[parameters('applicationDiagnosticsStorageAccountName')]",
                        "storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('applicationDiagnosticsStorageAccountName')),'2015-05-01-preview').key1]",
                        "storageAccountEndPoint": "https://core.windows.net/"
                        },
                        "publisher": "Microsoft.Azure.Diagnostics",
                        "settings": {
                        "WadCfg": {
                            "DiagnosticMonitorConfiguration": {
                            "overallQuotaInMB": "50000",
                            "EtwProviders": {
                                "EtwEventSourceProviderConfiguration": [
                                {
                                    "provider": "Microsoft-ServiceFabric-Actors",
                                    "scheduledTransferKeywordFilter": "1",
                                    "scheduledTransferPeriod": "PT5M",
                                    "DefaultEvents": {
                                    "eventDestination": "ServiceFabricReliableActorEventTable"
                                    }
                                },
                                {
                                    "provider": "Microsoft-ServiceFabric-Services",
                                    "scheduledTransferPeriod": "PT5M",
                                    "DefaultEvents": {
                                    "eventDestination": "ServiceFabricReliableServiceEventTable"
                                    }
                                }
                                ],
                                "EtwManifestProviderConfiguration": [
                                {
                                    "provider": "cbd93bc2-71e5-4566-b3a7-595d8eeca6e8",
                                    "scheduledTransferLogLevelFilter": "Information",
                                    "scheduledTransferKeywordFilter": "4611686018427387904",
                                    "scheduledTransferPeriod": "PT5M",
                                    "DefaultEvents": {
                                    "eventDestination": "ServiceFabricSystemEventTable"
                                    }
                                }
                                ]
                            }
                            }
                        },
                        "StorageAccount": "[parameters('applicationDiagnosticsStorageAccountName')]"
                        },
                        "typeHandlerVersion": "1.5"
                    }
                }
            ...
            ]
        }
    }
}

Konfigurowanie usługi EventStore

Usługa EventStore jest opcją monitorowania w usłudze Service Fabric. Magazyn zdarzeń umożliwia zrozumienie stanu klastra lub obciążeń w danym momencie. Magazyn zdarzeń to stanowa usługa Service Fabric, która obsługuje zdarzenia z klastra. Zdarzenie jest udostępniane za pośrednictwem narzędzia Service Fabric Explorer, interfejsów API i REST. Magazyn zdarzeń wysyła zapytanie do klastra bezpośrednio, aby uzyskać dane diagnostyczne dla dowolnej jednostki w klastrze i powinny być używane do pomocy:

  • Diagnozowanie problemów z programowaniem lub testowaniem lub używanie potoku monitorowania
  • Upewnij się, że akcje zarządzania wykonywane w klastrze są przetwarzane prawidłowo
  • Pobieranie "migawki" sposobu interakcji usługi Service Fabric z określoną jednostką

Aby włączyć usługę EventStore w klastrze, dodaj następujące elementy do sieci szkieletowej Ustawienia właściwość Microsoft.ServiceFabric/clusters:

"apiVersion": "2018-02-01",
"type": "Microsoft.ServiceFabric/clusters",
"name": "[parameters('clusterName')]",
"properties": {
    ...
    "fabricSettings": [
        ...
        {
            "name": "EventStoreService",
            "parameters": [
                {
                "name": "TargetReplicaSetSize",
                "value": "3"
                },
                {
                "name": "MinReplicaSetSize",
                "value": "1"
                }
            ]
        }
    ]
}

Konfigurowanie dzienników usługi Azure Monitor dla klastra

Dzienniki usługi Azure Monitor to nasze zalecenie dotyczące monitorowania zdarzeń na poziomie klastra. Aby skonfigurować dzienniki usługi Azure Monitor w celu monitorowania klastra, należy włączyć diagnostykę w celu wyświetlenia zdarzeń na poziomie klastra.

Obszar roboczy musi być połączony z danymi diagnostycznymi pochodzącymi z klastra. Te dane dziennika są przechowywane na koncie magazynu applicationDiagnosticsStorageAccountName w tabelach WADServiceFabric*EventTable, WADWindowsEventLogsTable i WADETWEventTable.

Dodaj obszar roboczy usługi Azure Log Analytics i dodaj rozwiązanie do obszaru roboczego:

"resources": [
    ...
    {
        "apiVersion": "2015-11-01-preview",
        "location": "[parameters('omsRegion')]",
        "name": "[parameters('omsWorkspacename')]",
        "type": "Microsoft.OperationalInsights/workspaces",
        "properties": {
            "sku": {
                "name": "Free"
            }
        },
        "resources": [
            {
                "apiVersion": "2015-11-01-preview",
                "name": "[concat(variables('applicationDiagnosticsStorageAccountName'),parameters('omsWorkspacename'))]",
                "type": "storageinsightconfigs",
                "dependsOn": [
                    "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename'))]",
                    "[concat('Microsoft.Storage/storageAccounts/', variables('applicationDiagnosticsStorageAccountName'))]"
                ],
                "properties": {
                    "containers": [],
                    "tables": [
                        "WADServiceFabric*EventTable",
                        "WADWindowsEventLogsTable",
                        "WADETWEventTable"
                    ],
                    "storageAccount": {
                        "id": "[resourceId('Microsoft.Storage/storageaccounts/', variables('applicationDiagnosticsStorageAccountName'))]",
                        "key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('applicationDiagnosticsStorageAccountName')),'2015-06-15').key1]"
                    }
                }
            },
            {
                "apiVersion": "2015-11-01-preview",
                "type": "datasources",
                "name": "sampleWindowsPerfCounter",
                "dependsOn": [
                    "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename'))]"
                ],
                "kind": "WindowsPerformanceCounter",
                "properties": {
                    "objectName": "Memory",
                    "instanceName": "*",
                    "intervalSeconds": 10,
                    "counterName": "Available MBytes"
                }
            },
            {
                "apiVersion": "2015-11-01-preview",
                "type": "datasources",
                "name": "sampleWindowsPerfCounter2",
                "dependsOn": [
                    "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename'))]"
                ],
                "kind": "WindowsPerformanceCounter",
                "properties": {
                    "objectName": "Service Fabric Service",
                    "instanceName": "*",
                    "intervalSeconds": 10,
                    "counterName": "Average milliseconds per request"
                }
            }
        ]
    },
    {
        "apiVersion": "2015-11-01-preview",
        "location": "[parameters('omsRegion')]",
        "name": "[variables('solution')]",
        "type": "Microsoft.OperationsManagement/solutions",
        "dependsOn": [
            "[concat('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename'))]"
        ],
        "properties": {
            "workspaceResourceId": "[resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename'))]"
        },
        "plan": {
            "name": "[variables('solution')]",
            "publisher": "Microsoft",
            "product": "[Concat('OMSGallery/', variables('solutionName'))]",
            "promotionCode": ""
        }
    }
]

Następnie dodaj parametry

"parameters": {
    ...
    "omsWorkspacename": {
        "type": "string",
        "defaultValue": "mysfomsworkspace",
        "metadata": {
            "description": "Name of your OMS Log Analytics Workspace"
        }
    },
    "omsRegion": {
        "type": "string",
        "defaultValue": "West Europe",
        "allowedValues": [
            "West Europe",
            "East US",
            "Southeast Asia"
        ],
        "metadata": {
            "description": "Specify the Azure Region for your OMS workspace"
        }
    }
}

Następnie dodaj zmienne:

"variables": {
    ...
    "solution": "[Concat('ServiceFabric', '(', parameters('omsWorkspacename'), ')')]",
    "solutionName": "ServiceFabric"
}

Dodaj rozszerzenie agenta usługi Log Analytics do każdego zestawu skalowania maszyn wirtualnych w klastrze i połącz agenta z obszarem roboczym usługi Log Analytics. Umożliwia to zbieranie danych diagnostycznych dotyczących kontenerów, aplikacji i monitorowania wydajności. Dodając je jako rozszerzenie do zasobu zestawu skalowania maszyn wirtualnych, usługa Azure Resource Manager zapewnia, że jest instalowana na każdym węźle, nawet podczas skalowania klastra.

"apiVersion": "2018-10-01",
"type": "Microsoft.Compute/virtualMachineScaleSets",
"name": "[variables('vmNodeType1Name')]",
"properties": {
    ...
    "virtualMachineProfile": {
        "extensionProfile": {
            "extensions": [
                {
                    "name": "[concat(variables('vmNodeType0Name'),'OMS')]",
                    "properties": {
                        "publisher": "Microsoft.EnterpriseCloud.Monitoring",
                        "type": "MicrosoftMonitoringAgent",
                        "typeHandlerVersion": "1.0",
                        "autoUpgradeMinorVersion": true,
                        "settings": {
                            "workspaceId": "[reference(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename')), '2015-11-01-preview').customerId]"
                        },
                        "protectedSettings": {
                            "workspaceKey": "[listKeys(resourceId('Microsoft.OperationalInsights/workspaces/', parameters('omsWorkspacename')),'2015-11-01-preview').primarySharedKey]"
                        }
                    }
                }
            ...
            ]
        }
    }
}

Wdrażanie sieci wirtualnej i klastra

Następnym etapem jest skonfigurowanie topologii sieci i wdrożenie klastra usługi Service Fabric. Szablon azuredeploy.json usługi Resource Manager tworzy sieć wirtualną, podsieć i sieciową grupę zabezpieczeń dla usługi Service Fabric. Szablon pozwala również wdrożyć klaster z włączonymi zabezpieczeniami opartymi na certyfikacie. W przypadku klastrów produkcyjnych użyj certyfikatu z urzędu certyfikacji jako certyfikatu klastra. 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łączanie wdrożonego klastra z odcisków palca certyfikatu na nazwy pospolite certyfikatów upraszcza zarządzanie certyfikatami. Aby dowiedzieć się, jak zaktualizować klaster do używania nazw pospolitych certyfikatów do zarządzania certyfikatami, przeczytaj Zmienianie klastra na zarządzanie nazwami wspólnymi certyfikatów.

Tworzenie klastra przy użyciu istniejącego certyfikatu

Poniższy skrypt używa polecenia cmdlet New-AzServiceFabricCluster i szablonu do wdrożenia nowego klastra na platformie Azure. Polecenie cmdlet tworzy nowy magazyn kluczy na platformie Azure i przekazuje certyfikat.

# Variables.
$groupname = "sfclustertutorialgroup"
$clusterloc="southcentralus"  # Must match the location parameter in the template
$templatepath="C:\temp\cluster"

$certpwd="q6D7nN%6ck@6" | ConvertTo-SecureString -AsPlainText -Force
$clustername = "mysfcluster123"  # Must match the clustername parameter in the template
$vaultname = "clusterkeyvault123"
$vaultgroupname="clusterkeyvaultgroup123"
$subname="$clustername.$clusterloc.cloudapp.azure.com"

# Sign in to your Azure account and select your subscription
Connect-AzAccount
Get-AzSubscription
Set-AzContext -SubscriptionId <guid>

# Create a new resource group for your deployment, and give it a name and a location.
New-AzResourceGroup -Name $groupname -Location $clusterloc

# Create the Service Fabric cluster.
New-AzServiceFabricCluster  -ResourceGroupName $groupname -TemplateFile "$templatepath\azuredeploy.json" `
-ParameterFile "$templatepath\azuredeploy.parameters.json" -CertificatePassword $certpwd `
-KeyVaultName $vaultname -KeyVaultResourceGroupName $vaultgroupname -CertificateFile $certpath

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

Poniższy skrypt używa polecenia cmdlet New-AzServiceFabricCluster i szablonu do wdrożenia nowego klastra na platformie Azure. Polecenie cmdlet tworzy nowy magazyn kluczy na platformie Azure, dodaje nowy certyfikat z podpisem własnym do magazynu kluczy i pobiera plik certyfikatu lokalnie.

# Variables.
$groupname = "sfclustertutorialgroup"
$clusterloc="southcentralus"  # Must match the location parameter in the template
$templatepath="C:\temp\cluster"

$certpwd="q6D7nN%6ck@6" | ConvertTo-SecureString -AsPlainText -Force
$certfolder="c:\mycertificates\"
$clustername = "mysfcluster123"
$vaultname = "clusterkeyvault123"
$vaultgroupname="clusterkeyvaultgroup123"
$subname="$clustername.$clusterloc.cloudapp.azure.com"

# Sign in to your Azure account and select your subscription
Connect-AzAccount
Get-AzSubscription
Set-AzContext -SubscriptionId <guid>

# Create a new resource group for your deployment, and give it a name and a location.
New-AzResourceGroup -Name $groupname -Location $clusterloc

# Create the Service Fabric cluster.
New-AzServiceFabricCluster  -ResourceGroupName $groupname -TemplateFile "$templatepath\azuredeploy.json" `
-ParameterFile "$templatepath\azuredeploy.parameters.json" -CertificatePassword $certpwd `
-CertificateOutputFolder $certfolder -KeyVaultName $vaultname -KeyVaultResourceGroupName $vaultgroupname -CertificateSubjectName $subname

Nawiązywanie połączenia z zabezpieczonym klastrem

Połączenie do klastra przy użyciu modułu programu PowerShell usługi Service Fabric zainstalowanego z zestawem SDK usługi Service Fabric. Najpierw zainstaluj certyfikat w magazynie osobistym (Mój) bieżącego użytkownika na komputerze. Uruchom następujące polecenie programu PowerShell:

$certpwd="q6D7nN%6ck@6" | ConvertTo-SecureString -AsPlainText -Force
Import-PfxCertificate -Exportable -CertStoreLocation Cert:\CurrentUser\My `
        -FilePath C:\mycertificates\mysfcluster20170531104310.pfx `
        -Password $certpwd

Teraz możesz nawiązać połączenie z bezpiecznym klastrem.

Moduł programu PowerShell dla usługi Service Fabric udostępnia wiele poleceń cmdlet służących do zarządzania usługami, aplikacjami i klastrami usługi Service Fabric. Za pomocą polecenia cmdlet Connect-ServiceFabricCluster nawiąż połączenie z zabezpieczonym klastrem. Szczegóły dotyczące punktu końcowego połączenia i odcisku palca SHA1 certyfikatu można znaleźć w danych wyjściowych poprzedniego kroku.

Jeśli wcześniej skonfigurowaliśmy uwierzytelnianie klienta Firmy Microsoft Entra, uruchom następujące polecenie:

Connect-ServiceFabricCluster -ConnectionEndpoint mysfcluster123.southcentralus.cloudapp.azure.com:19000 `
        -KeepAliveIntervalInSec 10 `
        -AzureActiveDirectory `
        -ServerCertThumbprint C4C1E541AD512B8065280292A8BA6079C3F26F10

Jeśli nie skonfigurowaliśmy uwierzytelniania klienta firmy Microsoft Entra, uruchom następujące polecenie:

Connect-ServiceFabricCluster -ConnectionEndpoint mysfcluster123.southcentralus.cloudapp.azure.com:19000 `
          -KeepAliveIntervalInSec 10 `
          -X509Credential -ServerCertThumbprint C4C1E541AD512B8065280292A8BA6079C3F26F10 `
          -FindType FindByThumbprint -FindValue C4C1E541AD512B8065280292A8BA6079C3F26F10 `
          -StoreLocation CurrentUser -StoreName My

Sprawdź, czy masz połączenie i czy klaster jest w dobrej kondycji, używając polecenia cmdlet Get-ServiceFabricClusterHealth .

Get-ServiceFabricClusterHealth

Czyszczenie zasobów

Inne artykuły z tej serii samouczków używają utworzonego klastra. Jeśli nie przechodzisz od razu do następnego artykułu, rozważ usunięcie klastra, aby uniknąć naliczania opłat.

Następne kroki

Przejdź do poniższego samouczka, aby dowiedzieć się, jak skalować klaster.

  • Tworzenie sieci wirtualnej na platformie Azure przy użyciu programu PowerShell
  • Tworzenie magazynu kluczy i przekazywanie certyfikatu
  • Konfigurowanie uwierzytelniania w usłudze Microsoft Entra
  • Konfigurowanie kolekcji diagnostyki
  • Konfigurowanie usługi EventStore
  • Konfigurowanie dzienników usługi Azure Monitor
  • Tworzenie bezpiecznego klastra usługi Service Fabric w programie Azure PowerShell
  • Zabezpieczanie klastra za pomocą certyfikatu X.509
  • Nawiązywanie połączenia z klastrem przy użyciu programu PowerShell
  • Usuwanie klastra

Następnie przejdź do następującego samouczka, aby dowiedzieć się, jak monitorować klaster.