Wprowadzenie do hostów dedykowanych w klastrach zarządzanych usługi Service Fabric
Azure Dedicated Host to usługa, która udostępnia serwery fizyczne — mogące hostować maszyny wirtualne platformy Azure — przeznaczone dla jednej subskrypcji platformy Azure. Serwer jest przeznaczony dla organizacji i obciążeń, a pojemność nie jest udostępniana nikomu innemu. Dedykowane hosty są tymi samymi serwerami fizycznymi używanymi w naszych centrach danych, które są udostępniane jako zasób. Możesz zaaprowizować dedykowane hosty w obrębie regionu, strefy dostępności i domeny błędów. Następnie możesz umieścić maszyny wirtualne bezpośrednio w zaaprowizowanych hostach w dowolnej konfiguracji najlepiej odpowiadającej Twoim potrzebom.
Korzystanie z usługi Azure Dedicated Hosts dla węzłów z klastrem zarządzanym usługi Service Fabric (SFMC) ma następujące korzyści:
- Izolacja sprzętowa na poziomie hosta na poziomie serwera fizycznego. Na hostach nie zostaną umieszczone żadne inne maszyny wirtualne. Dedykowane hosty są wdrażane w tych samych centrach danych i współużytkują tę samą sieć i podstawową infrastrukturę magazynu co inne, nieizolowane hosty.
- Kontrolowanie zdarzeń konserwacji inicjowanych przez platformę Azure. Chociaż większość zdarzeń konserwacji nie ma wpływu na maszyny wirtualne, istnieją pewne wrażliwe obciążenia, na które może mieć wpływ każda sekunda wstrzymania. Dzięki dedykowanym hostom możesz zdecydować się na okno obsługi, aby zmniejszyć wpływ na usługę.
Jednostkę SKU dla maszyn wirtualnych dedykowanych hostów można wybrać na podstawie wymagań dotyczących obciążenia. Aby uzyskać więcej informacji, zobacz Maszyny wirtualne dedykowanego hosta.
Poniższy przewodnik przeprowadzi Cię krok po kroku, aby dowiedzieć się, jak dodać dedykowany host platformy Azure do klastra zarządzanego usługi Service Fabric przy użyciu szablonu usługi Azure Resource Manager.
Wymagania wstępne
Ten przewodnik opiera się na przewodniku Szybki start dotyczącym klastra zarządzanego: wdrażanie klastra zarządzanego usługi Service Fabric przy użyciu usługi Azure Resource Manager
Przed rozpoczęciem:
- Jeśli nie masz subskrypcji platformy Azure, utwórz bezpłatne konto
- Pobieranie szablonu usługi ARM klastra zarządzanego. Przykładowe szablony usługi Resource Manager są dostępne w przykładach platformy Azure w witrynie GitHub. Te szablony mogą służyć jako punkt wyjścia dla szablonu klastra. W tym przewodniku pokazano, jak wdrożyć klaster jednostki SKU w warstwie Standardowa z dwoma typami węzłów i 12 węzłami.
- Użytkownik musi mieć uprawnienia Microsoft.Authorization/roleAssignments/write do grupy hostów, takich jak Administrator dostępu użytkowników lub Właściciel , aby wykonywać przypisania ról w grupie hostów. Aby uzyskać więcej informacji, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal — Azure RBAC.
Przegląd szablonu
Szablon używany w tym przewodniku pochodzi z szablonów klastrów usługi Azure Samples — Service Fabric.
Tworzenie certyfikatu klienta
Klastry zarządzane usługi Service Fabric używają certyfikatu klienta jako klucza do kontroli dostępu. Jeśli masz już certyfikat klienta, którego chcesz użyć do kontroli dostępu do klastra, możesz pominąć ten krok.
Jeśli musisz utworzyć nowy certyfikat klienta, wykonaj kroki opisane w temacie Set and retrieve a certificate from Azure Key Vault (Konfigurowanie i pobieranie certyfikatu z usługi Azure Key Vault). Zanotuj odcisk palca certyfikatu, ponieważ będzie on wymagany do wdrożenia szablonu w następnym kroku.
Wdrażanie dedykowanych zasobów hosta i konfigurowanie dostępu do dostawcy zasobów usługi Service Fabric
Utwórz dedykowaną grupę hostów i dodaj przypisanie roli do grupy hostów za pomocą aplikacji Service Fabric Resource Provider, wykonując poniższe kroki. To przypisanie roli umożliwia dostawcy zasobów usługi Service Fabric wdrażanie maszyn wirtualnych na dedykowanych hostach w grupie hostów w zestawie skalowania maszyn wirtualnych klastra zarządzanego. To przypisanie jest jednorazową akcją.
Pobierz identyfikator dostawcy SFRP i jednostkę usługi dla aplikacji dostawcy zasobów usługi Service Fabric.
Login-AzAccount Select-AzSubscription -SubscriptionId <SubId> Get-AzADServicePrincipal -DisplayName "Azure Service Fabric Resource Provider"
Uwaga
Upewnij się, że jesteś w odpowiedniej subskrypcji, identyfikator podmiotu zabezpieczeń zmieni się, jeśli subskrypcja znajduje się w innej dzierżawie.
Utwórz dedykowaną grupę hostów przypiętą do jednej strefy dostępności i pięć domen błędów przy użyciu udostępnionego przykładowego szablonu wdrożenia usługi ARM dla dedykowanej grupy hostów. Przykład zapewnia, że istnieje co najmniej jeden dedykowany host na domenę błędów.
New-AzResourceGroup -Name $ResourceGroupName -Location $location New-AzResourceGroupDeployment -Name "hostgroup-deployment" -ResourceGroupName $ResourceGroupName -TemplateFile ".\HostGroup-And-RoleAssignment.json" -TemplateParameterFile ".\HostGroup-And-RoleAssignment.parameters.json" -Debug -Verbose
Uwaga
- Upewnij się, że wybrano odpowiednią rodzinę jednostek SKU dla dedykowanego hosta zgodnego z jedną używaną dla podstawowej jednostki SKU maszyny wirtualnej typu węzła. Aby uzyskać więcej informacji, zobacz Maszyny wirtualne dedykowanego hosta.
- Każda domena błędów wymaga dedykowanego hosta, który ma zostać umieszczony w nim, a klastry zarządzane usługi Service Fabric wymagają pięciu domen błędów. W związku z tym co najmniej pięć dedykowanych hostów powinno znajdować się w każdej dedykowanej grupie hostów.
Przykładowy szablon wdrożenia usługi ARM dla dedykowanej grupy hostów używany w poprzednim kroku dodaje również przypisanie roli do grupy hostów z dostępem współautora. Aby uzyskać więcej informacji na temat ról platformy Azure, zobacz Role wbudowane platformy Azure — Kontrola dostępu oparta na rolach platformy Azure. To przypisanie roli jest definiowane w sekcji zasobów szablonu z identyfikatorem podmiotu zabezpieczeń określonym w pierwszym kroku i identyfikatorem definicji roli.
"variables": { "authorizationApiVersion": "2018-01-01-preview", "contributorRoleId": "b24988ac-6180-42a0-ab88-20f7382dd24c", "SFRPAadServicePrincipalId": " <Service Fabric Resource Provider ID> -" }, "resources": [ { "apiVersion": "[variables('authorizationApiVersion')]", "type": "Microsoft.Compute/Hostgroups/providers/roleAssignments", "name": "[concat(concat(parameters('dhgNamePrefix'), '0'), '/Microsoft.Authorization/', parameters('hostGroupRoleAssignmentId'))]", "dependsOn": [ "[resourceId('Microsoft.Compute/hostGroups', concat(parameters('dhgNamePrefix'), '0'))]" ], "properties": { "roleDefinitionId": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', variables('contributorRoleId'))]", "principalId": "[variables('SFRPAadServicePrincipalId')]" } } ]
możesz również dodać przypisanie roli za pomocą programu PowerShell przy użyciu identyfikatora podmiotu zabezpieczeń określonego w pierwszym kroku i nazwie definicji roli jako "Współautor", jeśli ma to zastosowanie.
New-AzRoleAssignment -PrincipalId "<Service Fabric Resource Provider ID>" -RoleDefinitionName "Contributor" -Scope "<Host Group Id>"
Wdrażanie klastra zarządzanego usługi Service Fabric
Utwórz klaster zarządzany usługi Azure Service Fabric z typami węzłów skonfigurowanymi do odwołowania się do identyfikatora ResourceId dedykowanej grupy hostów. Typ węzła musi być przypięty do tej samej strefy dostępności co grupa hostów.
Wybierz szablon z przykładowego szablonu klastra usługi Service Fabric dla dedykowanego hosta, który zawiera specyfikację obsługi dedykowanego hosta.
Podaj własne wartości dla następujących parametrów szablonu:
- Subskrypcja: wybierz tę samą subskrypcję platformy Azure co subskrypcja grupy hostów.
- Grupa zasobów: wybierz pozycję Utwórz nową. Wprowadź unikatową nazwę grupy zasobów, taką jak myResourceGroup, a następnie wybierz przycisk OK.
- Lokalizacja: wybierz tę samą lokalizację co lokalizacja grupy hostów.
- Nazwa klastra: wprowadź unikatową nazwę klastra, taką jak mysfcluster.
- Nazwa użytkownika administratora: wprowadź nazwę administratora, która ma być używana dla protokołu RDP na źródłowych maszynach wirtualnych w klastrze.
- Hasło administratora: wprowadź hasło administratora, które ma być używane dla protokołu RDP na źródłowych maszynach wirtualnych w klastrze.
- Odcisk palca certyfikatu klienta: podaj odcisk palca certyfikatu klienta, którego chcesz użyć do uzyskania dostępu do klastra. Jeśli nie masz certyfikatu, postępuj zgodnie z instrukcjami i pobierz certyfikat , aby utworzyć certyfikat z podpisem własnym.
- Nazwa typu węzła: wprowadź unikatową nazwę typu węzła, na przykład nt1.
Wdróż szablon usługi ARM za pomocą jednej z poniższych metod:
Środowisko szablonu niestandardowego portalu usługi ARM: wdrażanie niestandardowe — Microsoft Azure. Wybierz poniższy obraz, aby zalogować się na platformie Azure i podać własne wartości parametrów szablonu, a następnie wdróż szablon.
Polecenia cmdlet programu PowerShell usługi ARM: New-AzResourceGroupDeployment (Az.Resources). Zapisz ścieżki plików szablonu i parametrów usługi ARM w zmiennych, a następnie wdróż szablon.
$templateFilePath = "<full path to azuredeploy.json>" $parameterFilePath = "<full path to azuredeploy.parameters.json>" $pass = (ConvertTo-SecureString -AsPlainText -Force "<adminPassword>") New-AzResourceGroupDeployment ` -Name $DeploymentName ` -ResourceGroupName $resourceGroupName ` -TemplateFile $templateFilePath ` -TemplateParameterFile $parameterFilePath ` -adminPassword $pass ` -Debug -Verbose
Poczekaj na pomyślne zakończenie wdrożenia.
Rozwiązywanie problemów
- Następujący błąd jest zgłaszany, gdy sfRP nie ma dostępu do grupy hostów. Przejrzyj powyższe kroki przypisania roli i upewnij się, że przypisanie zostało wykonane poprawnie.
{ "code": "LinkedAuthorizationFailed", "message": "The client '[<clientId>]' with object id '[<objectId>]' has permission to perform action 'Microsoft.Compute/virtualMachineScaleSets/write' on scope '/subscriptions/[<Subs-Id>]/resourcegroups/[<ResGrp-Id>]/providers/Microsoft.Compute/virtualMachineScaleSets/pnt'; however, it does not have permission to perform action 'write' on the linked scope(s) '/subscriptions/[<Subs-Id>]/resourceGroups/[<ResGrp-Id>]/providers/Microsoft.Compute/hostGroups/HostGroupscu0' or the linked scope(s) are invalid." }
- Jeśli grupa hostów znajduje się w innej subskrypcji niż klastry, zostanie zgłoszony następujący błąd. Upewnij się, że obie znajdują się w tej samej subskrypcji.
{ "code": "BadRequest", "message": "Entity subscriptionId in resource reference id /subscriptions/[<Subs-Id>]/resourceGroups/[<ResGrp-Id>]/providers/Microsoft.Compute/hostGroups/[<HostGroup>] is invalid." }
- Jeśli limit przydziału dla grupy hostów nie jest wystarczający, zostanie zgłoszony następujący błąd:
{ "code": "QuotaExceeded", "message": "Operation could not be completed as it results in exceeding approved standardDSv3Family Cores quota. Additional Required: 320, (Minimum) New Limit Required: 320. Submit a request for Quota increase [here](https://aka.ms/ProdportalCRP/#blade/Microsoft_Azure_Capacity/UsageAndQuota.ReactView/Parameters/). Please read more about quota limits [here](/azure/azure-supportability/per-vm-quota-requests)” }