Équilibrer la charge du trafic réseau dans une infrastructure SDN à l’aide de VMM
Dans une infrastructure réseau à définition logicielle (SDN), vous pouvez utiliser l’équilibrage de charge logicielle (SLB) pour répartir équitablement le trafic réseau entre les différentes charges de travail gérées par les fournisseurs de services cloud (CSP) et les locataires. Pour plus d’informations, consultez Équilibreur de charge logiciel (SLB).
System Center Virtual Machine Manager (VMM) prend en charge les deux scénarios suivants d’équilibrage de charge :
Équilibrage de charge du trafic réseau externe : ce scénario inclut l’équilibrage de charge du trafic réseau provenant d’un réseau externe. L’équilibrage de charge est effectué via une adresse IP virtuelle publique . Les machines virtuelles de charge de travail peuvent être connectées à un réseau de machines virtuelles sans isolation ni à un réseau de machines virtuelles avec virtualisation réseau.
Équilibrage de charge du trafic réseau interne (équilibrage de charge interne) : ce scénario inclut l’équilibrage de charge du trafic réseau des charges de travail dans le réseau de machines virtuelles activé pour la virtualisation du réseau réseau. L’équilibrage de charge est effectué via une adresse IP virtuelle.
Remarque
VMM 2016 prend en charge la configuration de l’équilibrage de charge à l’aide de PowerShell. La configuration par le biais de modèles de service n’est actuellement pas prise en charge.
Cet article fournit des informations sur la configuration de l’équilibrage de charge des machines virtuelles de charge de travail à l’aide de PowerShell.
Remarque
- À partir de VMM 2019 UR1, un type de réseau connecté est modifié en réseau connecté
- VMM 2019 UR2 et versions ultérieures prend en charge IPv6.
Avant de commencer
Assurez-vous de ce qui suit :
Le contrôleur de réseau SDN et l’équilibreur de charge logiciel SDN sont déployés.
Les machines virtuelles requises sont créées sur les réseaux appropriés et sont identifiées pour l’équilibrage de charge.
Créer un modèle d’adresse IP virtuelle
Utilisez les procédures suivantes pour configurer les adresses IP virtuelles pour équilibrer la charge des machines virtuelles de charge de travail.
Dans la console VMM, sélectionnez Modèles d’adresses IP virtuelles Fabric>. Cliquez avec le bouton droit et sélectionnez Créer un modèle d’adresse IP virtuelle.
Dans la page Nom , indiquez le nom et la description facultative. Spécifiez le port IP virtuel qui sera utilisé comme port frontal pour le trafic réseau. Dans le port back-end, spécifiez le port sur lequel les charges de travail principales sont hébergées. Cliquez sur Suivant.
Dans Type, sous Spécifier un type de modèle, sélectionnez Spécifique. Sélectionnez Microsoft dans la liste déroulante Fabricant et Contrôleur de réseau Microsoft dans la liste déroulante Modèle.
Cliquez sur Suivant.
Dans Spécifier les options de protocole, sélectionnez l’option personnalisée et TCP/UDP dans le nom du protocole. Cliquez sur Suivant.
Remarque
SLB prend uniquement en charge l’équilibrage de charge de couche 4 du trafic TCP/UDP. Les protocoles HTTP/HTTPS ne sont pas pris en charge.
Pour la persistance et l’équilibrage de charge, utilisez les valeurs par défaut. Cliquez sur Suivant.
Remarque
SLB ne prend pas en charge la persistance et différentes méthodes d’équilibrage de charge. Par défaut, SLB utilise l’algorithme Round Robin pour l’équilibrage de charge.
Dans les moniteurs d’intégrité, vous pouvez éventuellement insérer les valeurs appropriées. Cliquez sur Suivant.
Options : TCP et HTTP sont pris en charge en tant que protocoles de moniteur d’intégrité si SLB est utilisé.
Vérifiez les paramètres, puis sélectionnez Terminer.
Une fois le modèle créé, vous pouvez le trouver sous Modèles d’adresses IP virtuelles Fabric>.
Créer une adresse IP virtuelle à l’aide de PowerShell
Créez une adresse IP virtuelle à l’aide des exemples de scripts suivants. Sélectionnez le script en fonction du type de trafic réseau que vous souhaitez équilibrer la charge :
• Script pour créer une adresse IP virtuelle afin d’équilibrer le trafic réseau externe
• Script pour créer une adresse IP virtuelle afin d’équilibrer le trafic réseau interne
Script pour la création d’adresses IP virtuelles pour équilibrer la charge du trafic réseau externe
L’exemple de script suivant crée l’adresse IP virtuelle à partir d’un réseau IP public pour équilibrer la charge de travail des machines virtuelles WGB-001 et WGB-002 sur le port 80.
Ce script peut également être utilisé pour créer une adresse IP virtuelle d’équilibrage de charge en transmettant également l’adresse IP virtuelle IPv6.
Les machines virtuelles de charge de travail peuvent être connectées à un réseau d’isolation ou à des réseaux de machines virtuelles compatibles avec la virtualisation du réseau.
Remarque
- Dans la section paramètres de script, remplacez les valeurs réelles qui correspondent à votre environnement de test pour les exemples utilisés dans ce script.
- Vérifiez que vous exécutez le script sur un serveur VMM ou sur un ordinateur exécutant la console VMM.
param(
[Parameter(Mandatory=$false)]
# Name of the Network Controller Network Service
# This value should be the name you gave the Network Controller service
# when you on-boarded the Network Controller to VMM
$LBServiceName = "NC",
[Parameter(Mandatory=$false)]
# Name of the workload VMs you want to load balance.
$VipMemberVMNames = @("WGB-001","WGB-002"),
[Parameter(Mandatory=$false)]
# Name of the VIP VM Network
$VipNetworkName = "PublicVIP",
[Parameter(Mandatory=$false)]
# VIP address you want to assign from the VIP VM Network IP pool.
# Pick any VIP that falls within your VIP IP Pool range.
$VipAddress = "44.15.10.253",
[Parameter(Mandatory=$false)]
# The name of the VIP template you created via the VMM Console.
$VipTemplateName = "WebsiteHTTP",
[Parameter(Mandatory=$false)]
# Arbitrary but good to match the VIP you're using.
$VipName = "scvmm_44_15_10_253_80"
)
Import-Module virtualmachinemanager
$lb = Get-scLoadBalancer | where { $_.Service.Name -like $LBServiceName};
$vipNetwork = get-scvmnetwork -Name $VipNetworkName;
$vipMemberNics = @();
foreach ($vmName in $VipMemberVMNames)
{
$vm = get-scvirtualmachine -Name $vmName;
# if ($vm.VirtualNetworkAdapters[0].VMNetwork.ID -ne $vipNetwork.ID)
# {
# $vm.VirtualNetworkAdapters[0] | set-scvirtualnetworkadapter -VMNetwork $vipNetwork;
# }
$vipMemberNics += $vm.VirtualNetworkAdapters[0];
}
$existingVip = get-scloadbalancervip -Name $VipName
if ($existingVip -ne $null)
{
# foreach ($mem in $existingVip.VipMembers)
# {
# $mem | remove-scloadbalancervipmember;
# }
$existingVip | remove-scloadbalancervip;
}
$vipt = get-scloadbalancerviptemplate -Name $VipTemplateName;
$vip = New-SCLoadBalancerVIP -Name $VipName -LoadBalancer $lb
-IPAddress $VipAddress -LoadBalancerVIPTemplate $vipt
-FrontEndVMNetwork $vipNetwork
-BackEndVirtualNetworkAdapters $vipMemberNics;
Write-Output "Created VIP " $vip;
$vip = get-scloadbalancervip -Name $VipName;
Write-Output "VIP created successfully " $vip;
Script pour la création d’adresses IP virtuelles pour équilibrer la charge du trafic réseau interne
Pour l’exemple de script suivant, nous avons créé un modèle d’adresse IP virtuelle par nom ILB-VIP-Template pour l’équilibrage de charge du port 443 à l’aide de la procédure détaillée dans la section précédente. Le script crée une adresse IP virtuelle à partir du réseau de machines virtuelles client pour équilibrer la charge des machines virtuelles ILB-001 et ILB-002, qui font partie du même réseau de machines virtuelles clientes.
Ce script peut également être utilisé pour créer une adresse IP virtuelle d’équilibrage de charge en transmettant également l’adresse IP virtuelle IPv6.
Remarque
- Dans le scénario d’équilibrage de charge interne, l’adresse IP virtuelle provient du réseau de machines virtuelles du locataire. Par conséquent, le $VipNetworkName est le même nom de réseau de machines virtuelles client que celui où les machines virtuelles sont connectées. Vérifiez que le pool d’adresses IP du réseau de machines virtuelles client dispose des adresses IP réservées aux adresses IP virtuelles. Le $VipAddress est l’une des adresses IP des adresses IP virtuelles réservées.
- Dans la section paramètres de script, remplacez les valeurs réelles qui correspondent à votre environnement de test pour les exemples utilisés dans ce script.
- Vérifiez que vous exécutez le script sur un serveur VMM ou sur un ordinateur exécutant la console VMM.
param(
[Parameter(Mandatory=$false)]
# Name of the Network Controller Network Service
# This value should be the name you gave the Network Controller service
# when you on-boarded the Network Controller to VMM
$LBServiceName = "NC",
[Parameter(Mandatory=$false)]
# Name of the workload VMs you want to load balance.
$VipMemberVMNames = @("ILB-001","ILB-002"),
[Parameter(Mandatory=$false)]
# Name of the VIP VM Network
$VipNetworkName = "TenantNetwork",
[Parameter(Mandatory=$false)]
# VIP address you want to assign from the VIP VM Network IP pool.
# Pick any VIP that falls within your VIP IP Pool range.
$VipAddress = "192.168.100.75",
[Parameter(Mandatory=$false)]
# The name of the VIP template you created via the VMM Console.
$VipTemplateName = "ILB-VIP-Template",
[Parameter(Mandatory=$false)]
# Arbitrary but good to match the VIP you're using.
$VipName = "scvmm_192_168_100_75_443"
)
Import-Module virtualmachinemanager
$lb = Get-scLoadBalancer | where { $_.Service.Name -like $LBServiceName};
$vipNetwork = get-scvmnetwork -Name $VipNetworkName;
$vipMemberNics = @();
foreach ($vmName in $VipMemberVMNames)
{
$vm = get-scvirtualmachine -Name $vmName;
# if ($vm.VirtualNetworkAdapters[0].VMNetwork.ID -ne $vipNetwork.ID)
# {
# $vm.VirtualNetworkAdapters[0] | set-scvirtualnetworkadapter -VMNetwork $vipNetwork;
# }
$vipMemberNics += $vm.VirtualNetworkAdapters[0];
}
$existingVip = get-scloadbalancervip -Name $VipName
if ($existingVip -ne $null)
{
# foreach ($mem in $existingVip.VipMembers)
# {
# $mem | remove-scloadbalancervipmember;
# }
$existingVip | remove-scloadbalancervip;
}
$vipt = get-scloadbalancerviptemplate -Name $VipTemplateName;
$vip = New-SCLoadBalancerVIP -Name $VipName -LoadBalancer $lb
-IPAddress $VipAddress -LoadBalancerVIPTemplate $vipt
-FrontEndVMNetwork $vipNetwork
-BackEndVirtualNetworkAdapters $vipMemberNics;
Write-Output "Created VIP " $vip;
$vip = get-scloadbalancervip -Name $VipName;
Write-Output " VIP created successfully " $vip;