Una vez más sobre la migración en vivo: cómo migrar máquinas virtuales Hyper-V y más rápido

     " Si te encanta Hyper-V, te encanta y PowerShell"

     La primera regla de la comunidad Hyper-V en Telegram  



     "Y si te encanta VMware ESXi, entonces te encanta PowerShell junto con ESXi CLI y REST API"

     Añadida por mí



La migración en vivo es una característica popular en Hyper -V. Le permite migrar máquinas virtuales en ejecución sin tiempo de inactividad visible. Hay muchas instrucciones sobre cómo migrar máquinas virtuales en línea, pero muchas de ellas están desactualizadas. Además, no todo el mundo analiza la configuración avanzada y hace un buen uso de las capacidades de Live Migration. 



He recopilado matices y parámetros no obvios para la transferencia rápida de máquinas virtuales dentro de un clúster y entre clústeres. Al mismo tiempo, compartiré algunos secretos sobre la configuración y el diseño. Espero que este artículo sea útil para administradores novatos.  



Descargo de responsabilidad : Es aconsejable seguir todos los pasos descritos ANTES de ingresar el servidor Hyper-V en prod. Hyper-V nunca perdona los errores de diseño y lo decepcionará a la primera oportunidad. Es decir, al día siguiente.


Recuerda el material



Como de costumbre, se produce la migración de VM de un nodo a otro dentro de un clúster de Hyper-V:



  1. La configuración de la máquina virtual se copia de un nodo de clúster a otro. 
  2. Las páginas de memoria de la máquina virtual se marcan para copiarlas en el host de destino y comienza el proceso de moverlas en línea.
  3. , . Hyper-V . , .





    .
  4. , , . . , .


A esto se le llama migración en vivo. El esquema es válido para cualquier hipervisor.



Cuanto más RAM tenga una máquina virtual y cuanto más intensamente cambie, más tiempo tardará en moverse. Por lo tanto, el tráfico de migración en vivo requiere un buen canal y una configuración cuidadosa.

Así es como funciona la migración en vivo clásica dentro del clúster de conmutación por error. Requiere un volumen CSV compartido servido a todos los hosts del clúster.

 

Además, existe un segundo tipo de migración en vivo , la migración en vivo en la "nada" (la migración en vivo Shared-for Nothing). Este escenario se usa normalmente para migrar máquinas virtuales sin tiempo de inactividad entre clústeres. Además de las páginas de memoria de un host Hyper-V a otro, el disco VHD (X) se copia con la transferencia y sincronización del delta de los datos escritos en él. 


Analicemos los principales matices de la configuración de interfaces.



Establecer la configuración del protocolo



  1. Primero, vayamos al administrador de Hyper-V y hagamos clic derecho en la configuración de Hyper-V. En la configuración de Live Migration, especificaremos las direcciones de las interfaces de red a las que accederá el hipervisor: 





  2. Echemos un vistazo a las funciones avanzadas. Nos interesan ambos puntos: el protocolo de autenticación y el transporte que utilizan nuestras VM.

    • Protocolo de autenticación : CredSSP: el protocolo de proveedor de soporte de seguridad de credenciales se instala de forma predeterminada. Es fácil de usar, pero si hay varios clústeres en la infraestructura, no podremos transferir VM entre clústeres. 



      Elegiremos Kerberos como más seguro y adecuado para mover VM entre diferentes clústeres.

    • Performance options: . Switch Embedded Team SMB (Server Message Block). 



      Windows Server 2016. SMB (SMB Multi-channel). RDMA – . . 







  3. Kerberos , (Kerberos Constrained Delegation) Computer Active Directory. 



    Windows Server 2016, NETWORK SERVICE, AD. (Unconstrained Delegation), , :







    System Center Virtual Machine Manager (SC VMM), . SC VMM Shared-Nothing Live Migration.
  4. SMB . , Live Migration SMB:



    Set-SmbServerConfiguration -EncryptData $false -RejectUnencryptedAccess $false


    . . 



    Windows Admin Center:







La optimización de la red Hyper-V es un tema muy controvertido en la comunidad y un campo ilimitado para la experimentación (por definición, no hay límite para la perfección). Entonces, antes de configurar una red paso a paso, veamos cómo ha cambiado la tecnología recientemente y cómo puede usarla.  



Como era antes . Los antiguos manuales de migración de máquinas virtuales Hyper-V describen escenarios que utilizan la tecnología de sincronización de equilibrio de carga / conmutación por error (LBFO). LBFO hizo posible agrupar adaptadores de red físicos y crear interfaces sobre ellos. Pero también había desventajas, por ejemplo: no había soporte RDMA, era imposible saber a través de qué puerto de Tim pasaría el tráfico. Y dado que el tráfico de migración en vivo requiere un canal bastante grueso, esto se convirtió en un problema cuando todas las cargas de trabajo de la red irrumpen en un puerto físico. 



Como ahora... En Windows Server 2019, ni siquiera puede crear un conmutador virtual encima del equipo LBFO. La única solución compatible para el enlace de puertos NIC en Hyper-V es Switch Embedded Team (SET) .  



SET agrega adaptadores, al igual que ESXi vSwitch. Los puertos de red físicos se convierten en un cable de conexión para diferentes tipos de tráfico (incluso para máquinas virtuales) y las interfaces virtuales se cortan encima de ellos. 



, . , 2 , 3 ( ). - ESX (1+). Red Hat c . VMware vSphere 4.1 1 (bare-metal). 



Microsoft VMware Switch Embedded Team Windows Server 2016. .


En las versiones más recientes, SET le permite crear diferentes interfaces virtuales para diferentes cargas de trabajo sobre un grupo de interfaces físicas. De hecho, se trata de adaptadores de red virtuales de la partición raíz que podemos gestionar como adaptadores virtuales de una VM. 



Cómo afecta esto al proceso de configuración . En Hyper-V, además de la interfaz de administración, generalmente creamos interfaces para la migración en vivo e interfaces para el tráfico CSV del clúster. Para hacer esto, necesitamos saber la cantidad de puertos de red incluidos en SET; esta es la cantidad de interfaces virtuales que se necesitarán crear. También tenemos en cuenta la ubicación de los puertos de red en el bus PCI, el número de sockets para el mapeo posterior de interfaces a los nodos NUMA y el número de núcleos físicos en cada procesador.



Veamos el proceso paso a paso.



  1. , . , on-board .









    VLAN ID



    Management



    192.168.1.0/24

    192.168.1.1

    0 (Native)

    1

    LiveMigration



    192.168.2.0/24

    2

    2

    CSV

    CSV-

    192.168.3.0/24

    3

    2

  2. SET Virtual Switch VMM (Virtual Machine Manager). VMM ,   PowerShell Hyper-V: 



    New-VMSwitch -Name "SET" –NetAdapterName "NIC1","NIC2" -EnableEmbeddedTeaming $True -AllowManagementOS $true -MinimumBandwidthMode Weight


    -. MinimumBandwidthMode weight, SET . . Network QoS Policies ( ). 



    SET RDMA-, MinimumBandwidthMode . , Network QoS Policies RDMA .

  3. Dynamic Hyper-V Port ( Windows Server 2019). Dynamic Address Hash Hyper-V Port , : 



    Set-VMSwitchTeam "SET" -LoadBalancingAlgorithm Dynamic


    , SET SC VM Host Default. Windows Server 2016 Dynamic. Windows Server 2019 Hyper-V Port, .

  4. , IP- . 



    «» CSV- : 



    #     Live Migration
    Add-VMNetworkAdapter –ManagementOS –Name "LiveMigration01" –SwitchName MGMT-Switch -NumaAwarePlacement $true
    Add-VMNetworkAdapter –ManagementOS –Name "LiveMigration02" –SwitchName MGMT-Switch -NumaAwarePlacement $true
    
    #  VLAN
    Set-VMNetworkAdapterVlan -ManagementOS -VMNetworkAdapterName "LiveMigration*" -VlanId 2 -Access
    
    # IP-  
    New-NetIPAddress –InterfaceAlias "vEthernet (LiveMigration01)" -IPAddress 192.168.2.2 -PrefixLength 24 -Confirm:$false
    New-NetIPAddress –InterfaceAlias "vEthernet (LiveMigration02)" -IPAddress 192.168.2.3 -PrefixLength 24 -Confirm:$false
    
    #     CSV-
    Add-VMNetworkAdapter –ManagementOS –Name "CSV01" –SwitchName MGMT-Switch -NumaAwarePlacement $true
    Add-VMNetworkAdapter –ManagementOS –Name "CSV02" –SwitchName MGMT-Switch -NumaAwarePlacement $true
    
    #  VLAN
    Set-VMNetworkAdapterVlan -ManagementOS -VMNetworkAdapterName "CSV*" -VlanId 3 -Access
    
    #  IP-  
    New-NetIPAddress –InterfaceAlias "vEthernet (CSV01)" -IPAddress 192.168.3.2 -PrefixLength 24 -Confirm:$false
    New-NetIPAddress –InterfaceAlias "vEthernet (CSV02)" -IPAddress 192.168.3.3 -PrefixLength 24 -Confirm:$false
  5. . , Jumbo Frames 9K , Management. 



    : .  



    Set-NetAdapterAdvancedProperty -Name "NIC1" -DisplayName "Jumbo Packet" -DisplayValue 9014
    Set-NetAdapterAdvancedProperty -Name "NIC2" -DisplayName "Jumbo Packet" -DisplayValue 9014
    Set-NetAdapterAdvancedProperty -Name "vEthernet (CSV01)" -DisplayName "Jumbo Packet" -DisplayValue "9014 Bytes"
    Set-NetAdapterAdvancedProperty -Name "vEthernet (CSV02)" -DisplayName "Jumbo Packet" -DisplayValue "9014 Bytes"
    Set-NetAdapterAdvancedProperty -Name "vEthernet (LiveMigration01)" -DisplayName "Jumbo Packet" -DisplayValue "9014 Bytes"
    Set-NetAdapterAdvancedProperty -Name "vEthernet (LiveMigration02)" -DisplayName "Jumbo Packet" -DisplayValue "9014 Bytes"


    , Windows Server, . , Windows. SET Management’. Get-NetAdapterAdvancedProperties.

  6. , :







    CSV-. :



    Set-NetIPInterface -InterfaceIndex 16 -InterfaceMetric 10000
    Set-NetIPInterface -InterfaceIndex 3 -InterfaceMetric 10000
    Set-NetIPInterface -InterfaceIndex 9 -InterfaceMetric 10500
    Set-NetIPInterface -InterfaceIndex 6 -InterfaceMetric 10500
    


    , .
  7. RDMA, . RDMA CPU. RDMA Get-NetAdapterRdma.





    : . statemigration.com.



    RDMA (, , ).
  8. PCI-. Virtual Machine Queues (VMQ). 



    , , .  



    Set-VMNetworkAdapterTeamMapping -ManagementOS -PhysicalNetAdapterName "NIC1" -VMNetworkAdapterName "LiveMigration01"
    Set-VMNetworkAdapterTeamMapping -ManagementOS -PhysicalNetAdapterName "NIC2" -VMNetworkAdapterName "LiveMigration02"
    Set-VMNetworkAdapterTeamMapping -ManagementOS -PhysicalNetAdapterName "NIC1" -VMNetworkAdapterName "CSV01"
    Set-VMNetworkAdapterTeamMapping -ManagementOS -PhysicalNetAdapterName "NIC2" -VMNetworkAdapterName "CSV02"
  9. VMQ PCI-. , . : -, , -, 3 . . (SMB)! , RSS. 



    Windows Server 2019 VMQ , dVMMQ. , 90%. Windows Server 2019 VMQ . 



    :



    Set-NetAdapterRss -Name "NIC1" -BaseProcessorGroup 0 -BaseProcessorNumber 2 -MaxProcessors 8 -MaxProcessorNumber 16
    Set-NetAdapterRss -Name "NIC2" -BaseProcessorGroup 0 -BaseProcessorNumber 16 -MaxProcessors 8 -MaxProcessorNumber 30


    , . , 2 16 . 32 . Excel 0 31:







    Base Processor Number 2. . 16 – MaxProcessorNumber.



    BaseProcessor 16 ( ). . , Live Migration. 



    Con los mismos cmdlets, también puede establecer el número de colas RSS. Su número depende del modelo específico de la tarjeta de red, por lo tanto, antes de configurar las colas RSS, debe estudiar la documentación de la tarjeta de red.


Configurar la migración para un escenario agrupado 



En el lado del clúster de conmutación por error, también desenroscaremos la configuración del tiempo de espera del clúster:



(Get-Cluster).SameSubnetDelay = 2000
(Get-Cluster).SameSubnetThreshold = 30


  • SameSubnetDelay indica cuántas veces y a qué hora enviamos heartbits. De forma predeterminada, está establecido en 1 segundo. 



    Si los nodos del clúster están en la misma red, esto es suficiente. Si están en redes diferentes, entonces necesita configurar CrossSubnetDelay con los mismos valores.
  • SameSubnetThreshold muestra cuántos bits del corazón podemos omitir tanto como sea posible. Por defecto, son 5 heartbits, el máximo es 120. Estableceremos el valor óptimo: 30 heartbits.



Para máquinas muy cargadas, es importante desenroscar ambos parámetros. Si no nos encontramos, entonces con una alta probabilidad de que dicha máquina no se atropelle. 



Para que el tráfico de migración en vivo se use solo en una red específica, también dejaremos una red separada en la configuración del clúster de conmutación por error: en











realidad, este es el conjunto mínimo de configuraciones para que la migración en vivo funcione correctamente en Hyper-V. 



All Articles