Creación de un clúster de Azure Stack HCI mediante Windows PowerShell

Se aplica a: Azure Stack HCI, versión 22H2

Important

Azure Stack HCI ahora forma parte de Azure Local. Sin embargo, las versiones anteriores de Azure Stack HCI, por ejemplo 22H2 seguirán haciendo referencia a Azure Stack HCI y no reflejarán el cambio de nombre. Obtenga más información.

Warning

Las instrucciones de implementación proporcionadas en este artículo se aplican a una versión anterior, Azure Stack HCI, versión 22H2. Para las nuevas implementaciones, se recomienda usar la versión más reciente disponible con carácter general de Azure Local, consulte Acerca de la implementación de Azure Local.

En este artículo, aprenderá a usar Windows PowerShell para crear un clúster hiperconvergido de HCI Azure Stack que usa Espacios de almacenamiento directo. Si prefiere usar el Asistente para la creación de clústeres en Windows Admin Center para crear el clúster, consulte Creación del clúster con Windows Admin Center.

Note

Si va a realizar una instalación de servidor único de Azure Stack HCI 21H2, use PowerShell para crear el clúster.

Tiene una opción entre dos tipos de clúster:

  • Clúster estándar con uno o dos nodos de servidor, todos residiendo en un único sitio.
  • Clúster extendido con al menos cuatro nodos de servidor que abarcan dos sitios, con dos nodos por sitio.

Para el escenario de servidor único, complete las mismas instrucciones para el servidor único.

Note

Los clústeres stretch no se admiten en una sola configuración de servidor.

En este artículo, se crea un clúster de ejemplo denominado Cluster1 compuesto por cuatro nodos de servidor denominados Server1, Server2, Server3 y Server4.

En el escenario de clúster extendido, usamos ClusterS1 como nombre y usamos los mismos cuatro nodos de servidor extendidos entre sitios Site1 y Site2.

Para más información sobre los clústeres extendidos, consulte Información general sobre los clústeres extendidos.

Antes de empezar

Antes de empezar, asegúrese de que:

Uso de Windows PowerShell

Puede ejecutar PowerShell localmente en una sesión de RDP en un servidor host o ejecutar PowerShell de forma remota desde un equipo de administración. En este artículo se describe la opción remota.

Al ejecutar PowerShell desde un equipo de administración, incluya el -Name parámetro o -Cluster con el nombre del servidor o clúster que administra. Además, es posible que tenga que especificar el nombre de dominio completo (FQDN) al usar el -ComputerName parámetro para un nodo de servidor.

Necesita los cmdlets de las Herramientas de administración remota del servidor (RSAT) y los módulos de PowerShell para Hyper-V y los clústeres de conmutación por error. Si los cmdlets y módulos aún no están disponibles en la sesión de PowerShell en el equipo de administración, puede agregarlos mediante el siguiente comando: Add-WindowsFeature RSAT-Clustering-PowerShell.

Paso 1: Configurar los servidores

En primer lugar, conéctese a cada uno de los servidores, únase a un dominio (el mismo dominio en el que se encuentra el equipo de administración) e instale los roles y características necesarios.

Paso 1.1: Conexión a los servidores

Para conectarse a los servidores, primero debe tener conectividad de red, unirse al mismo dominio o a un dominio de plena confianza y tener permisos administrativos locales para los servidores.

Abra PowerShell y use el nombre de dominio completo o la dirección IP del servidor al que desea conectarse. Se le pedirá una contraseña después de ejecutar el siguiente comando en cada servidor.

En este ejemplo, se supone que los servidores se denominan Server1, Server2, Server3 y Server4:

Enter-PSSession -ComputerName "Server1" -Credential "Server1\Administrator"

Este es otro ejemplo de hacer lo mismo:

$myServer1 = "Server1"
$user = "$myServer1\Administrator"

Enter-PSSession -ComputerName $myServer1 -Credential $user

Tip

Al ejecutar comandos de PowerShell desde el equipo de administración, es posible que reciba un error como WinRM no puede procesar la solicitud. Para corregirlo, use PowerShell para agregar cada servidor a la lista Hosts de confianza en el equipo de administración. Esta lista admite caracteres comodín, como Server* por ejemplo.

Set-Item WSMAN:\Localhost\Client\TrustedHosts -Value Server1 -Force

Para ver la lista de hosts de confianza, escriba Get-Item WSMAN:\Localhost\Client\TrustedHosts.

Para vaciar la lista, escriba Clear-Item WSMAN:\Localhost\Client\TrustedHost.

Paso 1.2: Unirse al dominio y agregar cuentas de dominio

En el paso anterior, se conectó a cada nodo de servidor con la cuenta de administrador local <ServerName>\Administrator.

Para continuar, debe unir los servidores a un dominio y usar la cuenta de dominio que se encuentra en el grupo administradores local en cada servidor.

Use el Enter-PSSession cmdlet para conectarse a cada servidor y ejecutar el siguiente cmdlet, sustituyendo el nombre del servidor, el nombre de dominio y las credenciales de dominio:

Add-Computer -NewName "Server1" -DomainName "contoso.com" -Credential "Contoso\User" -Restart -Force  

Si la cuenta de administrador no es miembro del grupo Administradores de dominio, agregue la cuenta de administrador al grupo Administradores local en cada servidor o, mejor aún, agregue el grupo que usa para los administradores. Puede usar el siguiente comando para hacerlo:

Add-LocalGroupMember -Group "Administrators" -Member "king@contoso.local"

Paso 1.3: Instalación de roles y características

El siguiente paso consiste en instalar los roles y características necesarios Windows en cada servidor del clúster. Estos son los roles a instalar:

  • BitLocker
  • Data Center Bridging
  • Clústeres de conmutación por error
  • Servidor de archivos
  • Módulo FS-Data-Deduplication
  • Hyper-V
  • Hyper-V PowerShell
  • Módulo de RSAT-Clustering-PowerShell
  • Módulo RSAT-AD-PowerShell
  • NetworkATC
  • Límite de ancho de banda SMB
  • Réplica de almacenamiento (para clústeres extendidos)

Use el siguiente comando para cada servidor (si está conectado a través de Escritorio remoto omitir el -ComputerName parámetro aquí y en comandos posteriores):

Install-WindowsFeature -ComputerName "Server1" -Name "BitLocker", "Data-Center-Bridging", "Failover-Clustering", "FS-FileServer", "FS-Data-Deduplication", "FS-SMBBW", "Hyper-V", "Hyper-V-PowerShell", "RSAT-AD-Powershell", "RSAT-Clustering-PowerShell", "NetworkATC", "Storage-Replica" -IncludeAllSubFeature -IncludeManagementTools

Para ejecutar el comando en todos los servidores del clúster al mismo tiempo, use el siguiente script, modificando la lista de variables al principio para ajustarse al entorno:

# Fill in these variables with your values
$ServerList = "Server1", "Server2", "Server3", "Server4"
$FeatureList = "BitLocker", "Data-Center-Bridging", "Failover-Clustering", "FS-FileServer", "FS-Data-Deduplication", "Hyper-V", "Hyper-V-PowerShell", "RSAT-AD-Powershell", "RSAT-Clustering-PowerShell", "NetworkATC", "FS-SMBBW", "Storage-Replica"

# This part runs the Install-WindowsFeature cmdlet on all servers in $ServerList, passing the list of features in $FeatureList.
Invoke-Command ($ServerList) {
    Install-WindowsFeature -Name $Using:Featurelist -IncludeAllSubFeature -IncludeManagementTools
}

A continuación, reinicie todos los servidores:

$ServerList = "Server1", "Server2", "Server3", "Server4"
Restart-Computer -ComputerName $ServerList -WSManAuthentication Kerberos

Paso 2: Preparación para la configuración del clúster

A continuación, compruebe que los servidores están listos para la agrupación en clústeres.

Como comprobación de integridad, considere la posibilidad de ejecutar los siguientes comandos para asegurarse de que los servidores aún no pertenecen a un clúster:

Use Get-ClusterNode para mostrar todos los nodos:

Get-ClusterNode

Use Get-ClusterResource para mostrar todos los nodos de clúster:

Get-ClusterResource

Use Get-ClusterNetwork para mostrar todas las redes de clúster:

Get-ClusterNetwork

Paso 2.1: Preparar unidades

Antes de habilitar Espacios de almacenamiento directo, asegúrese de que las unidades permanentes estén vacías. Ejecute el siguiente script para quitar las particiones antiguas y otros datos.

Note

Excluya del script las unidades extraíbles conectadas a un nodo de servidor. Si ejecuta este script localmente desde un nodo de servidor, por ejemplo, no desea borrar la unidad extraíble que podría usar para implementar el clúster.

# Fill in these variables with your values
$ServerList = "Server1", "Server2", "Server3", "Server4"

Invoke-Command ($ServerList) {
    Update-StorageProviderCache
    Get-StoragePool | ? IsPrimordial -eq $false | Set-StoragePool -IsReadOnly:$false -ErrorAction SilentlyContinue
    Get-StoragePool | ? IsPrimordial -eq $false | Get-VirtualDisk | Remove-VirtualDisk -Confirm:$false -ErrorAction SilentlyContinue
    Get-StoragePool | ? IsPrimordial -eq $false | Remove-StoragePool -Confirm:$false -ErrorAction SilentlyContinue
    Get-PhysicalDisk | Reset-PhysicalDisk -ErrorAction SilentlyContinue
    Get-Disk | ? Number -ne $null | ? IsBoot -ne $true | ? IsSystem -ne $true | ? PartitionStyle -ne RAW | % {
        $_ | Set-Disk -isoffline:$false
        $_ | Set-Disk -isreadonly:$false
        $_ | Clear-Disk -RemoveData -RemoveOEM -Confirm:$false
        $_ | Set-Disk -isreadonly:$true
        $_ | Set-Disk -isoffline:$true
    }
    Get-Disk | Where Number -Ne $Null | Where IsBoot -Ne $True | Where IsSystem -Ne $True | Where PartitionStyle -Eq RAW | Group -NoElement -Property FriendlyName
} | Sort -Property PsComputerName, Count

Paso 2.2: Prueba de la configuración del clúster

En este paso, asegúrese de que los nodos de servidor están configurados correctamente para crear un clúster. El Test-Cluster cmdlet se usa para ejecutar pruebas para comprobar que la configuración es adecuada para funcionar como un clúster hiperconvergido. En el ejemplo siguiente se usa el -Include parámetro , con las categorías específicas de pruebas especificadas para asegurarse de que las pruebas correctas se incluyen en la validación.

Test-Cluster -Node $ServerList -Include "Storage Spaces Direct", "Inventory", "Network", "System Configuration"

Paso 3: Creación del clúster

Ya está listo para crear un clúster con los nodos de servidor que validó en los pasos anteriores.

Al crear el clúster, es posible que reciba una advertencia que indica "There were issues while creating the clustered role that may prevent it from starting. For more information, view the report file below." : puede omitir esta advertencia de forma segura. Esta advertencia se debe a que no hay discos disponibles para el testigo del clúster. El testigo de clúster se crea en pasos posteriores.

Note

Si los servidores usan direcciones IP estáticas, modifique el comando siguiente para reflejar la dirección IP estática agregando el parámetro siguiente y especificando la dirección IP: -StaticAddress <X.X.X.X>;.

$ClusterName="cluster1" 
New-Cluster -Name $ClusterName –Node $ServerList –nostorage

Una vez creado el clúster, el nombre del clúster puede tardar algún tiempo en replicarse a través de DNS en el dominio, especialmente si los servidores de grupo de trabajo se agregan recientemente a Active Directory. Aunque el clúster puede mostrarse en Windows Admin Center, es posible que aún no esté disponible para conectarse.

Una buena comprobación para asegurarse de que todos los recursos del clúster están en línea:

Get-Cluster -Name $ClusterName | Get-ClusterResource

Si el clúster no se resuelve correctamente tras un tiempo, en la mayoría de los casos puede conectarse usando el nombre de uno de los servidores del clúster en lugar del nombre del clúster.

Paso 4: Configuración de redes de host

Microsoft recomienda usar Network ATC para implementar redes de host si ejecuta Azure Stack HCI versión 21H2 o posterior. De lo contrario, consulte Requisitos de red de host para obtener información y requisitos específicos.

Network ATC puede automatizar la implementación de la configuración de red prevista si especifica uno o varios tipos de intención para los adaptadores. Para obtener más información sobre los tipos de intención específicos, consulte: Tipos de tráfico de red.

Paso 4.1: Revisión de adaptadores físicos

En uno de los nodos del clúster, ejecute Get-NetAdapter para revisar los adaptadores físicos. Asegúrese de que cada nodo del clúster tenga adaptadores físicos con el mismo nombre y que muestren el estado como "activo".

Get-NetAdapter -Name pNIC01, pNIC02 -CimSession $ClusterName | Select Name, PSComputerName

Si un nombre de adaptador físico varía entre los nodos del clúster, puede cambiarle el nombre mediante Rename-NetAdapter.

Rename-NetAdapter -Name oldName -NewName newName

Paso 4.2: Configurar una intención

En este ejemplo, se crea una intención que especifica la intención de proceso y almacenamiento. Consulte Simplificación de las redes de host con Network ATC para obtener más ejemplos de intenciones.

Ejecute el siguiente comando para agregar los tipos de intención de almacenamiento y proceso a pNIC01 y pNIC02. Tenga en cuenta que especificamos el -ClusterName parámetro .

Add-NetIntent -Name Cluster_ComputeStorage -Compute -Storage -ClusterName $ClusterName -AdapterName pNIC01, pNIC02

El comando debería retornar inmediatamente tras una comprobación inicial.

Paso 4.3: Validación de la implementación de intenciones

Ejecute el Get-NetIntent cmdlet para ver la intención del clúster. Si tiene más de una intención, puede especificar el Name parámetro para ver solo los detalles de una intención específica.

Get-NetIntent -ClusterName $ClusterName

Para ver el estado de aprovisionamiento de la intención, ejecute el Get-NetIntentStatus comando :

Get-NetIntentStatus -ClusterName $ClusterName -Name Cluster_ComputeStorage

Tenga en cuenta el parámetro de estado que muestra: Aprovisionando, Validando, Correcto, Error.

El estado debería mostrarse como correcto en unos minutos. Si no aparece el estado de éxito o ve un error en el parámetro de estado, compruebe si hay problemas en el Visor de eventos.

Note

En este momento, Network ATC no configura direcciones IP para ninguno de sus adaptadores administrados. Una vez que Get-NetIntentStatus muestre el estado «Completado», debe añadir direcciones IP a los adaptadores.

Paso 5: Configurar sitios (clúster extendido)

Esta tarea solo se aplica si va a crear un clúster extendido entre dos sitios con al menos dos servidores en cada sitio.

Note

Si ha configurado Active Directory sitios y servicios de antemano, no es necesario crear los sitios manualmente, como se describe en la sección siguiente.

Paso 5.1: Crear sitios

En el siguiente cmdlet, FaultDomain es simplemente otro nombre para un sitio. En este ejemplo se usa "ClusterS1" como nombre del clúster extendido.

New-ClusterFaultDomain -CimSession $ClusterName -FaultDomainType Site -Name "Site1"
New-ClusterFaultDomain -CimSession $ClusterName -FaultDomainType Site -Name "Site2"

Use el cmdlet Get-ClusterFaultDomain para comprobar que ambos sitios se han creado para el clúster.

Get-ClusterFaultDomain -CimSession $ClusterName

Paso 5.2: Asignación de nodos de servidor

A continuación, asignamos los cuatro nodos de servidor a sus respectivos sitios. En el ejemplo siguiente, Server1 y Server2 se asignan a Site1, mientras que Server3 y Server4 se asignan a Site2.

Set-ClusterFaultDomain -CimSession $ClusterName -Name "Server1", "Server2" -Parent "Site1"
Set-ClusterFaultDomain -CimSession $ClusterName -Name "Server3", "Server4" -Parent "Site2"

Con el Get-ClusterFaultDomain cmdlet , compruebe que los nodos están en los sitios correctos.

Get-ClusterFaultDomain -CimSession $ClusterName

Paso 5.3: Establecer un sitio preferido

También puede definir un sitio preferido global, lo que significa que los recursos y grupos especificados deben ejecutarse en el sitio preferido. Esta configuración se puede definir en el nivel de sitio mediante el siguiente comando:

(Get-Cluster).PreferredSite = "Site1"

La especificación de un sitio preferido para clústeres extendidos tiene las siguientes ventajas:

  • Arranque en frío: durante un arranque en frío, las máquinas virtuales se colocan en el sitio preferido.

  • Votación por quórum

    • Con un cuórum dinámico, la ponderación se reduce del sitio pasivo (replicado) primero para asegurarse de que el sitio preferido sobrevive si todas las demás cosas son iguales. Además, los nodos de servidor se eliminan primero del sitio pasivo durante la reagrupación después de eventos como errores de conectividad de red asimétrica.

    • Durante una división de cuórum de dos sitios, si no se puede establecer contacto con el testigo del clúster, el sitio preferido se elige automáticamente para ganar. A continuación, los nodos de servidor del sitio pasivo abandonan la pertenencia al clúster, lo que permite al clúster sobrevivir a una pérdida simultánea de 50% de votos.

El sitio preferido también se puede configurar a nivel de rol del clúster o de grupo. En este caso, se puede configurar un sitio preferido diferente para cada grupo de máquinas virtuales, lo que permite que un sitio esté activo y preferido para máquinas virtuales específicas.

Paso 5.4: Configurar el clúster extendido con Network ATC

Después de la versión 22H2, puede usar Network ATC para configurar la agrupación en clústeres stretch. Network ATC añade Stretch como tipo de intención a partir de la versión 22H2. Para implementar una intención con clúster extendido mediante Network ATC, ejecute el siguiente comando:

Add-NetIntent -Name StretchIntent -Stretch -AdapterName "pNIC01", "pNIC02"

Una intención de extensión también se puede combinar con otras intenciones cuando se implementa con Network ATC.

SiteOverrides

Basándose en los pasos 5.1-5.3, puede agregar los sitios creados previamente a su stretch intent desplegado con Network ATC. Network ATC controla esto mediante SiteOverrides. Para crear un SiteOverride, ejecute:

 $siteOverride = New-NetIntentSiteOverrides

Una vez creado el siteOverride, puede establecer cualquier propiedad del siteOverride. Asegúrese de que la propiedad name del siteOverride tiene exactamente el mismo nombre, que el nombre que tiene el sitio en ClusterFaultDomain. Una falta de coincidencia de nombres entre ClusterFaultDomain y siteOverride da como resultado que no se aplique siteOverride.

Las propiedades que puede establecer para un siteOverride determinado son: Name, StorageVlan y StretchVlan. Por ejemplo, creará 2 siteOverrides para los dos sitios: site1 y site2 mediante:

$siteOverride1 = New-NetIntentSiteOverrides
$siteoverride1.Name = "site1"
$siteOverride1.StorageVLAN = 711
$siteOverride1.StretchVLAN = 25

$siteOverride2 = New-NetIntentSiteOverrides
$siteOverride2.Name = "site2"
$siteOverride2.StorageVLAN = 712
$siteOverride2.StretchVLAN = 26

Puede ejecutar $siteOverride1, $siteOverride2 en la ventana de PowerShell para asegurarse de que todas las propiedades están establecidas de la manera deseada.

Por último, para añadir uno o varios siteOverrides a la intención, ejecute:

Add-NetIntent -Name StretchIntent -Stretch -AdapterName "pNIC01" , "pNIC02" -SiteOverrides $siteOverride1, $siteOverride2

Paso 6: Habilitar Espacios de almacenamiento directo

Después de crear el clúster, use el Enable-ClusterStorageSpacesDirect cmdlet , que habilitará Espacios de almacenamiento directo y hará lo siguiente automáticamente:

  • Cree un grupo de almacenamiento: Crea un grupo de almacenamiento para el clúster que tiene un nombre como "Cluster1 Storage Pool".

  • Cree un disco del historial de rendimiento del clúster: Crea un disco virtual del historial de rendimiento del clúster en el bloque de almacenamiento.

  • Cree volúmenes de datos y de registro: Crea un volumen de datos y un volumen de registro en el bloque de almacenamiento.

  • Configurar la caché de Espacios de almacenamiento directo: Si hay más de un tipo de medio (unidad) disponible para Espacios de almacenamiento directo, utiliza el tipo más rápido como dispositivos de caché (para lectura y escritura en la mayoría de los casos).

  • Crear niveles: Crea dos niveles como niveles predeterminados. Uno se denomina "Capacity" y, el otro, "Performance". El cmdlet analiza los dispositivos y configura cada nivel con la combinación de tipos de dispositivo y resistencia.

Para el escenario de servidor único, el único FaultDomainAwarenessDefault es PhysicalDisk. Enable-ClusterStorageSpacesDirect cmdlet detecta un único servidor y configura automáticamente FaultDomainAwarenessDefault como physicalDisk durante la habilitación.

En el caso de los clústeres extendidos, el Enable-ClusterStorageSpacesDirect cmdlet también hará lo siguiente:

  • Comprobar si los sitios están configurados
  • Determinar qué nodos están en qué sitios
  • Determina qué almacenamiento tiene cada nodo disponible
  • Comprueba si la característica Réplica de almacenamiento está instalada en cada nodo.
  • Crea un grupo de almacenamiento para cada sitio e lo identifica con el nombre del sitio.
  • Crea volúmenes de datos y de registro en cada grupo de almacenamiento: uno por sitio

El comando siguiente habilita Espacios de almacenamiento directo en un clúster de varios nodos. También puede especificar un nombre descriptivo para un grupo de almacenamiento, como se muestra aquí:

Enable-ClusterStorageSpacesDirect -PoolFriendlyName "$ClusterName Storage Pool" -CimSession $ClusterName

Este es un ejemplo de deshabilitación de la caché de almacenamiento en un clúster de un solo nodo:

Enable-ClusterStorageSpacesDirect -CacheState Disabled

Para ver los grupos de almacenamiento, use el siguiente comando:

Get-StoragePool -CimSession $ClusterName

Después de crear el clúster

Ahora que se crea el clúster, hay otras tareas importantes que debe completar:

Pasos siguientes