Zelfstudie: Een Windows Service Fabric-cluster implementeren in een virtueel Azure-netwerk

Deze zelfstudie is deel één van een serie. U leert hoe u een Azure Service Fabric-cluster met Windows in een virtueel Azure-netwerk en een netwerkbeveiligingsgroep implementeert met behulp van PowerShell en een sjabloon. Wanneer u klaar bent, wordt er in de cloud een cluster uitgevoerd waarin u toepassingen kunt implementeren. Zie Een beveiligd Linux-cluster maken in Azure als u een Linux-cluster wilt maken met behulp van Azure CLI.

In deze zelfstudie wordt een productiescenario beschreven. Zie Een testcluster maken als u voor testdoeleinden een kleiner cluster wilt maken.

In deze zelfstudie leert u het volgende:

  • Een VNET maken in Azure met behulp van PowerShell
  • Een sleutelkluis maken en een certificaat uploaden
  • Microsoft Entra-verificatie instellen
  • Verzameling met diagnostische gegevens configureren
  • EventStore-service instellen
  • Azure Monitor-logboeken instellen
  • Een beveiligd Service Fabric-cluster maken in Azure PowerShell
  • Het cluster beveiligen met een X.509-certificaat
  • Verbinding maken met het cluster met behulp van PowerShell
  • Een cluster verwijderen

In deze zelfstudiereeks leert u het volgende:

Notitie

Het wordt aanbevolen de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.

Vereisten

Voor u met deze zelfstudie begint:

Met de volgende procedures wordt er een Service Fabric-cluster met zeven knooppunten gemaakt. Gebruik de Azure-prijscalculator om de kosten te berekenen voor het uitvoeren van een Service Fabric-cluster in Azure.

De sjabloon downloaden en verkennen

Download de volgende Azure Resource Manager-sjabloonbestanden:

Met deze sjabloon wordt een veilig cluster van zeven virtuele machines en drie knooppunttypen in een virtueel netwerk en een netwerkbeveiligingsgroep geïmplementeerd. Andere voorbeeldsjablonen zijn te vinden op GitHub. Met azuredeploy.json wordt een aantal resources geïmplementeerd, waaronder de volgende.

Service Fabric-cluster

In de resource Microsoft.ServiceFabric/clusters wordt een Windows-cluster geconfigureerd met de volgende kenmerken:

  • Drie knooppunttypen.
  • Vijf knooppunten van het primaire knooppunttype (te configureren in de sjabloonparameters) en een knooppunt van elk van de andere twee knooppunttypen.
  • Besturingssysteem: Windows Server 2016 Datacenter met containers (configureerbaar in de sjabloonparameters).
  • Beveiligd met een certificaat (configureerbaar in de sjabloonparameters).
  • Omgekeerde proxy is ingeschakeld.
  • DNS-service is ingeschakeld.
  • Een bronzen duurzaamheidsniveau (configureerbaar in de sjabloonparameters).
  • Een zilveren betrouwbaarheidsniveau (configureerbaar in de sjabloonparameters).
  • Eindpunt voor clientverbinding: 19000 (configureerbaar in de sjabloonparameters).
  • HTTP-gatewayeindpunt: 19080 (configureerbaar in de sjabloonparameters).

Azure-belastingsverdeling

In de resource Microsoft.Network/loadBalancers wordt een load balancer geconfigureerd. Er worden tests en regels ingesteld voor de volgende poorten:

  • Eindpunt van clientverbinding: 19000
  • het eindpunt van de HTTP-gateway: 19080
  • Toepassingspoort: 80
  • Toepassingspoort: 443
  • omgekeerde proxy van Service Fabric: 19081

Als er andere toepassingspoorten nodig zijn, moet u de resource Microsoft.Network/loadBalancers en de resource Microsoft.Network/networkSecurityGroups zo wijzigen dat verkeer kan binnenkomen.

Virtueel netwerk, subnet en netwerkbeveiligingsgroep

De namen van het virtuele netwerk, het subnet en de netwerkbeveiligingsgroep zijn gedefinieerd in de sjabloonparameters. Adresruimten van het virtuele netwerk en subnet worden ook gedeclareerd in de sjabloonparameters en geconfigureerd in de resource Microsoft.Network/virtualNetworks:

  • Adresruimte van virtueel netwerk: 172.16.0.0/20
  • Service Fabric-subnetadresruimte: 172.16.2.0/23

De volgende regels voor binnenkomend verkeer worden ingeschakeld in de resource Microsoft.Network/networkSecurityGroups. U kunt de poortwaarden wijzigen door de sjabloonvariabelen te wijzigen.

  • ClientConnectionEndpoint (TCP): 19000
  • HttpGatewayEndpoint (HTTP/TCP): 19080
  • SMB: 445
  • Internodecommunicatie: 1025, 1026, 1027
  • Tijdelijke poortbereik: 49152 tot 65534 (minimaal 256 poorten nodig).
  • Poorten voor toepassingsgebruik: 80 en 443
  • Bereik van toepassingspoort: 49152 tot 65534 (gebruikt voor service-naar-servicecommunicatie. Andere poorten worden niet geopend op de load balancer).
  • Blokkeer alle andere poorten

Als er andere toepassingspoorten nodig zijn, moet u de resource Microsoft.Network/loadBalancers en de resource Microsoft.Network/networkSecurityGroups zo wijzigen dat verkeer kan binnenkomen.

Windows Defender

Het Windows Defender-antivirusprogramma is standaard geïnstalleerd en functioneert op Windows Server 2016. De gebruikersinterface is standaard geïnstalleerd op een aantal SKU's, maar is niet vereist. Voor elk knooppunttype dat/elke VM-schaalset die is aangegeven in de sjabloon, wordt de Antimalware voor Azure-VM-extensie gebruikt voor het uitsluiten van de Service Fabric-mappen en processen:

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

De sjabloonparameters instellen

Het parameterbestand azuredeploy.parameters.json declareert veel waarden die worden gebruikt om het cluster en de bijbehorende resources te implementeren. De volgende parameters kunt u voor uw implementatie wijzigen:

Parameter Voorbeeldwaarde Opmerkingen
adminUserName vmadmin De gebruikersnaam van de beheerder van de cluster-VM's. Vereisten voor gebruikersnaam voor VM.
adminPassword Password#1234 Het wachtwoord van de beheerder van de cluster-VM's. Vereisten voor wachtwoord voor VM.
clusterName mysfcluster123 De naam van het cluster. Mag alleen letters en cijfers bevatten. De lengte kan minimaal 3 en maximaal 23 tekens zijn.
locatie US - zuid-centraal De locatie van het cluster.
certificateThumbprint

De waarde moet leeg zijn als u een zelfondertekend certificaat maakt of als u een certificaatbestand opgeeft.

Als u een bestaand certificaat wilt gebruiken dat u eerder hebt geüpload naar een sleutelkluis, vult u de SHA1-waarde van de certificaatvingerafdruk in. Bijvoorbeeld 6190390162C988701DB5676EB81083EA608DCCF3.

certificateUrlValue

De waarde moet leeg zijn als u een zelfondertekend certificaat maakt of als u een certificaatbestand opgeeft.

Als u een bestaand certificaat wilt gebruiken dat u eerder hebt geüpload naar een sleutelkluis, vult u de URL van het certificaat in. Bijvoorbeeld "https://mykeyvault.vault.azure.net:443/secrets/mycertificate/02bea722c9ef4009a76c5052bcbf8346".

sourceVaultValue

De waarde moet leeg zijn als u een zelfondertekend certificaat maakt of als u een certificaatbestand opgeeft.

Als u een bestaand certificaat wilt gebruiken dat u eerder hebt geüpload naar een sleutelkluis, vult u de waarde van de bronkluis in. Bijvoorbeeld /subscriptions/333cc2c84-12fa-5778-bd71-c71c07bf873f/resourceGroups/MyTestRG/providers/Microsoft.KeyVault/vaults/MYKEYVAULT.

Microsoft Entra-clientverificatie instellen

Voor Service Fabric-clusters die zijn geïmplementeerd in een openbaar netwerk dat wordt gehost op Azure, is de aanbeveling voor wederzijdse verificatie van client-naar-knooppunt:

  • Gebruik Microsoft Entra-id voor clientidentiteit.
  • Gebruik een certificaat voor de serveridentiteit en TLS-versleuteling van HTTP-communicatie.

Het instellen van Microsoft Entra-id voor het verifiëren van clients voor een Service Fabric-cluster moet worden uitgevoerd voordat u het cluster maakt. Met Microsoft Entra ID kunnen organisaties (ook wel tenants genoemd) gebruikerstoegang tot toepassingen beheren.

Een Service Fabric-cluster biedt verschillende toegangspunten bij de management-functionaliteit, met inbegrip van de webconsoles Service Fabric Explorer en Visual Studio. Als gevolg hiervan maakt u twee Microsoft Entra-toepassingen om de toegang tot het cluster te beheren: één webtoepassing en één systeemeigen toepassing. Nadat de toepassingen zijn gemaakt, wijst u gebruikers toe aan de rollen alleen-lezen en beheerder.

Notitie

U moet de volgende stappen uitvoeren voordat u het cluster maakt. Omdat de scripts clusternamen en eindpunten verwachten, moeten de waarden worden gepland en geen waarden zijn die u al hebt gemaakt.

In dit artikel nemen we aan dat u al een tenant hebt gemaakt. Als u dat nog niet hebt gedaan, leest u eerst hoe u een Microsoft Entra-tenant krijgt.

Om de stappen voor het configureren van Microsoft Entra-id met een Service Fabric-cluster te vereenvoudigen, hebben we een set Windows PowerShell-scripts gemaakt. Download de scripts op uw computer.

Microsoft Entra-toepassingen maken en gebruikers toewijzen aan rollen

Maak twee Microsoft Entra-toepassingen om de toegang tot het cluster te beheren: één webtoepassing en één systeemeigen toepassing. Nadat u de toepassingen voor uw cluster hebt gemaakt, wijst u uw gebruikers toe aan de rollen die worden ondersteund door Service Fabric: alleen-lezen en beheerder.

Voer SetupApplications.ps1 uit, en geef de tenant-ID, de naam van het cluster en de antwoord-URL van de webtoepassing op als parameters. Geef gebruikersnamen en wachtwoorden voor de gebruikers op. Bijvoorbeeld:

$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

Notitie

Geef voor nationale clouds (bijvoorbeeld Azure Government, Microsoft Azure beheerd door 21Vianet, Azure Duitsland) de -Location parameter op.

U vindt uw TenantId ofwel de map-id in de Azure-portal. Selecteer Eigenschappen van Microsoft Entra-id> en kopieer de map-id-waarde.

ClusterName wordt gebruikt voor het voorvoegsel van de Microsoft Entra-toepassingen die door het script worden gemaakt. Deze hoeft niet precies overeen te komen met de naam van het daadwerkelijke cluster. Het maakt het alleen eenvoudiger om Microsoft Entra-artefacten toe te wijzen aan het Service Fabric-cluster dat wordt gebruikt.

WebApplicationReplyUrl is het standaardeindpunt dat microsoft Entra-id naar uw gebruikers retourneert nadat ze klaar zijn met aanmelden. Stel dit eindpunt in als het Service Fabric Explorer-eindpunt voor uw cluster, dit is standaard:

https://<cluster_domain>:19080/Explorer

U wordt gevraagd u aan te melden bij een account met beheerdersbevoegdheden voor de Microsoft Entra-tenant. Nadat u zich hebt aangemeld, maakt het script de web- en systeemeigen toepassingen voor uw Service Fabric-cluster. In de toepassingen van de tenant in Azure Portal ziet u twee nieuwe vermeldingen:

  • Clusternaam_Cluster
  • ClusterName_Client

Met het script wordt de JSON afgedrukt die is vereist voor de Azure Resource Manager-sjabloon bij het maken van het cluster. Houd het PowerShell-venster dus geopend.

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

Microsoft Entra-configuratie toevoegen voor het gebruik van Microsoft Entra-id voor clienttoegang

Configureer in azuredeploy.json de Microsoft Entra-id in de sectie Microsoft.ServiceFabric/clusters. Voeg parameters toe voor de tenant-id, de toepassings-id van het cluster en de clienttoepassings-id.

{
  "$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')]"
    },
    ...
  }
}

Voeg de parameterwaarden toe aan parameterbestand azuredeploy.parameters.json. Bijvoorbeeld:

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

Verzameling met diagnostische gegevens op het cluster configureren

Wanneer u een Service Fabric-cluster uitvoert, is het een goed idee om de logboeken van alle knooppunten op een centrale locatie te verzamelen. Met de logboeken op een centrale locatie kunt u problemen in uw cluster analyseren en oplossen, of problemen in de toepassingen en services die in dat cluster worden uitgevoerd.

Een van de methoden om logboeken te uploaden en te verzamelen, is door gebruik te maken van de uitbreiding Azure Diagnostics (WAD). Hiermee worden logboeken naar Azure Storage geüpload en het bevat tevens de mogelijkheid om logboeken te verzenden naar Azure Application Insights of Event Hubs. U kunt ook een extern proces gebruiken om de gebeurtenissen uit de opslag te lezen en ze in een analyseplatformproduct te plaatsen, zoals Azure Monitor-logboeken of een andere oplossing voor het parseren van logboeken.

Als u deze zelfstudie volgt, wordt de verzameling met diagnostische gegevens al geconfigureerd in de sjabloon.

Als u een bestaand cluster hebt waarvoor geen diagnostische gegevens zijn geïmplementeerd, kunt u het toevoegen of bijwerken via de clustersjabloon. Wijzig de Resource Manager-sjabloon die wordt gebruikt voor het maken van het bestaande cluster of download de sjabloon vanuit de portal. Wijzig het bestand template.json door de volgende taken uit te voeren:

Voeg een nieuwe opslagresource toe aan de sectie met resources in de sjabloon:

"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')]"
  }
},
...
]

Voeg vervolgens de parameters voor de naam en het type van het opslagaccount toe aan de sectie met parameters van de sjabloon. Vervang de tekst van de tijdelijke aanduiding 'storage account name goes here' door de gewenste naam voor het opslagaccount.

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

Voeg vervolgens de uitbreiding IaaSDiagnostics toe aan de uitbreidingenmatrix van de eigenschap VirtualMachineProfile van elke Microsoft.Compute/virtualMachineScaleSets-resource in het cluster. Als u de voorbeeldsjabloon gebruikt, zijn er drie virtuele-machineschaalsets (één voor elk type knooppunt in het cluster).

"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"
                    }
                }
            ...
            ]
        }
    }
}

De EventStore-service configureren

De Event Store-service is een bewakingsoptie in Service Fabric. EventStore biedt een manier om op elk moment meer inzicht te krijgen in de status van uw cluster of workloads. EventStore is een stateful Service Fabric-service die gebeurtenissen van het cluster bijhoudt. De gebeurtenissen worden weergegeven via Service Fabric Explorer, REST en API's. EventStore voert rechtstreeks een query uit op het cluster om diagnostische gegevens op te halen uit een entiteit in uw cluster en moet worden gebruikt voor het volgende:

  • Het vaststellen van problemen tijdens de ontwikkeling of het testen, of waar u een bewakingspijplijn zou kunnen gebruiken
  • Bevestigen dat beheeracties die u op het cluster uitvoert correct worden verwerkt
  • Een 'momentopname' verkrijgen van hoe Service Fabric met een bepaalde entiteit interactie aangaat

Als u de Event Store-service in uw cluster wilt inschakelen, voegt u het volgende toe aan de eigenschap fabricSettings van de Microsoft.ServiceFabric/clusters-resource:

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

Azure Monitor-logboeken instellen voor het cluster

Azure Monitor-logboeken is onze aanbeveling voor het bewaken van gebeurtenissen op clusterniveau. Als u Azure Monitor-logboeken wilt instellen om uw cluster te bewaken, moet u diagnostische gegevens hebben ingeschakeld om gebeurtenissen op cluster niveau weer te geven.

De werkruimte moet zijn verbonden met de diagnostische gegevens die afkomstig zijn van uw cluster. Deze logboekgegevens worden opgeslagen in het opslagaccount applicationDiagnosticsStorageAccountName in de tabellen WADServiceFabric*EventTable, WADWindowsEventLogsTable en WADETWEventTable.

Voeg de Azure Log Analytics-werkruimte toe en voeg de oplossing toe aan de werkruimte:

"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": ""
        }
    }
]

Voeg vervolgens parameters toe

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

Voeg vervolgens variabelen toe:

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

Voeg de uitbreiding van de Log Analytics-agent toe aan elke virtuele-machineschaalset in het cluster en verbind de agent met de Log Analytics-werkruimte. Hierdoor kunt u diagnostische gegevens over containers, toepassingen en prestatiebewaking verzamelen. Door de uitbreiding toe te voegen aan de virtuele-machineschaalset, zorgt Azure Resource Manager ervoor dat deze op elk knooppunt wordt geïnstalleerd, zelfs wanneer het cluster wordt geschaald.

"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]"
                        }
                    }
                }
            ...
            ]
        }
    }
}

Het virtuele netwerk en het cluster implementeren

Stel vervolgens de netwerktopologie in en implementeer het Service Fabric-cluster. De Resource Manager-sjabloon azuredeploy.json maakt een virtueel netwerk, een subnet en een netwerkbeveiligingsgroep voor Service Fabric. De sjabloon implementeert ook een cluster met certificaatbeveiliging ingeschakeld. Gebruik voor productieclusters een certificaat van een certificeringsinstantie als clustercertificaat. Een zelfondertekend certificaat kan worden gebruikt om testclusters te beveiligen.

De sjabloon in dit artikel implementeert een cluster dat gebruik maakt van de certificaatvingerafdruk voor het identificeren van het clustercertificaat. Geen twee certificaten kunnen dezelfde vingerafdruk hebben, waardoor certificaatbeheer moeilijker wordt. Het schakelen van een geïmplementeerd cluster van certificaatvingerafdrukken naar gewone namen voor certificaten maakt het beheer van certificaten eenvoudiger. Lees Cluster wijzigen naar certificaatbeheer met gewone namen voor informatie over het bijwerken van het cluster voor het gebruik van gewone namen voor certificaten voor het beheren van certificaten.

Een cluster maken met behulp van een bestaand certificaat

Het volgende script maakt gebruik van de cmdlet New-AzServiceFabricCluster en een sjabloon om een nieuw cluster in Azure te implementeren. De cmdlet maakt een nieuwe sleutelkluis in Azure en uploadt uw certificaat.

# 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

Een cluster maken met behulp van een nieuw, zelfondertekend certificaat

Het volgende script maakt gebruik van de cmdlet New-AzServiceFabricCluster en een sjabloon om een nieuw cluster in Azure te implementeren. De cmdlet maakt een nieuwe sleutelkluis in Azure, voegt een nieuw zelfondertekend certificaat toe aan de sleutelkluis en downloadt het certificaatbestand lokaal.

# 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

Verbinding maken met het beveiligde cluster

Maak verbinding met het cluster met behulp van de Service Fabric PowerShell-module die bij de Service Fabric-SDK is geïnstalleerd. Installeer eerst het certificaat in de persoonlijke opslag (Mijn opslag) van de huidige gebruiker op uw computer. Voer de volgende PowerShell-opdracht uit:

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

U bent nu klaar om verbinding te maken met het beveiligde cluster.

De Service Fabric PowerShell-module biedt veel cmdlets voor het beheren van Service Fabric-clusters, toepassingen en services. Gebruik de cmdlet Connect-ServiceFabricCluster om verbinding te maken met het beveiligde cluster. De SHA1-vingerafdruk van het certificaat en de eindpuntdetails van de verbinding vindt u in de uitvoer van de vorige stap.

Als u eerder Microsoft Entra-clientverificatie hebt ingesteld, voert u de volgende opdracht uit:

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

Als u Microsoft Entra-clientverificatie niet hebt ingesteld, voert u de volgende opdracht uit:

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

Controleer of u bent verbonden en of het cluster goed werkt door de cmdlet Get-ServiceFabricClusterHealth te gebruiken.

Get-ServiceFabricClusterHealth

Resources opschonen

De andere artikelen in deze zelfstudiereeks maken gebruik van het cluster dat u hebt gemaakt. Als u niet meteen verdergaat met het volgende artikel, is het wellicht een goed idee om het cluster te verwijderen. U bespaart dan kosten.

Volgende stappen

Ga door naar de volgende zelfstudie om te leren hoe u uw cluster kunt schalen.

  • Een VNET maken in Azure met behulp van PowerShell
  • Een sleutelkluis maken en een certificaat uploaden
  • Microsoft Entra-verificatie instellen
  • Verzameling met diagnostische gegevens configureren
  • EventStore-service instellen
  • Azure Monitor-logboeken instellen
  • Een beveiligd Service Fabric-cluster maken in Azure PowerShell
  • Het cluster beveiligen met een X.509-certificaat
  • Verbinding maken met het cluster met behulp van PowerShell
  • Een cluster verwijderen

Ga door naar de volgende zelfstudie om te leren hoe u uw cluster kunt bewaken.