Amazon Elastic Compute Cloud
Guía del usuario de instancias de Windows

Tutorial: Implementar espacios de almacenamiento directo (S2D) en Amazon EC2

Los espacios de almacenamiento directo (S2D) tienen una estructura de almacenamiento definida por software altamente escalable que permite a los usuarios agrupar el almacenamiento local con características de Windows Server 2016. S2D es una alternativa a las matrices SAN o NAS tradicionales. Utiliza características y herramientas integradas de Windows para configurar un almacenamiento de alta disponibilidad que cruza múltiples nodos en un clúster. Para obtener más información, consulte Espacios de almacenamiento directo en la documentación de Microsoft.

En el siguiente diagrama se muestra la arquitectura de S2D en Amazon EC2 Windows.


			
			Espacios de almacenamiento directo en Amazon EC2

Nivel de habilidades

Comprensión básica de la computación de Windows Server, así como de la manera de crear y administrar las instancias Amazon EC2 Windows incorporadas al dominio en una VPC, si es necesario. Tener conocimientos de Herramientas de AWS para Windows PowerShell y de los clústeres de conmutación por error de Windows puede ser útil pero no es necesario.

En este tutorial aprenderá a

  • Aprovisionar un clúster de almacenamiento de alta disponibilidad empleando Espacios de almacenamiento directo (S2D).

  • Aprovisionar un volumen compartido de clúster (CSV) tolerante a errores en el clúster.

Antes de empezar

  • Si no lo ha hecho todavía, abra https://aws.amazon.com/ y cree una cuenta de AWS.

  • Cree una nube virtual privada (VPC) con una subred pública y dos subredes privadas para las instancias. Deberá configurarse una tercera subred privada para AWS Directory Service.

  • Seleccione una de las últimas imágenes de máquina de Amazon (AMI) para Windows Server 2016. Puede utilizar esta AMI tal cual o como base para su propia AMI personalizada. AWS recomienda utilizar la última AMI pública de EC2 Windows Server 2016.

  • Cree un directorio AWS Directory Service. Ya no es un requisito para habilitar la característica Clústeres de conmutación por error en Windows Server 2016. Sin embargo, este tutorial presupone que las instancias se incorporarán a un dominio Active Directory, ya sea en EC2 o en AWS Managed Active Directory. Para obtener más información, consulte Introducción a AWS Directory Service en la AWS Directory Service Administration Guide.

  • Instale y configure Herramientas de AWS para Windows PowerShell en el equipo. Para obtener más información, consulte la Guía del usuario de Herramientas de AWS para Windows PowerShell.

Consideraciones importantes

  • Detener las instancias con Volúmenes de almacén de instancias puede ocasionar la pérdida de datos si no se ha realizado una copia de seguridad de los mismos o se han duplicado. Los datos en cualquier almacén de instancias se conservan solo durante el ciclo de vida de la instancia asociada. Si una instancia se reinicia (de manera intencionada o no intencionada), los datos del almacén de instancias se conservan. Sin embargo, los datos del almacén de instancias se pierden en las siguientes circunstancias:

    • Si falla la unidad de disco subyacente.

    • Si se detiene la instancia.

    • Si la instancia termina.

  • Detener demasiadas instancias de un clúster puede ocasionar la pérdida de datos si no se ha realizado una copia de seguridad de los mismos o se han duplicado. Al utilizar S2D en AWS, como con cualquier clúster, la pérdida de más nodos de los permitidos por la tolerancia a errores provocará que se pierdan datos. Uno de los mayores riesgos de los clústeres es la pérdida de todos los nodos. La redundancia de clúster protege de cualquier error en una única instancia (o en más si la tolerancia a errores lo admite). Sin embargo, puede perder datos si el número de instancias con unidades de disco erróneas en un clúster supera la tolerancia a errores. También puede perder datos si el número de instancias detenidas o terminadas supera la tolerancia a errores. Para reducir el riesgo, limite el número de personas o sistemas que pueden detener o terminar instancias en el clúster. Para reducir el riesgo de terminar instancias del nodo del clúster, habilite la protección frente a la terminación en dichas instancias. También puede configurar políticas de IAM para permitir que los usuarios solo reinicien nodos desde la consola de AWS pero no detenerlos.

  • S2D no protege frente a los errores de redes o de centro de datos que afectan a todo el clúster. Para reducir el riesgo, considere el uso de hosts dedicados para garantizar que las instancias no se coloquen en la misma pila.

El siguiente diagrama muestra la arquitectura de un clúster EC2 Windows S2D de dos nodos con un testigo de recursos compartidos alojado en una máquina bastión existente en AWS.


			
			Clúster de S2D de EC2 de dos nodos

Paso 1: Lanzamiento e instancias incorporadas al dominio

Todas las instancias Nitro admiten los espacios de almacenamiento directo empleando EBS y/o NVMe. Todas las instancias basadas en Xen de la generación actual admiten Storage Spaces Direct si se instala un controlador PV de AWS con la versión 8.2.3 o posterior. El mejor rendimiento del almacenamiento puede conseguirse con instancias I3 porque proporcionan almacén de instancias local con NVMe y alto rendimiento de la red. La configuración de S2D en Amazon EC2 requiere un clúster de un mínimo de 2 y un máximo de 16 instancias. Estas instancias deben tener al menos dos dispositivos NVMe cada una con conexiones de red de alto rendimiento entre nodos y deben ejecutar Windows Server 2016. Para obtener más información, consulte Requisitos de hardware de Espacios de almacenamiento directo en la documentación de Microsoft.

Recomendamos el tamaño de instancia I3 porque cumple los requisitos de hardware de S2D e incluye los dispositivos de almacén de instancias más grandes y rápidos disponibles. También incluye redes mejoradas, lo que maximiza los recursos disponibles para S2D por instancia. Puede utilizar tipos de instancia M5D y R5D, con al menos 2 discos NVMe, pero se utilizarán discos de almacén de instancias locales como discos de almacenamiento en caché para el clúster de espacios de almacenamiento directo y deberán añadirse al menos 2 volúmenes de EBS a cada instancia para proporcionar almacenamiento de capacidad.

Le recomendamos que lance tres instancias para aprovechar la tolerancia a errores de S2D de reflejos triples, que permite realizar el mantenimiento en un único nodo mientras conserva la tolerancia a errores en el clúster si se configura un testigo como el testigo de recursos compartidos. También puede optar por la solución más barata de reflejos dobles con dos instancias, pero necesitará un testigo y no se conservará la alta disponibilidad durante el mantenimiento en un nodo de clúster.

Implementaremos una arquitectura de clúster de dos nodos con un testigo de recursos compartidos alojado en una máquina bastión que actúe como nuestra estación de trabajo administrativa. Cada nodo de clúster debe implementarse en una subred distinta. Esta arquitectura se implementará en una única zona de disponibilidad porque Microsoft no admite actualmente la extensión del clúster con espacios de almacenamiento directo. Sin embargo, el rendimiento de una única zona de disponibilidad y de varias zonas de disponibilidad es exactamente igual debido al diseño de baja latencia y ancho de banda elevado de las zonas de disponibilidad.

Para lanzar instancias para el clúster

  1. Desde la consola de Amazon EC2 o el cmdlet New-EC2Instance, lance dos instancias i3.8xlarge para crear el clúster y una instancia t2.medium como estación de trabajo administrativa y para alojar el testigo de recursos compartidos. Use una subred distinta para cada instancia. Si quiere seguir una lógica para la asignación de la IP, defina la dirección IP privada principal al crear la subred. En este caso, deberá definir una segunda dirección IP privada para cada nodo de clúster porque la IP secundaria se asignará a la IP virtual del clúster más adelante.

    Utilice el comando New-EC2Instance para crear una instancia con PowerShell.

    New-EC2Instance -ImageId ami-c49c0dac -MinCount 1 -MaxCount 1 -KeyName myPSKeyPair -SecurityGroupId mySGID -InstanceType i3.8xlarge -SubnetId mysubnetID

    Para crear un directorio AD en AWS con PowerShell, use el comando New-DSMicrosoftAD (o consulte Crear su directorio de AWS Managed Microsoft AD en AWS).

    New-DSMicrosoftAD -Name corp.example.com –ShortName corp –Password P@ssw0rd –Description “AWS DS Managed” - VpcSettings_VpcId vpc-xxxxxxxx -VpcSettings_SubnetId subnet-xxxxxxxx, subnet-xxxxxxxx

    Utilizamos la siguiente configuración de la interfaz de red S2D-node1:

    
	    				
	    				Configuración de la interfaz de red S2D-node1

    nota

    Cada rol implementado en este clúster, como un servidor de archivos o instancia de clúster de conmutación por error de SQL, requiere direcciones IP secundarias adicionales en cada nodo. A excepción del rol Servidor de archivos de escalado horizontal, que no requiere ningún punto de acceso.

    Utilizamos la siguiente configuración:

    Nombre del servidor NetBIOS Dirección IP Subredes
                       

    S2D-Node1

                   
                       

    172.16.1.199 (principal)

    172.16.1.200 (secundaria; se utilizará para la IP virtual del clúster)

    172.16.1.201 (secundaria; se utilizará más adelante para un rol como SQL FCI)

                   

    AZ1 (por ejemplo, eu-west-1a)

    – subred privada 1

                       

    S2D-Node2

                   
                       

    172.16.3.199 (principal)

    172.16.3.200 (secundaria; se utilizará para la IP virtual del clúster)

    172.16.3.201 (secundaria; se utilizará más adelante para un rol como SQL FCI)

                   

    AZ1 (por ejemplo, eu-west-1a)

    – subred privada 2

    ADM01

    No especificada

    AZ1 (por ejemplo, eu-west-1a)

    – subred pública

  2. Puede utilizar una incorporación al dominio fluida durante la creación al incorporar instancias al dominio. Si quiere incorporarlas al dominio después de lanzarlas, utilice el comando Add-Computer. Le recomendamos que utilice AWS Administrador de sistemas y AWS Directory Service para incorporar instancias EC2 de forma fluida al dominio.

    Los pasos restantes de este tutorial deben ejecutarse en una cuenta de dominio con privilegios de administrador local en cada instancia. Renombre las instancias antes de pasar a la configuración. Compruebe que los grupos de seguridad y los firewalls de Windows estén bien configurados para permitir la conexión remota de PowerShell y las comunicaciones del clúster en estos nodos.

Paso 2: Instalar y configurar los requisitos previos de las instancias

S2D requiere las características Servicios de archivos y Clústeres de conmutación por error de Windows, y una interfaz de red de al menos diez Gbps. Le recomendamos que configure SMB para utilizar SMB Multichannel, con recuentos de conexión del cliente RSS que coincidan con el recuento de la cola de RSS del adaptador de red ampliado.

Los siguientes pasos se ejecutan en la instancia bastión ADM01.

Para instalar las características de Windows necesarias

  • Instale las características Servicios de archivos y Clústeres de conmutación por error de Windows con las herramientas de administración en los nodos del clúster. En ADM01 instale únicamente herramientas de administración de conmutaciones por error.

    nota

    Cambie "S2D-Node1" y "S2D-Node2" por los nombres de los equipos para los que ha establecido las dos instancias; de lo contrario, los valores no cambiarán.

    $nodes = "S2D-Node1", "S2D-Node2" foreach ($node in $nodes) { Install-WindowsFeature -ComputerName $node -Name File-Services, Failover-Clustering -IncludeManagementTools } Install-WindowsFeature -Name RSAT-Clustering

Para configurar las redes

  1. Habilite el multicanal y establezca el recuento de la conexión RSS.

    foreach ($node in $nodes) { Invoke-Command -ComputerName $node -ScriptBlock { [int]$RssQCount = (Get-NetAdapterAdvancedProperty | Where DisplayName -like "Maximum Number of RSS Queues").RegistryValue | Select -First 1 $Params = @{ EnableMultiChannel = $true; ConnectionCountPerRssNetworkInterface = $RssQCount; Confirm = $false; } Set-SmbClientConfiguration @Params } }
  2. Configure RSS.

    foreach ($node in $nodes) { Invoke-Command -ComputerName $node -ScriptBlock { Get-WmiObject –class Win32_processor | ft systemname, Name, DeviceID, NumberOfCores, NumberOfLogicalProcessors $maxvcpu = (Get-WmiObject –class Win32_processor).NumberOfLogicalProcessors Get-NetAdapter | Set-NetAdapterRss -BaseProcessorNumber 2 -MaxProcessors $maxvcpu } }

    nota

    Al ejecutar este comando verá un mensaje de desconexión porque el adaptador de red se reinicia tras establecer la configuración de RSS.

    El escalado del lado de recepción (RSS) es una tecnología muy importante en la redes de Windows. RSS garantiza que el tráfico entrante de la red se distribuya a través de los procesadores disponibles en el servidor para su procesamiento. Si no se utiliza RSS, el procesamiento de red estará vinculado a un procesador, limitado a unos 4 GBps. Actualmente, cada NIC habilita el RSS de forma predeterminada, pero la configuración no se optimiza. Cada NIC se configura como procesador de base 0 de forma predeterminada, lo que significa que empezará a procesar en el procesador 0 junto con los otros NIC. Para configurar el RSS de forma óptima, empiece en el procesador 1 para no interferir con los procesos que recaen de forma predeterminada en el procesador 0.

  3. Incremente el valor del tiempo de espera de E/S del espacio de almacenamiento a 30 segundos (recomendado si se configura en un clúster invitado).

    foreach ($node in $nodes) { Invoke-Command -ComputerName $node -ScriptBlock { Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\spaceport\Parameters -Name HwTimeout -Value 0x00007530 -Verbose } }
  4. Reinicie todos los nodos para aplicar todos los cambios.

    Restart-Computer -ComputerName $nodes -Wait -For Wmi -Force

Paso 3: Crear el clúster de conmutación por error

S2D es una característica habilitada en un clúster de conmutación por error existente. Después de habilitar S2D en un clúster de conmutación por error, este controla el almacenamiento local de cada nodo del clúster. Por este motivo, recomendamos que instale un clúster sin almacenamiento durante la creación y que habilite S2D.

Al crear un clúster en AWS, debe asignar direcciones IP estáticas de cada subred desde la que se implementa un nodo. Desde la consola, deben establecerse como direcciones IP privadas secundarias en cada nodo. Para este tutorial hemos configurado 172.16.1.200 y 172.16.3.200 al implementar cada nodo.

Verifique y revise la configuración del clúster con el comando Test-Cluster integrado.

Probar y verificar la configuración del clúster

  1. Ejecute el comando Test-Cluster con las pruebas Storage Spaces Direct, Inventory, Network y System Configuration.

    $report = Test-Cluster -Node $nodes -Include 'Storage Spaces Direct', 'Inventory', 'Network', 'System Configuration'
  2. Revise los resultados de la prueba.

    $reportFilePath = $report.FullName Start-Process $reportFilePath
  3. Cree el clúster con New-Cluster. A las IP virtuales se les debe asignar una dirección IP privada secundaria desde la consola de AWS a cada nodo respectivo.

    $vips = "172.16.1.200", "172.16.3.200" New-Cluster -Name S2D -Node $nodes -StaticAddress $vips -NoStorage
  4. Configure un testigo de recursos compartidos.

    New-Item -ItemType Directory -Path c:\Share\Witness [string]$DomainName = (Get-WmiObject win32_computersystem).domain New-SmbShare -Name fsw -Path c:\Share\Witness -FullAccess ($DomainName + "\Domain Computers") Set-ClusterQuorum -Cluster S2D -FileShareWitness \\$env:COMPUTERNAME\fsw

Paso 4: Habilitar S2D

En cuanto el clúster esté listo, habilite S2D en uno de los nodos mediante Enable-ClusterS2D de la siguiente manera. Puesto que solo tenemos un tipo de disco en nuestra configuración (NVMe local), no utilizaremos discos como disco de almacenamiento en caché.

  1. Habilite S2D en tipos de instancia i3 con el comando Enable-ClusterS2D.

    Enable-ClusterS2D -PoolFriendlyName S2DPool -Confirm:$false -SkipEligibilityChecks:$true -CimSession $nodes[0]
  2. Si utiliza tipos de instancia m5d o r5d con NVMe y EBS, utilice discos NVMe como discos de almacenamiento en caché. El comando tendría el siguiente aspecto:

    Enable-ClusterS2D -PoolFriendlyName S2DPool -CacheDeviceModel "NVMe Amazon EC2 NVMe" -Confirm:$false -SkipEligibilityChecks:$true -CimSession $nodes[0]

Paso 5: Aprovisionar almacenamiento

Para aprovisionar almacenamiento, cree un grupo de almacenamiento y, luego, los volúmenes del grupo. Para que sea más sencillo, el comando Enable-ClusterS2D crea un grupo de forma predeterminada con todos los discos disponibles en el clúster. Con este comando configuramos el nombre del grupo de almacenamiento "Grupo S2D".

Una vez creados los volúmenes, cada nodo del clúster podrá acceder a ellos. A continuación, los volúmenes pueden asignarse a un rol específico del clúster como un rol de servidor de archivos o se pueden asignar como volúmenes compartidos de clúster (CSV). Todo el clúster puede acceder a un CSV, lo que significa que cada nodo del clúster puede leer y escribir en dicho volumen.

Para mejorar el rendimiento, le recomendamos que utilice el aprovisionamiento fijo y un sistema de archivos ReFS para CSV. El tamaño del sector depende del tipo de cargas de trabajo implementadas en el clúster. Para obtener más información acerca del tamaño del sector, consulte el tema sobre recomendaciones de tamaño del clúster para ReFS y NTFS. Para mejorar el rendimiento de lectura local, le recomendamos que alinee el CSV con el nodo que aloja la aplicación o la carga de trabajo. Los nodos puede contener múltiples CSV y múltiples aplicaciones.

Crear un volumen compartido de clúster (CSV)

  • Utilice el comando New-Volume para crear un nuevo CSV de 1 TB.

    $Params = @{ FriendlyName = 'CSV1'; FileSystem = 'CSVFS_ReFS'; StoragePoolFriendlyName = 'S2DPool'; Size = 1TB; AllocationUnitSize = 65536; ProvisioningType = 'Fixed'; CimSession = $nodes[0]; } New-Volume @Params

Paso 6: Revisar los recursos de S2D

Los recursos de S2D que ha configurado se muestran en el Administrador de los clústeres de conmutación por error.

Para ver el CSV

  1. Abra el Administrador del servidor.

  2. Elija Tools (Herramientas) y, luego, Failover Cluster Manager (Administrador de los clústeres de conmutación por error).

  3. Expanda el nombre del clúster, el campo Storage (Almacenamiento) y elija Disks (Discos).

    Verá el nombre fácil de recordar, la capacidad, el nodo que aloja el CSV y otros datos. Para obtener más información sobre la administración de los CSV, consulte el tema sobre uso de volúmenes compartidos de clúster en un clúster de conmutación por error.

Para sintetizar una carga en el CSV

Use una herramienta como, por ejemplo, la utilidad Diskspd. Conéctese a uno de los nodos del clúster con RDP y ejecute lo siguiente con la herramienta Diskspd.

$mycsv = (gci C:\ClusterStorage\ | select -First 1).Fullname .\diskspd.exe -d60 -b4k -o1024 -t32 -L -Sh -r -w50 -W60 -c100G $mycsv\test.dat

Para ver el rendimiento del almacenamiento de S2D del clúster

Use el comando Get-StorageHealthReport para ver el rendimiento del clúster en uno de los nodos del clúster.

  1. Abra una nueva ventana de PowerShell y empiece la carga de trabajo sintetizada.

  2. En las ventanas de PowerShell originales, ejecute Get-StorageSubSystem *cluster* | Get-StorageHealthReport para ver los resultados de rendimiento del subsistema de almacenamiento mientras se ejecuta la carga de trabajo.

PS C:\> Get-StorageSubSystem *cluster* | Get-StorageHealthReport CPUUsageAverage : 60.44 % CapacityPhysicalPooledAvailable : 9.82 GB CapacityPhysicalPooledTotal : 13.82 TB CapacityPhysicalTotal : 13.82 TB CapacityPhysicalUnpooled : 0 B CapacityVolumesAvailable : 1.89 TB CapacityVolumesTotal : 2 TB IOLatencyAverage : 257.56 ms IOLatencyRead : 255.87 ms IOLatencyWrite : 259.25 ms IOPSRead : 64327.37 /S IOPSTotal :128582.85 /S IOPSWrite : 64255.49 /S IOThroughputRead : 251.28 MB/S IOThroughputTotal : 502.28 MB/S IOThroughputWrite : 251 MB/S MemoryAvailable : 477.77 GB MemoryTotal : 488 GB

Paso 7: Eliminación

Si ha seguido el tutorial para crear un clúster de almacenamiento de alta disponibilidad con S2D en EC2 Windows, habrá creado un clúster de espacios de almacenamiento directo de dos instancias desde un servidor bastión, que también se emplea como testigo de recursos compartidos en el clúster. Se le cobrará por cada hora u hora parcial de ejecución de sus instancias. Cuando ya no necesite el clúster, utilice la consola de EC2 o Herramientas de AWS para Windows para eliminar los recursos creados para este proyecto. Para ello, elimine el clúster del mmc de administración del clúster de conmutación por error, termine las instancias y borre los objetos del clúster del equipo y sus nodos respectivos del Active Directory.

Recursos adicionales

Storage Spaces Direct Calculator (Preview)

Planificación de Espacios de almacenamiento directo

Información general de Espacios de almacenamiento directo

Tolerancia a errores y eficacia de almacenamiento en espacios de almacenamiento directo