Handledning: Distribuera ett Service Fabric-kluster som kör Windows i ett virtuellt Azure-nätverk

Den här självstudien ingår i en serie. Du lär dig hur du distribuerar ett Azure Service Fabric-kluster som kör Windows till ett virtuellt Azure-nätverk och en nätverkssäkerhetsgrupp med hjälp av PowerShell och en mall. När du är klar har du ett kluster som körs i molnet som du kan distribuera program till. Information om hur du skapar ett Linux-kluster som använder Azure CLI finns i Skapa ett säkert Linux-kluster i Azure.

I den här självstudien beskrivs ett produktionsscenario. Om du vill skapa ett mindre kluster i testsyfte kan du läsa Skapa ett testkluster.

I den här självstudien lär du dig att:

  • skapa ett VNET i Azure med PowerShell
  • skapa ett nyckelvalv och ladda upp ett certifikat
  • Konfigurera Microsoft Entra-autentisering
  • Konfigurera diagnostiksamling
  • Konfigurera EventStore-tjänsten
  • Konfigurera Azure Monitor-loggar
  • skapa ett säkert Service Fabric-kluster i Azure med PowerShell
  • skydda klustret med ett X.509-certifikat
  • Ansluta till klustret med PowerShell
  • Ta bort ett kluster

I den här självstudieserien får du lära du dig att:

Kommentar

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Se Installera Azure PowerShell för att komma igång. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

Förutsättningar

Innan du börjar den här självstudien:

Följande procedurer skapar ett Service Fabric-kluster med sju noder. Använd Priskalkylatorn för Azure för att beräkna kostnader som uppstår vid körning av ett Service Fabric-kluster i Azure.

Ladda ned och titta närmare på mallen

Ladda ned följande Azure Resource Manager-mallfiler:

Den här mallen distribuerar ett säkert kluster med sju virtuella datorer och tre nodtyper till ett virtuellt nätverk och en nätverkssäkerhetsgrupp. Andra exempelmallar finns på GitHub. azuredeploy.json distribuerar ett antal resurser, inklusive följande.

Service Fabric-kluster

I resursen Microsoft.ServiceFabric/kluster konfigureras ett Windows-kluster med följande egenskaper:

  • Tre nodtyper.
  • Fem noder i den primära nodtypen (kan konfigureras i mallparametrarna) och en nod i var och en av de två andra nodtyperna.
  • OPERATIVSYSTEM: Windows Server 2016 Datacenter med containrar (kan konfigureras i mallparametrarna).
  • Certifikatet är skyddat (kan konfigureras i mallparametrarna).
  • Omvänd proxy är aktiverad.
  • DNS-tjänsten är aktiverad.
  • Hållbarhetsnivån brons (kan konfigureras i mallparametrarna).
  • Tillförlitlighetsnivån för Silver (kan konfigureras i mallparametrarna).
  • Slutpunkt för klientanslutning: 19000 (kan konfigureras i mallparametrarna).
  • HTTP-gatewayslutpunkt: 19080 (kan konfigureras i mallparametrarna).

Azure Load Balancer

I resursen Microsoft.Network/loadBalancers konfigureras en lastbalanserare . Avsökningar och regler konfigureras för följande portar:

  • Slutpunkt för klientanslutning: 19000
  • HTTP-gatewayslutpunkt: 19080
  • Programport: 80
  • Programport: 443
  • omvänd proxy för Service Fabric: 19081

Om andra programportar behövs måste du justera resursen Microsoft.Network/loadBalancers och resursen Microsoft.Network/networkSecurityGroups för att tillåta trafik.

Virtuellt nätverk, undernät och nätverkssäkerhetsgrupp

Namnen på det virtuella nätverket, undernätet och nätverkssäkerhetsgruppen deklareras i mallparametrarna. Adressutrymmen i det virtuella nätverket och undernätet deklareras också i mallparametrarna och konfigureras i resursen Microsoft.Network/virtualNetworks:

  • Adressutrymme för virtuellt nätverk: 172.16.0.0/20
  • Service Fabric-undernätets adressutrymme: 172.16.2.0/23

Följande regler för inkommande trafik är aktiverade i resursen Microsoft.Network/networkSecurityGroups. Du kan ändra portvärdena genom att ändra mallvariablerna.

  • ClientConnectionEndpoint (TCP): 19000
  • HttpGatewayEndpoint (HTTP/TCP): 19080
  • SMB: 445
  • Internodecommunication: 1025, 1026, 1027
  • Tillfälliga portintervall: 49152 till 65534 (behöver minst 256 portar).
  • Portar för programanvändning: 80 och 443
  • Programportintervall: 49152 till 65534 (används för tjänst-till-tjänst-kommunikation. Andra portar öppnas inte i lastbalanseraren).
  • Blockera alla andra portar

Om andra programportar behövs måste du justera resursen Microsoft.Network/loadBalancers och resursen Microsoft.Network/networkSecurityGroups för att tillåta trafik.

Windows Defender

Som standard installeras och fungerar Windows Defender-antivirusprogrammet på Windows Server 2016. Användargränssnittet installeras som standard på vissa SKU:er, men krävs inte. För varje nodtyp/VM-skalningsuppsättning som deklareras i mallen används Azure VM Antimalware-tillägget för att utesluta Service Fabric-katalogerna och -processerna:

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

Ställa in mallparametrar

Parameterfilen azuredeploy.parameters.json deklarerar många värden som används till att distribuera klustret och associerade resurser. Följande är parametrar som du kan ändra för distributionen:

Parameter Exempelvärde Anteckningar
adminUserName vmadmin Administratörsnamn för virtuella datorer i klustret. Användarnamnskrav för virtuell dator.
adminPassword Password#1234 Administratörslösenord för virtuella datorer i klustret. Lösenordskrav för virtuell dator.
clusterName mysfcluster123 Namnet på klustret. Får endast innehålla bokstäver och siffror. Längden ska vara mellan 3 och 23 tecken.
location USA, södra centrala Klustrets placering.
certificateThumbprint

Värdet ska vara tomt om du skapar ett självsignerat certifikat eller tillhandahåller en certifikatfil.

Om du vill använda ett befintligt certifikat som tidigare har laddats upp till ett nyckelvalv fyller du i certifikatets SHA1-tumavtrycksvärde. Till exempel ”6190390162C988701DB5676EB81083EA608DCCF3”.

certificateUrlValue

Värdet ska vara tomt om du skapar ett självsignerat certifikat eller tillhandahåller en certifikatfil.

Om du vill använda ett befintligt certifikat som tidigare har laddats upp till ett nyckelvalv fyller du i certifikatets webbadress. Till exempel "https://mykeyvault.vault.azure.net:443/secrets/mycertificate/02bea722c9ef4009a76c5052bcbf8346".

sourceVaultValue

Värdet ska vara tomt om du skapar ett självsignerat certifikat eller tillhandahåller en certifikatfil.

Om du vill använda ett befintligt certifikat som tidigare har laddats upp till ett nyckelvalv fyller du i källans nyckelvärde. Till exempel ”/subscriptions/333cc2c84-12fa-5778-bd71-c71c07bf873f/resourceGroups/MyTestRG/providers/Microsoft.KeyVault/vaults/MYKEYVAULT”.

Konfigurera Microsoft Entra-klientautentisering

För Service Fabric-kluster som distribueras i ett offentligt nätverk som hanteras i Azure är rekommendationen för ömsesidig klient-till-nod-autentisering:

  • Använd Microsoft Entra-ID för klientidentitet.
  • Använd ett certifikat för serveridentitet och TLS-kryptering för HTTP-kommunikation.

Du måste konfigurera Microsoft Entra-ID för att autentisera klienter för ett Service Fabric-kluster innan klustret skapas. Med Microsoft Entra-ID kan organisationer (så kallade klientorganisationer) hantera användaråtkomst till program.

Service Fabric-kluster erbjuder flera startpunkter för dess hanteringsfunktioner, däribland den webbaserade Service Fabric Explorer och Visual Studio. Därför skapar du två Microsoft Entra-program för att styra åtkomsten till klustret: ett webbprogram och ett internt program. När programmen har skapats tilldelar du användare till roller som skrivskyddad och administratör.

Kommentar

Du måste slutföra följande steg innan du skapar klustret. Eftersom skripten förväntar sig klusternamn och slutpunkter bör värdena vara planerade och inte värden som du redan har skapat.

I den här artikeln antar vi att du redan har skapat en klientorganisation. Om du inte har gjort det börjar du med att läsa Hämta en Microsoft Entra-klientorganisation.

För att förenkla stegen för att konfigurera Microsoft Entra-ID med ett Service Fabric-kluster har vi skapat en uppsättning Windows PowerShell-skript. Ladda ned skripten till datorn.

Skapa Microsoft Entra-program och tilldela användare till roller

Skapa två Microsoft Entra-program för att styra åtkomsten till klustret: ett webbprogram och ett internt program. När du har skapat programmen för att representera klustret tilldelar du dina användare till de roller som stöds av Service Fabric: skrivskyddad och administratör.

Kör SetupApplications.ps1 och ange klientorganisations-ID, klusternamn och svars-URL för webbprogram som parametrar. Ange användarnamn och lösenord för användarna. Till exempel:

$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

Kommentar

För nationella moln (till exempel Azure Government, Microsoft Azure som drivs av 21Vianet, Azure Germany) anger du parametern -Location .

TenantId eller katalog-ID finns i Azure-portalen. Välj Egenskaper för Microsoft Entra-ID>och kopiera katalog-ID-värdet.

ClusterName används för att prefixa de Microsoft Entra-program som skapas av skriptet. Det behöver inte exakt matcha det faktiska klusternamnet. Det gör det bara enklare att mappa Microsoft Entra-artefakter till Service Fabric-klustret som används.

WebApplicationReplyUrl är standardslutpunkten som Microsoft Entra-ID:t returnerar till användarna när de har loggat in. Ange den här slutpunkten som Service Fabric Explorer-slutpunkt för ditt kluster, vilken som standard är:

https://<cluster_domain>:19080/Explorer

Du uppmanas att logga in på ett konto som har administratörsbehörighet för Microsoft Entra-klientorganisationen. När du har loggat in skapar skriptet webbprogrammet och det interna programmet för att representera ditt Service Fabric-kluster. I klientorganisationens program i Azure-portalen bör du se två nya poster:

  • ClusterName_Cluster
  • ClusterName_Client

Skriptet skriver ut JSON som krävs av Resource Manager-mallen när du skapar klustret, så det är en bra idé att hålla PowerShell-fönstret öppet.

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

Lägga till Microsoft Entra-konfiguration för att använda Microsoft Entra-ID för klientåtkomst

I avsnittet azuredeploy.json konfigurerar du Microsoft Entra-ID i avsnittet Microsoft.ServiceFabric/clusters . Lägg till parametrar för klientorganisations-ID, klusterprogram-ID och klientprogram-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')]"
    },
    ...
  }
}

Lägg till parametervärdena i parameterfilen azuredeploy.parameters.json. Till exempel:

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

Konfigurera diagnostiksamling i klustret

När du kör ett Service Fabric-kluster är det en bra idé att samla in loggarna från alla noder på en central plats. Om du har loggarna på en central plats kan du analysera och felsöka problem i klustret, eller problem i de program och tjänster som körs i klustret.

Ett sätt att ladda upp och samla in loggar är att använda tillägget Azure Diagnostics (WAD), som laddar upp loggar till Azure Storage, och även har möjlighet att skicka loggar till Azure Application Insights eller Event Hubs. Du kan också använda en extern process för att läsa händelserna från lagringen och placera dem i en analysplattformsprodukt, till exempel Azure Monitor-loggar eller en annan loggparsningslösning.

Om du följer den här självstudien är diagnostiksamlingen redan konfigurerad i mallen.

Om du har ett befintligt kluster som inte har distribuerat diagnostik kan du lägga till eller uppdatera det via klustermallen. Ändra Resource Manager-mallen som används för att skapa det befintliga klustret eller ladda ned mallen från portalen. Ändra filen template.json genom att utföra följande uppgifter:

Lägg till en ny lagringsresurs i resursavsnittet i mallen:

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

Lägg sedan till parametrar för lagringskontots namn och skriv till parameteravsnittet i mallen. Ersätt platshållarnamnet för textlagringskontot här med namnet på det lagringskonto som du vill använda.

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

Lägg sedan till tillägget IaaSDiagnostics i tilläggsmatrisenför egenskapen VirtualMachineProfile för varje Microsoft.Compute/virtualMachineScaleSets-resurs i klustret. Om du använder exempelmallen finns det tre vm-skalningsuppsättningar (en för varje nodtyp i klustret).

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

Konfigurera EventStore-tjänsten

EventStore-tjänsten är ett övervakningsalternativ i Service Fabric. EventStore är ett sätt att förstå tillståndet för klustret eller arbetsbelastningarna vid en viss tidpunkt. EventStore är en tillståndskänslig Service Fabric-tjänst som underhåller händelser från klustret. Händelsen exponeras via Service Fabric Explorer, REST och API:er. EventStore frågar klustret direkt för att hämta diagnostikdata på en entitet i klustret och bör användas för att:

  • Diagnostisera problem med utveckling eller testning, eller där du kanske använder en övervakningspipeline
  • Bekräfta att hanteringsåtgärder som du vidtar i klustret bearbetas korrekt
  • Hämta en "ögonblicksbild" av hur Service Fabric interagerar med en viss entitet

Om du vill aktivera EventStore-tjänsten i klustret lägger du till följande i egenskapen fabric Inställningar för resursen 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"
                }
            ]
        }
    ]
}

Konfigurera Azure Monitor-loggar för klustret

Azure Monitor-loggar är vår rekommendation att övervaka händelser på klusternivå. Om du vill konfigurera Azure Monitor-loggar för att övervaka klustret måste du ha diagnostik aktiverad för att visa händelser på klusternivå.

Arbetsytan måste vara ansluten till diagnostikdata som kommer från klustret. Dessa loggdata lagras i lagringskontot applicationDiagnosticsStorageAccountName i tabellerna WADServiceFabric*EventTable, WADWindowsEventLogsTable och WADETWEventTable.

Lägg till Azure Log Analytics-arbetsytan och lägg till lösningen på arbetsytan:

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

Lägg sedan till parametrar

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

Lägg sedan till variabler:

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

Lägg till Log Analytics-agenttillägget till varje VM-skalningsuppsättning i klustret och anslut agenten till Log Analytics-arbetsytan. På så sätt kan du samla in diagnostikdata om containrar, program och prestandaövervakning. Genom att lägga till den som ett tillägg till vm-skalningsuppsättningsresursen ser Azure Resource Manager till att den installeras på varje nod, även när klustret skalas.

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

Distribuera det virtuella nätverket och klustret

Konfigurera därefter nätverkstopologi och distribuera Service Fabric-klustret. Resource Manager-mallen azuredeploy.json skapar ett virtuellt nätverk, undernät och en nätverkssäkerhetsgrupp för Service Fabric. Mallen distribuerar också ett kluster med certifikatsäkerhet aktiverad. För produktionskluster använder du ett certifikat från en certifikatutfärdare som klustercertifikat. Ett självsignerat certifikat kan användas för att skydda testkluster.

Mallen i den här artikeln distribuerar ett kluster som använder certifikatets tumavtryck för att identifiera klustercertifikatet. Två certifikat kan inte ha samma tumavtryck, vilket gör certifikathantering svårare. Om du byter ett distribuerat kluster från tumavtryck för certifikat till vanliga certifikatnamn förenklas certifikathanteringen. Om du vill lära dig hur du uppdaterar klustret så att det använder vanliga certifikatnamn för certifikathantering läser du Ändra kluster till certifikatets vanliga namnhantering.

Skapa ett kluster med hjälp av ett befintligt certifikat

Följande skript använder cmdleten New-AzServiceFabricCluster och en mall för att distribuera ett nytt kluster i Azure. Cmdleten skapar ett nytt nyckelvalv i Azure och laddar upp ditt certifikat.

# 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

Skapa ett kluster med hjälp av ett nytt självsignerat certifikat

Följande skript använder cmdleten New-AzServiceFabricCluster och en mall för att distribuera ett nytt kluster i Azure. Cmdleten skapar ett nytt nyckelvalv i Azure, lägger till ett nytt självsignerat certifikat i nyckelvalvet och laddar ned certifikatfilen lokalt.

# 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

Ansluta till det säkra klustret

Anslut till klustret med hjälp av Service Fabric PowerShell-modulen installerad med Service Fabric SDK. Först installerar du certifikatet i det personliga arkivet för den aktuella användaren på datorn. Kör följande PowerShell-kommando:

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

Nu är du redo att ansluta till ditt säkra kluster.

PowerShell-modulen Service Fabric har många cmdletar för hantering av Service Fabric-kluster, program och tjänster. Använd cmdleten Connect-ServiceFabricCluster till att ansluta till det säkra klustret. Certifikatets SHA1-tumavtryck och information om slutpunkten för anslutning finns i utdata från föregående steg.

Om du tidigare har konfigurerat Microsoft Entra-klientautentisering kör du följande kommando:

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

Om du inte har konfigurerat Microsoft Entra-klientautentisering kör du följande kommando:

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

Kontrollera att du är ansluten och att klustret är felfritt med hjälp av cmdleten Get-ServiceFabricClusterHealth .

Get-ServiceFabricClusterHealth

Rensa resurser

De andra artiklarna i den här självstudieserien använder klustret som du har skapat. Om du inte genast fortsätter till nästa artikel kanske du vill ta bort klustret för att undvika kostnader.

Nästa steg

Gå vidare till följande självstudie för att lära dig hur du skalar klustret.

  • skapa ett VNET i Azure med PowerShell
  • skapa ett nyckelvalv och ladda upp ett certifikat
  • Konfigurera Microsoft Entra-autentisering
  • Konfigurera diagnostiksamling
  • Konfigurera EventStore-tjänsten
  • Konfigurera Azure Monitor-loggar
  • skapa ett säkert Service Fabric-kluster i Azure med PowerShell
  • skydda klustret med ett X.509-certifikat
  • Ansluta till klustret med PowerShell
  • Ta bort ett kluster

Gå sedan vidare till följande självstudie för att lära dig hur du övervakar klustret.