Introdução a hosts dedicados em clusters gerenciados do Service Fabric
O Host Dedicado do Azure é um serviço que fornece servidores físicos - que podem hospedar uma ou mais máquinas virtuais - dedicados a uma assinatura do Azure. O servidor é dedicado à sua organização e às cargas de trabalho, e a capacidade não é compartilhada com mais ninguém. Os Hosts dedicados são os mesmos servidores físicos usados em nossos data centers, fornecidos como um recurso. Você pode provisionar hosts dedicados em uma região, zona de disponibilidade e domínio de falha. Em seguida, você pode posicionar VMs diretamente em seus hosts provisionados, em qualquer configuração que melhor atenda às suas necessidades.
O uso de Hosts Dedicados do Azure para nós com o SFMC (cluster gerenciado do Service Fabric) tem os seguintes benefícios:
- Isolamento de hardware de nível do host no nível do servidor físico. Nenhuma outra VM será colocada nos hosts. Os hosts dedicados são implantados nos mesmos data centers e compartilham a mesma rede e a infraestrutura de armazenamento subjacente que outros hosts não isolados.
- Controle sobre eventos de manutenção iniciados pela plataforma do Azure. Embora a maioria dos eventos de manutenção tenha pouco ou nenhum impacto nas máquinas virtuais, há algumas cargas de trabalho confidenciais em que cada segundo de pausa pode ter um impacto. Com hosts dedicados, você pode aceitar uma janela de manutenção para reduzir o impacto no serviço.
Você pode escolher o SKU para Máquinas Virtuais de Hosts Dedicados com base nos requisitos de carga de trabalho. Para obter mais informações, consulte Máquinas Virtuais de Host Dedicado.
O guia a seguir acompanhará você passo a passo para adicionar um Host Dedicado do Azure a um cluster gerenciado do Service Fabric com um modelo do Azure Resource Manager.
Pré-requisitos
Este guia se baseia no guia de início rápido do cluster gerenciado: implantar um cluster gerenciado do Service Fabric usando o Azure Resource Manager
Antes de começar:
- Se você não tem uma assinatura do Azure, crie uma conta gratuita
- Recuperar um modelo do ARM de cluster gerenciado. Os exemplos de modelo do Resource Manager estão disponíveis nos Exemplos do Azure no GitHub. Esses modelos podem ser usados como ponto de partida para o modelo de cluster. Esse guia mostra como implantar um cluster SKU Standard com dois tipos de nó e 12 nós.
- O usuário precisa ter permissões Microsoft.Authorization/roleAssignments/write para o grupo de host, como Administrador de Acesso do Usuário ou Proprietário, para fazer atribuições de função em um grupo de host. Para obter mais informações, consulte Atribuir funções do Azure usando o portal do Azure - Azure RBAC.
Examinar o modelo
O modelo usado neste guia é proveniente dos Exemplos do Azure – Modelos do cluster do Service Fabric.
Criar um certificado de cliente
Os clusters gerenciados do Service Fabric usam um certificado de cliente como uma chave para o controle de acesso. Se você já tiver um certificado de cliente que deseja usar para o controle de acesso ao cluster, poderá ignorar esta etapa.
Se você precisar criar um certificado de cliente, siga as etapas em definir e recuperar um certificado do Azure Key Vault. Anote a impressão digital do certificado, pois ela será necessária para implantar o modelo na próxima etapa.
Implantar recursos de Host Dedicado e configurar o acesso ao Provedor de Recursos do Service Fabric
Crie um grupo de host dedicado e adicione uma atribuição de função ao grupo de host com o aplicativo Provedor de Recursos do Service Fabric usando as etapas abaixo. Essa atribuição de função permite que o Provedor de Recursos do Service Fabric implante VMs nos Hosts Dedicados dentro do grupo de hosts no conjunto de dimensionamento de máquinas virtuais do cluster gerenciado. Essa atribuição é uma ação única.
Obtenha a ID do provedor SFRP e a entidade de serviço do aplicativo Provedor de Recursos do Service Fabric.
Login-AzAccount Select-AzSubscription -SubscriptionId <SubId> Get-AzADServicePrincipal -DisplayName "Azure Service Fabric Resource Provider"
Observação
Verifique se você está na assinatura correta. A ID da entidade de segurança será alterada se a assinatura estiver em um locatário diferente.
Crie um grupo de host dedicado fixado a uma zona de disponibilidade e cinco domínios de falha usando o modelo de implantação do ARM de exemplo fornecido para o Grupo de Host Dedicado. O exemplo garantirá que haja pelo menos um host dedicado por domínio de falha.
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
Observação
- Certifique-se de escolher a família SKU correta para o Host Dedicado que corresponda à que você usará para a SKU de VM do tipo de nó subjacente. Para obter mais informações, consulte Máquinas Virtuais de Host Dedicado.
- Cada domínio de falha precisa que um host dedicado seja colocado nele, e os clusters gerenciados do Service Fabric exigem cinco domínios de falha. Portanto, pelo menos cinco hosts dedicados devem estar presentes em cada grupo de host dedicado.
O modelo de implantação do ARM de exemplo para o Grupo de Host Dedicado usado na etapa anterior também adiciona uma atribuição de função ao grupo de host com acesso de colaborador. Para obter mais informações sobre funções do Azure, confira Funções internas do Azure - Azure RBAC. Essa atribuição de função é definida na seção de recursos do modelo com a ID da entidade de segurança determinada na primeira etapa e uma ID de definição de função.
"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')]" } } ]
Ou você também pode adicionar a atribuição de função por meio do PowerShell usando a ID da entidade de segurança determinada na primeira etapa e o nome da definição de função como "Colaborador", quando aplicável.
New-AzRoleAssignment -PrincipalId "<Service Fabric Resource Provider ID>" -RoleDefinitionName "Contributor" -Scope "<Host Group Id>"
Implantar um cluster gerenciado do Service Fabric
Crie um cluster gerenciado do Azure Service Fabric com tipos de nó configurados para fazer referência ao ResourceId do Grupo de Host Dedicado. O tipo de nó precisa ser fixado na mesma zona de disponibilidade que o grupo de host.
Escolha o modelo do modelo de exemplo de cluster do Service Fabric para Host Dedicado, que inclui a especificação para suporte ao Host Dedicado.
Forneça seus próprios valores para os seguintes parâmetros de modelo:
- Assinatura: selecione a mesma assinatura do Azure que a assinatura do grupo de host.
- Grupo de Recursos: Selecione Criar novo. Insira um nome exclusivo para o grupo de recursos, como myResourceGroup, e escolha OK.
- Local: selecione o mesmo local que o local do grupo de host.
- Nome do cluster: Insira um nome exclusivo para o cluster, como mysfcluster.
- Nome de Usuário do Administrador: Insira um nome para o administrador a ser usado para o RDP nas VMs subjacentes no cluster.
- Senha do Administrador: Insira uma senha para o administrador a ser usada para o RDP nas VMs subjacentes no cluster.
- Impressão Digital do Certificado do Cliente: Forneça a impressão digital do certificado do cliente que você deseja usar para acessar o cluster. Se você não tiver um certificado, siga definir e recuperar um certificado para criar um certificado autoassinado.
- Nome do Tipo de Nó: Insira um nome exclusivo para o tipo de nó, como nt1.
Implante um modelo do ARM por meio de um dos métodos abaixo:
Experiência de modelo personalizado do portal do ARM: implantação personalizada – Microsoft Azure. Selecione a imagem a seguir para entrar no Azure e forneça seus próprios valores para os parâmetros de modelo, em seguida, implante o modelo.
Cmdlets do ARM PowerShell: New-AzResourceGroupDeployment (Az.Resources). Armazene os caminhos dos arquivos de parâmetro e de modelo do Resource Manager em variáveis e implante o modelo.
$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
Aguarde até que a implantação seja concluída com êxito.
Solução de problemas
- O erro a seguir é gerado quando o SFRP não tem acesso ao grupo de host. Examine as etapas de atribuição de função acima e verifique se a atribuição foi feita corretamente.
{ "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." }
- Se o grupo de host estiver em uma assinatura diferente dos clusters, o erro a seguir será relatado. Verifique se ambos estão na mesma assinatura.
{ "code": "BadRequest", "message": "Entity subscriptionId in resource reference id /subscriptions/[<Subs-Id>]/resourceGroups/[<ResGrp-Id>]/providers/Microsoft.Compute/hostGroups/[<HostGroup>] is invalid." }
- Se a Cota para o Grupo de Host não for suficiente, o seguinte erro será gerado:
{ "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)” }