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

Se aplica a: Azure Stack HCI, versiones 22H2 y 21H2

Advertencia

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

En este artículo, aprenderá a usar Windows PowerShell para crear un clúster hiperconvergido de Azure Stack HCI que use 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.

Nota:

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

Puede elegir entre dos tipos de clúster:

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

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

Nota

Los clústeres de Stretch no se admiten en una configuración de servidor único.

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

Para 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 obtener más información sobre los clústeres extendidos, consulte Información general sobre clústeres extendidos.

Para probar Azure Stack HCI con hardware mínimo o sin hardware adicional, puede consultar la Guía de evaluación de Azure Stack HCI. En esta guía, le guiaremos a través de la experiencia de Azure Stack HCI mediante la virtualización anidada dentro de una máquina virtual de Azure. O bien, pruebe el Tutorial: Creación de un laboratorio basado en VM para Azure Stack HCI para crear su propio entorno de laboratorio privado mediante la virtualización anidada en un servidor de su elección para implementar VM que ejecutan Azure Stack HCI para la agrupación en clústeres.

Antes de empezar

Antes de comenzar, asegúrese de que:

Uso de Windows PowerShell

Puede ejecutar PowerShell localmente en una sesión de RDP en un servidor host, o bien puede ejecutar PowerShell de forma remota desde un equipo de administración. En este artículo se trata 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 está administrando. 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 herramientas de administración remota del servidor (RSAT) y módulos de PowerShell para Hyper-V y 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 con los servidores

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

Abra PowerShell y use el nombre de dominio completo o la dirección IP del servidor al que desea conectarse. Se le solicitará 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 cómo hacer lo mismo:

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

Enter-PSSession -ComputerName $myServer1 -Credential $user

Sugerencia

Al ejecutar los comandos de PowerShell desde el equipo de administración, es posible que reciba un error como WinRM no puede procesar la solicitud. A fin de solucionar este problema, use PowerShell para agregar cada servidor a la lista de hosts de confianza del 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: Unión al dominio y adición de cuentas de dominio

En el paso anterior con el que se ha conectado a cada nodo de servidor, la cuenta <ServerName>\Administratorde administrador local .

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 cmdlet Enter-PSSession para conectarse a cada servidor y ejecute 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, agréguela al grupo Administradores local de cada servidor, o bien, agréguela al grupo que usa para los administradores. Para ello, puede utilizar el siguiente comando:

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

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

El siguiente paso es instalar los roles y las características de Windows necesarios en todos los servidores del clúster. Estos son los roles que se van a instalar:

  • BitLocker
  • Protocolo de puente del centro de datos
  • Clústeres de conmutación por error
  • Servidor de archivos
  • Módulo FS-Data-Deduplication
  • Hyper-V
  • PowerShell de Hyper-V
  • Módulo RSAT-Clustering-PowerShell
  • Módulo RSAT-AD-PowerShell
  • Network ATC
  • NetworkHUD
  • 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 se omite el parámetro -ComputerName 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", "NetworkHUD", "Storage-Replica" -IncludeAllSubFeature -IncludeManagementTools

Para ejecutar el comando en todos los servidores del clúster al mismo tiempo, use el siguiente script y modifique la lista de variables al principio para que se adapte a su 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", "NetworkHUD", "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 de 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: Preparación de las 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.

Nota

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, si no quiere borrar la unidad extraíble que use 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 cmdlet Test-Cluster 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 indique "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 del clúster se crea en pasos posteriores.

Nota

Si los servidores usan direcciones IP estáticas, modifique el siguiente comando 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 podría aparecer en Windows Admin Center, es posible que no esté disponible para conectarse todavía.

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 la resolución del clúster no se realiza correctamente después de un tiempo, en la mayoría de los casos podrá conectarse mediante el nombre de uno de los servidores agrupados, en lugar del nombre del clúster.

Paso 4: Configuración de las redes de host

Microsoft recomienda usar Network ATC para implementar las redes de host si ejecuta la versión 21H2 o posterior de Azure Stack HCI. 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 los 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 los mismos adaptadores físicos con nombre y que informan del estado como "Up" (Activo).

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

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

Rename-NetAdapter -Name oldName -NewName newName

Paso 4.2: Configuración de una intención

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

Ejecute este 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 devolver de inmediato un resultado después de una comprobación inicial.

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

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

Get-NetIntent -ClusterName $ClusterName

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

Get-NetIntentStatus -ClusterName $ClusterName -Name Cluster_ComputeStorage

Observe el parámetro de estado que muestra Provisioning (Aprovisionamiento), Validating (Validación), Success (Correcto), Failure (Error).

El estado debe mostrarse correctamente en unos minutos. Si el estado correcto no se produce o ve un error de parámetro de estado, compruebe si hay problemas en el visor de eventos.

Nota

En este momento, Network ATC no configura direcciones IP para ninguno de los adaptadores administrados. Una vez que Get-NetIntentStatus informa que está completaod, debe agregar direcciones IP a los adaptadores.

Paso 5: Configuración de 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.

Nota

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

Paso 5.1: Creación de 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 Get-ClusterFaultDomain cmdlet para comprobar que ambos sitios se crean 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"

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

Get-ClusterFaultDomain -CimSession $ClusterName

Paso 5.3: Establecimiento de 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. Este valor se puede definir en el nivel del sitio mediante el siguiente comando:

(Get-Cluster).PreferredSite = "Site1"

La especificación de un sitio preferido para clústeres extendidos presenta 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 de cuórum

    • Con un cuórum dinámico, primero se reduce la ponderación del sitio pasivo (replicado) para asegurarse de que el sitio preferido sobrevive si todas las demás cosas son iguales. Además, los nodos de servidor se eliminan del sitio pasivo primero durante el reagrupamiento 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 del 50 % de votos.

El sitio preferido también puede configurarse en el rol del clúster o en el nivel del 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: Configuración de clústeres extendidos 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 agrega Stretch como un tipo de intención de la versión 22H2. Para implementar una intención con la agrupación en clústeres stretch con Network ATC, ejecute el siguiente comando:

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

Una intención stretch también se puede combinar con otras intenciones, al implementar con Network ATC.

SiteOverrides

Según los pasos 5.1-5.3, puede agregar los sitios creados previamente a la intención stretch implementada 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 para siteOverride. Asegúrese de que la propiedad name del siteOverride tiene exactamente el mismo nombre que el nombre que tiene el sitio en ClusterFaultDomain. Un error 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, crea 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 se establecen de la manera deseada.

Por último, para agregar 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 cmdlet Enable-ClusterStorageSpacesDirect, que habilitará Espacios de almacenamiento directo y hará lo siguiente automáticamente:

  • Crear un grupo de almacenamiento: crea un bloque de almacenamiento para el clúster con un nombre similar a "Cluster1 Storage pool".

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

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

  • Configurar Espacios de almacenamiento directo cachés: si hay más de un tipo de medio (unidad) disponible para Espacios de almacenamiento directo, permite lo más rápido posible como dispositivos de caché (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 valor de FaultDomainAwarenessDefault es PhysicalDisk. Enable-ClusterStorageSpacesDirect el 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:

  • Compruebe si los sitios están configurados.
  • Determinar qué nodos están en qué sitios.
  • Determinar qué almacenamiento tiene disponible cada nodo.
  • Comprobar si la característica Réplica de almacenamiento está instalada en cada nodo.
  • Crear un bloque de almacenamiento para cada sitio e identificarlo por el nombre del sitio.
  • Crear volúmenes de datos y de registro en cada bloque de almacenamiento (uno por sitio).

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

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

Este es un ejemplo de deshabilitación de la memoria 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