A primeira regra da Comunidade Hyper-V no Telegram
"E se você ama o VMware ESXi, então adora o PowerShell junto com ESXi CLI e REST API"
Adicionado por mim
A migração ao vivo é um recurso popular no Hyper -V. Ele permite que você migre máquinas virtuais em execução sem tempo de inatividade visível. Existem muitas instruções para transferir VMs na rede, mas muitas delas estão desatualizadas. Além disso, nem todo mundo analisa as configurações avançadas e faz bom uso dos recursos do Live Migration.
Eu coletei nuances e parâmetros não óbvios para transferência rápida de VMs dentro de um cluster e entre clusters. Ao mesmo tempo, compartilharei alguns pequenos segredos na configuração e design. Espero que este artigo seja útil para administradores novatos.

Isenção de responsabilidade : é aconselhável realizar todas as etapas descritas ANTES de inserir o servidor Hyper-V em prod. O Hyper-V nunca perdoa erros de design e irá decepcioná-lo na primeira oportunidade. Ou seja, no dia seguinte.
Lembre-se do material
Como de costume, a migração da VM de um nó para outro ocorre dentro de um cluster Hyper-V:
- A configuração da VM é copiada de um nó do cluster para outro.
- As páginas de memória da máquina virtual são marcadas para cópia no host de destino e o processo de movê-las online é iniciado.
- , . Hyper-V . , .
. - , , . . , .
Isso é chamado de migração ao vivo. O esquema é válido para qualquer hipervisor.
Quanto mais RAM uma VM tiver e mais intensamente ela for alterada, mais tempo levará para se mover. Portanto, o tráfego de migração ao vivo requer um bom canal e configuração cuidadosa.
É assim que a migração ao vivo clássica funciona dentro do cluster de failover. Ele requer um volume CSV compartilhado servido a todos os hosts no cluster.
Além disso, há um segundo tipo de Live Migration, a Live Migration no "nothing» (a Migração Compartilhada para Nothing Live). Este cenário é normalmente usado para migrar VMs sem tempo de inatividade entre os clusters. Além das páginas de memória de um host Hyper-V para outro, o disco VHD (X) é copiado com a transferência e sincronização do delta de dados gravados nele.
Vamos analisar as principais nuances da configuração de interfaces.
Definir as configurações de protocolo
- Primeiro, vamos para o gerenciador Hyper-V e clique com o botão direito nas configurações do Hyper-V. Nas configurações de Live Migration, especificaremos os endereços das interfaces de rede que o hipervisor acessará:
- Vamos dar uma olhada nos recursos avançados. Estamos interessados em ambos os pontos: o protocolo de autenticação e o transporte que nossas VMs usam.
- Protocolo de autenticação : CredSSP - Credential Security Support Provider Protocol é instalado por padrão. É fácil de usar, mas se houver vários clusters na infraestrutura, não poderemos transferir VMs entre clusters.
Escolheremos o Kerberos como mais seguro e adequado para mover VMs entre diferentes clusters.
- Performance options: . Switch Embedded Team SMB (Server Message Block).
Windows Server 2016. SMB (SMB Multi-channel). RDMA – . .
- Protocolo de autenticação : CredSSP - Credential Security Support Provider Protocol é instalado por padrão. É fácil de usar, mas se houver vários clusters na infraestrutura, não poderemos transferir VMs entre clusters.
- 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. - SMB . , Live Migration SMB:
Set-SmbServerConfiguration -EncryptData $false -RejectUnencryptedAccess $false
. .
Windows Admin Center:
A otimização da rede Hyper-V é um tópico altamente controverso na comunidade e um campo ilimitado para experimentação (não há limite para a perfeição nisso, por definição). Portanto, antes de configurar uma rede passo a passo, vamos descobrir como a tecnologia mudou recentemente e como você pode usá-la.
Como era antes . Os antigos manuais de migração de VM do Hyper-V descrevem cenários usando a tecnologia de tempo de balanceamento de carga / failover (LBFO). O LBFO tornou possível agrupar adaptadores de rede físicos e criar interfaces sobre eles. Mas também havia desvantagens, por exemplo: não havia suporte para RDMA, era impossível saber por qual porta Tim o tráfego iria. E como o tráfego de migração ao vivo requer um canal bastante gordo, isso se tornou um problema quando todas as cargas de trabalho da rede explodiram em uma porta física.
Como agora... No Windows Server 2019, você não pode nem mesmo criar um switch virtual em cima da equipe LBFO. A única solução com suporte para entroncamento de porta NIC no Hyper-V é Switch Embedded Team (SET) .
SET agrega adaptadores, assim como ESXi vSwitch. As portas de rede física tornam-se um patch cord para diferentes tipos de tráfego (inclusive para VMs) e interfaces virtuais são cortadas em cima delas.
, . , 2 , 3 ( ). - ESX (1+). Red Hat c . VMware vSphere 4.1 1 (bare-metal).
Microsoft VMware Switch Embedded Team Windows Server 2016. .
Em versões mais recentes, SET permite que você crie diferentes interfaces virtuais para diferentes cargas de trabalho em cima de um grupo de interfaces físicas. Na verdade, esses são os adaptadores de rede virtual da partição raiz, que podemos gerenciar como adaptadores virtuais de uma VM.
Como isso afeta o processo de configuração . No Hyper-V, além da interface de gerenciamento, geralmente criamos interfaces para migração ao vivo e interfaces para tráfego CSV de cluster. Para fazer isso, precisamos saber o número de portas de rede incluídas no SET - é quantas interfaces virtuais precisarão ser criadas. Também levamos em consideração a localização das portas de rede no barramento PCI, o número de soquetes para o mapeamento subsequente de interfaces para nós NUMA e o número de núcleos físicos em cada processador.
Vejamos o processo passo a passo
- , . , 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
- 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 .
- 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, .
- , 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 - . , 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.
- , :
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
, . - RDMA, . RDMA CPU. RDMA Get-NetAdapterRdma.
: . statemigration.com.
RDMA (, , ). - 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" - 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.
Usando os mesmos cmdlets, você também pode definir o número de Filas RSS. Seu número depende do modelo específico da placa de rede, portanto, antes de configurar Filas RSS, você precisa estudar a documentação da placa de rede.
Configurando a migração para um cenário em cluster
No lado do cluster de failover, também desparafusaremos as configurações de tempo limite do cluster:
(Get-Cluster).SameSubnetDelay = 2000
(Get-Cluster).SameSubnetThreshold = 30
- SameSubnetDelay indica quantas vezes a que horas enviamos heartbits. Por padrão, é definido como 1 segundo.
Se os nós do cluster estiverem na mesma rede, isso é suficiente. Se eles estiverem em redes diferentes, você precisará configurar CrossSubnetDelay com os mesmos valores. - SameSubnetThreshold mostra quantos heartbits podemos ignorar o máximo possível. Por padrão, são 5 pulsações, o máximo é 120. Definiremos o valor ideal - 30 pulsações.
Para máquinas altamente carregadas, é importante desparafusar os dois parâmetros. Se não nos encontrarmos, é muito provável que tal máquina não atropele.
Para que o tráfego de migração ao vivo seja usado apenas em uma rede específica, também deixaremos uma rede separada nas configurações de cluster de failover:
Na verdade, este é o conjunto mínimo de configurações para que o Live Migration funcione corretamente no Hyper-V.