Clustering guest in una rete virtuale

Si applica a: Windows Server 2022, Windows Server 2019, Windows Server 2016, Azure Stack HCI, versioni 21H2 e 20H2

Le macchine virtuali connesse a una rete virtuale possono usare solo gli indirizzi IP assegnati dal Controller di rete per comunicare nella rete. Le tecnologie di clustering che richiedono un indirizzo IP mobile, ad esempio il Clustering di Failover Microsoft, richiedono alcuni passaggi aggiuntivi per funzionare correttamente.

Il metodo per rendere raggiungibile l'IP mobile consiste nell'usare un indirizzo IP virtuale (VIP) del bilanciamento del carico del software (SLB). Il servizio di bilanciamento del carico software deve essere configurato con un probe di integrità su una porta su tale IP, in modo che SLB indirizzi il traffico al computer che dispone attualmente di tale IP.

Esempio: Configurazione del bilanciamento del carico

In questo esempio si presuppone che siano già state create le macchine virtuali che diventeranno nodi del cluster e che siano collegate a una rete virtuale. Per indicazioni, vedere Creare una macchina virtuale e Connettersi a una rete virtuale tenant o VLAN.

In questo esempio si creerà un indirizzo IP virtuale (192.168.2.100) per rappresentare l'indirizzo IP mobile del cluster e si configurerà un probe di integrità per monitorare la porta TCP 59999 per determinare quale nodo è quello attivo.

  1. Selezionare l'indirizzo VIP.

    Preparare assegnando un indirizzo IP VIP, che può essere qualsiasi indirizzo inutilizzato o riservato nella stessa subnet dei nodi del cluster. L'indirizzo VIP deve corrispondere all'indirizzo mobile del cluster.

    $VIP = "192.168.2.100"
    $subnet = "Subnet2"
    $VirtualNetwork = "MyNetwork"
    $ResourceId = "MyNetwork_InternalVIP"
    
  2. Creare l'oggetto proprietà del servizio di bilanciamento del carico.

    $LoadBalancerProperties = new-object Microsoft.Windows.NetworkController.LoadBalancerProperties
    
  3. Creare un indirizzo IP front-end.

    $LoadBalancerProperties.frontendipconfigurations += $FrontEnd = new-object Microsoft.Windows.NetworkController.LoadBalancerFrontendIpConfiguration
    $FrontEnd.properties = new-object Microsoft.Windows.NetworkController.LoadBalancerFrontendIpConfigurationProperties
    $FrontEnd.resourceId = "Frontend1"
    $FrontEnd.resourceRef = "/loadBalancers/$ResourceId/frontendIPConfigurations/$($FrontEnd.resourceId)"
    $FrontEnd.properties.subnet = new-object Microsoft.Windows.NetworkController.Subnet
    $FrontEnd.properties.subnet.ResourceRef = "/VirtualNetworks/MyNetwork/Subnets/Subnet2"
    $FrontEnd.properties.privateIPAddress = $VIP
    $FrontEnd.properties.privateIPAllocationMethod = "Static"
    
  4. Creare un pool back-end per contenere i nodi del cluster.

    $BackEnd = new-object Microsoft.Windows.NetworkController.LoadBalancerBackendAddressPool
    $BackEnd.properties = new-object Microsoft.Windows.NetworkController.LoadBalancerBackendAddressPoolProperties
    $BackEnd.resourceId = "Backend1"
    $BackEnd.resourceRef = "/loadBalancers/$ResourceId/backendAddressPools/$($BackEnd.resourceId)"
    $LoadBalancerProperties.backendAddressPools += $BackEnd
    
  5. Aggiungere un probe per rilevare il nodo del cluster in cui è attualmente attivo l'indirizzo mobile.

    Nota

    Il probe esegue una query sull'indirizzo permanente della macchina virtuale alla porta definita di seguito. La porta deve rispondere solo sul nodo attivo.

    $LoadBalancerProperties.probes += $lbprobe = new-object Microsoft.Windows.NetworkController.LoadBalancerProbe
    $lbprobe.properties = new-object Microsoft.Windows.NetworkController.LoadBalancerProbeProperties
    
    $lbprobe.ResourceId = "Probe1"
    $lbprobe.resourceRef = "/loadBalancers/$ResourceId/Probes/$($lbprobe.resourceId)"
    $lbprobe.properties.protocol = "TCP"
    $lbprobe.properties.port = "59999"
    $lbprobe.properties.IntervalInSeconds = 5
    $lbprobe.properties.NumberOfProbes = 11
    
  6. Aggiungere le regole di bilanciamento del carico per la porta TCP 1433.

    È possibile modificare il protocollo e la porta in base alle esigenze. È anche possibile ripetere questo passaggio più volte per altre porte e protocolli in questo indirizzo VIP. È importante che EnableFloatingIP sia impostato su $true perché indica al servizio di bilanciamento del carico di inviare il pacchetto al nodo con l'indirizzo VIP originale sul posto.

    $LoadBalancerProperties.loadbalancingRules += $lbrule = new-object Microsoft.Windows.NetworkController.LoadBalancingRule
    $lbrule.properties = new-object Microsoft.Windows.NetworkController.LoadBalancingRuleProperties
    $lbrule.ResourceId = "Rules1"
    
    $lbrule.properties.frontendipconfigurations += $FrontEnd
    $lbrule.properties.backendaddresspool = $BackEnd
    $lbrule.properties.protocol = "TCP"
    $lbrule.properties.frontendPort = $lbrule.properties.backendPort = 1433
    $lbrule.properties.IdleTimeoutInMinutes = 4
    $lbrule.properties.EnableFloatingIP = $true
    $lbrule.properties.Probe = $lbprobe
    
  7. Creare il servizio di bilanciamento del carico nel controller di rete.

    $lb = New-NetworkControllerLoadBalancer -ConnectionUri $URI -ResourceId $ResourceId -Properties $LoadBalancerProperties -Force
    
  8. Aggiungere i nodi del cluster al pool back-end.

    È possibile aggiungere tutti i nodi al pool necessari per il cluster.

    # Cluster Node 1
    
    $nic = get-networkcontrollernetworkinterface  -connectionuri $uri -resourceid "ClusterNode1_Network-Adapter"
    $nic.properties.IpConfigurations[0].properties.LoadBalancerBackendAddressPools += $lb.properties.backendaddresspools[0]
    $nic = new-networkcontrollernetworkinterface  -connectionuri $uri -resourceid $nic.resourceid -properties $nic.properties -force
    
     # Cluster Node 2
    
    $nic = get-networkcontrollernetworkinterface  -connectionuri $uri -resourceid "ClusterNode2_Network-Adapter"
    $nic.properties.IpConfigurations[0].properties.LoadBalancerBackendAddressPools += $lb.properties.backendaddresspools[0]
    $nic = new-networkcontrollernetworkinterface  -connectionuri $uri -resourceid $nic.resourceid -properties $nic.properties -force
    

    Dopo aver creato il servizio di bilanciamento del carico e aggiunto le interfacce di rete al pool back-end, è possibile configurare il cluster.

  9. (Facoltativo) Se si usa un cluster di failover Microsoft, continuare con l'esempio successivo.

Esempio 2: Configurazione di un cluster di failover Microsoft

È possibile usare la procedura seguente per configurare un cluster di failover.

  1. Installare e configurare le proprietà per un cluster di failover.

    add-windowsfeature failover-clustering -IncludeManagementTools
    Import-module failoverclusters
    
    $ClusterName = "MyCluster"
    
    $ClusterNetworkName = "Cluster Network 1"
    $IPResourceName =
    $ILBIP = "192.168.2.100"
    
    $nodes = @("DB1", "DB2")
    
  2. Creare il cluster in un nodo.

    New-Cluster -Name $ClusterName -NoStorage -Node $nodes[0]
    
  3. Arrestare la risorsa cluster.

    Stop-ClusterResource "Cluster Name" 
    
  4. Impostare l'indirizzo IP del cluster e la porta probe.

    L'indirizzo IP deve corrispondere all'indirizzo IP front-end usato nell'esempio precedente e la porta probe deve corrispondere alla porta probe dell'esempio precedente.

    Get-ClusterResource "Cluster IP Address" | Set-ClusterParameter -Multiple @{"Address"="$ILBIP";"ProbePort"="59999";"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
    
  5. Avviare le risorse del cluster.

     Start-ClusterResource "Cluster IP Address"  -Wait 60 
     Start-ClusterResource "Cluster Name"  -Wait 60 
    
  6. Aggiungere i nodi rimanenti.

    Add-ClusterNode $nodes[1]
    

Il cluster è attivo. Il traffico che passa all'indirizzo VIP sulla porta specificata viene indirizzato al nodo attivo.