Gastclustering in einem virtuellen Netzwerk
Virtuelle Computer, die mit einem virtuellen Netzwerk verbunden sind, dürfen nur die IP-Adressen verwenden, die Netzwerkcontroller für die Kommunikation im Netzwerk zugewiesen hat. Clustertechnologien, die eine Floating IP benötigen (z. B. Microsoft-Failoverclustering), erfordern einige zusätzliche Schritte, um ordnungsgemäß zu funktionieren.
Die Methode zur Herstellung der Erreichbarkeit der Floating IP besteht darin, eine virtuelle IP (VIP) des Softwarelastenausgleich (Software Load Balancer, SLB) zu verwenden. Der Softwarelastenausgleich muss mit einer Integritätsprüfung an einem Port dieser IP konfiguriert werden, damit der SLB den Datenverkehr an den Computer weiterleitet, der aktuell diese IP hat.
Beispiel: Konfiguration des Lastenausgleichs
In diesem Beispiel wird davon ausgegangen, dass Sie die VMs, die zu Clusterknoten werden, bereits erstellt und an eine Virtual Network-Instanz angefügt haben. Weitere Informationen finden Sie unter Erstellen eines virtuellen Computers und Verbinden mit einem virtuellen Mandantennetzwerk oder VLAN.
In diesem Beispiel erstellen Sie eine virtuelle IP-Adresse (192.168.2.100), um die Floating IP des Clusters darzustellen, und Sie konfigurieren einen Integritätstest zur Überwachung des TCP-Ports 59999, um zu ermitteln, welcher Knoten der aktive ist.
Wählen Sie die VIP aus.
Bereiten Sie sich vor, indem Sie eine VIP-Adresse zuweisen, die eine beliebige ungenutzte oder reservierte Adresse im selben Subnetz wie die Clusterknoten sein kann. Die VIP muss der Floating IP des Clusters entsprechen.
$VIP = "192.168.2.100" $subnet = "Subnet2" $VirtualNetwork = "MyNetwork" $ResourceId = "MyNetwork_InternalVIP"
Erstellen Sie das Eigenschaftsobjekt des Lastenausgleichs.
$LoadBalancerProperties = new-object Microsoft.Windows.NetworkController.LoadBalancerProperties
Erstellen Sie eine Front-End-IP-Adresse.
$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"
Erstellen Sie einen Back-End-Pool, der die Clusterknoten enthält.
$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
Fügen Sie einen Test hinzu, um zu ermitteln, auf welchem Clusterknoten die Floating IP aktuell aktiv ist.
Hinweis
Die Testabfrage erfolgt für die permanente Adresse des virtuellen Computers an dem unten definierten Port. Der Port muss nur auf den aktiven Knoten reagieren.
$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
Fügen Sie die Lastenausgleichsregeln für den TCP-Port 1433 hinzu.
Sie können das Protokoll und den Port bei Bedarf ändern. Sie können diesen Schritt auch mehrmals für andere Ports und Protokolle in diesem VIP wiederholen. Es ist wichtig, dass EnableFloatingIP auf „$true“ festgelegt ist, da dies den Lastausgleich anweist, das Paket an den Knoten mit der ursprünglichen VIP zu senden.
$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
Erstellen Sie den Lastenausgleich in Netzwerkcontroller.
$lb = New-NetworkControllerLoadBalancer -ConnectionUri $URI -ResourceId $ResourceId -Properties $LoadBalancerProperties -Force
Fügen Sie die Clusterknoten zum Back-End-Pool hinzu.
Sie können dem Pool so viele Knoten hinzufügen, wie für den Cluster erforderlich sind.
# 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
Nachdem Sie den Lastenausgleich erstellt und dem Back-End-Pool die Netzwerkschnittstellen hinzugefügt haben, können Sie den Cluster konfigurieren.
(Optional) Wenn Sie einen Microsoft-Failovercluster verwenden, fahren Sie mit dem nächsten Beispiel fort.
Beispiel 2: Konfigurieren eines Microsoft-Failoverclusters
Sie können die folgenden Schritte zum Konfigurieren eines Failoverclusters verwenden.
Installieren und Konfigurieren Sie die Eigenschaften eines Failoverclusters.
add-windowsfeature failover-clustering -IncludeManagementTools Import-module failoverclusters $ClusterName = "MyCluster" $ClusterNetworkName = "Cluster Network 1" $IPResourceName = $ILBIP = "192.168.2.100" $nodes = @("DB1", "DB2")
Erstellen Sie den Cluster auf einem Knoten.
New-Cluster -Name $ClusterName -NoStorage -Node $nodes[0]
Beenden Sie die Clusterressource.
Stop-ClusterResource "Cluster Name"
Legen Sie die Cluster-IP und den Testport fest.
Die IP-Adresse muss mit der im vorherigen Beispiel verwendeten Front-End-IP-Adresse übereinstimmen, und der Testport muss mit dem Testport im vorherigen Beispiel übereinstimmen.
Get-ClusterResource "Cluster IP Address" | Set-ClusterParameter -Multiple @{"Address"="$ILBIP";"ProbePort"="59999";"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
Starten Sie die Clusterressourcen.
Start-ClusterResource "Cluster IP Address" -Wait 60 Start-ClusterResource "Cluster Name" -Wait 60
Fügen Sie die verbleibenden Knoten hinzu.
Add-ClusterNode $nodes[1]
Ihr Cluster ist aktiv. Datenverkehr, der an die VIP am angegebenen Port geht, wird an den aktiven Knoten geleitet.