Introducción a los hosts dedicados en los clústeres administrados de Service Fabric
Azure Dedicated Host es un servicio que proporciona servidores físicos (capaces de hospedar una o varias máquinas virtuales) dedicados a una suscripción de Azure. El servidor está dedicado a la organización y a las cargas de trabajo y la capacidad no se comparten con nadie más. Los hosts dedicados son los mismos servidores físicos que se usan en nuestros centros de datos y se proporcionan como un recurso. Puede aprovisionar hosts dedicados dentro de una región, zona de disponibilidad y dominio de error. Después, puede colocar las máquinas virtuales directamente en los hosts aprovisionados, en la configuración que más se ajuste a sus necesidades.
El uso de Azure Dedicated Host para nodos con el clúster administrado de Service Fabric (SFMC) tiene las siguientes ventajas:
- Aislamiento del hardware a nivel de host en el servidor físico. No se colocarán otras máquinas virtuales en los hosts. Los hosts dedicados se implementan en los mismos centros de datos y comparten la misma red y la misma infraestructura de almacenamiento subyacente que otros hosts no aislados.
- Control sobre los eventos de mantenimiento iniciados por la plataforma Azure. Aunque la mayoría de los eventos de mantenimiento tienen poco o ningún impacto en las máquinas virtuales, hay algunas cargas de trabajo confidenciales en las que cada segundo de pausa puede afectar. Con los hosts dedicados, puede optar por una ventana de mantenimiento para reducir el efecto en el servicio.
Puede elegir la SKU para las máquinas virtuales de hosts dedicados en función de los requisitos de la carga de trabajo. Para más información, consulte Máquinas virtuales en hosts dedicados.
El siguiente documento le guiará paso a paso en la incorporación de Azure Dedicated Host a un clúster administrado de Service Fabric con una plantilla de Azure Resource Manager.
Requisitos previos
Esta guía se basa en la guía de inicio rápido del clúster administrado: Implementación de un clúster administrado de Service Fabric mediante Azure Resource Manager
Antes de empezar:
- Si no tiene ninguna suscripción a Azure, cree una cuenta gratuita
- Recupere una plantilla de ARM de clúster administrado. Las plantillas de ejemplo de Resource Manager están disponibles en los ejemplos de Azure de GitHub. Estas plantillas se pueden usar como punto de partida para crear la plantilla de clúster. En esta guía se muestra cómo implementar un clúster de SKU estándar con dos tipos de nodo y doce nodos.
- El usuario debe tener permisos Microsoft.Authorization/roleAssignments/write en el grupo host, como administrador de acceso de usuario o propietario, para realizar asignaciones de roles en un grupo host. Para más información, consulte Asignación de roles de Azure mediante Azure Portal: RBAC de Azure.
Revisión de la plantilla
La plantilla usada en esta guía forma parte de Ejemplos de Azure: plantillas de clúster de Service Fabric.
Creación de un certificado de cliente
Los clústeres administrados de Service Fabric usan un certificado de cliente como clave para el control de acceso. Si ya tiene un certificado de cliente que le gustaría usar para el control de acceso al clúster, puede omitir este paso.
Si necesita crear un nuevo certificado de cliente, siga los pasos descritos en Establecimiento y recuperación de un certificado de Azure Key Vault. Tenga en cuenta que la huella digital del certificado, ya que será necesaria para implementar la plantilla en el paso siguiente.
Implementación de recursos de Dedicated Host y configuración del acceso al proveedor de recursos de Service Fabric
Cree un grupo host dedicado y agregue una asignación de roles al grupo host con la aplicación de proveedor de recursos de Service Fabric siguiendo los pasos que se indican a continuación. Esta asignación de roles permite al proveedor de recursos de Service Fabric implementar máquinas virtuales en hosts dedicados dentro del grupo host en el conjunto de escalado de máquinas virtuales del clúster administrado. Esta asignación es una acción única.
Obtenga el identificador de proveedor de SFRP y la entidad de servicio de la aplicación del proveedor de recursos de Service Fabric.
Login-AzAccount Select-AzSubscription -SubscriptionId <SubId> Get-AzADServicePrincipal -DisplayName "Azure Service Fabric Resource Provider"
Nota:
Asegúrese de que se encuentra en la suscripción correcta; el identificador de la entidad de seguridad cambia si la suscripción está en otro inquilino.
Cree un grupo host dedicado anclado a una zona de disponibilidad y cinco dominios de error mediante la plantilla de implementación de ARM de ejemplo para el grupo host dedicado proporcionada. El ejemplo garantizará que haya al menos un host dedicado por dominio de error.
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
Nota
- Asegúrese de elegir la familia de SKU correcta para el host dedicado que coincida con la que va a usar para la SKU de máquina virtual del tipo de nodo subyacente. Para más información, consulte Máquinas virtuales en hosts dedicados.
- Cada dominio de error necesita que se coloque un host dedicado en él y los clústeres administrados de Service Fabric requieren cinco dominios de error. Por lo tanto, en cada grupo host dedicado debe haber al menos cinco hosts dedicados.
La plantilla de implementación de ARM de ejemplo para el grupo host dedicado que se usó en el paso anterior también agrega una asignación de roles al grupo host con acceso de colaborador. Para más información sobre los roles de Azure, consulte Roles integrados de Azure: RBAC de Azure. Esta asignación de roles se define en la sección de recursos de la plantilla con el identificador de entidad de seguridad que viene determinado desde el primer paso y un identificador de definición de rol.
"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')]" } } ]
Por otra parte, también puede agregar la asignación de roles con PowerShell mediante el identificador de entidad de seguridad que viene determinado desde el primer paso y el nombre de definición de roles como "Colaborador" cuando corresponda.
New-AzRoleAssignment -PrincipalId "<Service Fabric Resource Provider ID>" -RoleDefinitionName "Contributor" -Scope "<Host Group Id>"
Implementación de un clúster administrado de Service Fabric
Cree un clúster administrado de Azure Service Fabric con los tipos de nodo configurados para hacer referencia al valor resourceId del grupo host dedicado. El tipo de nodo debe anclarse a la misma zona de disponibilidad que el grupo host.
Elija la plantilla de la plantilla de ejemplo de clúster de Service Fabric para el host dedicado, que incluye la especificación para la compatibilidad con Dedicated Host.
Proporcione sus propios valores para los siguientes parámetros de plantilla:
- Suscripción: seleccione la misma suscripción de Azure que la del grupo host.
- Grupo de recursos: Seleccione Crear nuevo. Escriba un nombre único para el grupo de recursos, como myResourceGroup, y elija Aceptar.
- Ubicación: seleccione la misma ubicación que la del grupo host.
- Nombre del clúster: escriba un nombre único para el clúster, como mysfcluster.
- Nombre de usuario administrador: escriba un nombre para el administrador que se va a usar para RDP en las máquinas virtuales subyacentes del clúster.
- Contraseña de administrador: escriba una contraseña para el administrador que se va a usar para RDP en las máquinas virtuales subyacentes del clúster.
- Huella digital de certificado de cliente: Proporcione la huella digital del certificado de cliente que quiere usar para obtener acceso al clúster. Si no tiene un certificado, siga los pasos que se indican en Establecimiento y recuperación de un certificado para crear un certificado autofirmado.
- Nombre del tipo de nodo: Escriba un nombre único para el tipo de nodo, como nt1.
Implemente una plantilla de ARM mediante uno de los métodos siguientes:
Experiencia de plantilla personalizada del portal de ARM: implementación personalizada: Microsoft Azure. Seleccione la siguiente imagen para iniciar sesión en Azure y proporcione sus propios valores para los parámetros de plantilla y, a continuación, implemente la plantilla.
Cmdlets de PowerShell de ARM: New-AzResourceGroupDeployment (Az.Resources). Almacene las rutas de acceso de la plantilla de ARM y los archivos de parámetro en las variables y, a continuación, implemente la plantilla.
$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
Espere a que la implementación se complete con éxito.
Solución de problemas
- El siguiente error se produce cuando SFRP no tiene acceso al grupo host. Revise los pasos de asignación de roles anteriores y asegúrese de que la asignación se realiza correctamente.
{ "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." }
- Si el grupo host está en una suscripción diferente a la de los clústeres, se notifica el siguiente error. Asegúrese de que ambos están en la misma suscripción.
{ "code": "BadRequest", "message": "Entity subscriptionId in resource reference id /subscriptions/[<Subs-Id>]/resourceGroups/[<ResGrp-Id>]/providers/Microsoft.Compute/hostGroups/[<HostGroup>] is invalid." }
- Si la cuota del grupo host no es suficiente, se produce el siguiente error:
{ "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)” }