Freigeben über


Konfigurieren von Always On-Verfügbarkeitsgruppenlistenern

Gilt für:SQL Server auf Azure-VMs

Tipp

Es gibt viele Methoden zum Bereitstellen einer Verfügbarkeitsgruppe. Vereinfachen Sie Ihre Bereitstellung, indem Sie Ihre SQL Server-VMs in mehreren Subnetzen innerhalb desselben virtuellen Azure-Netzwerks erstellen. So benötigen Sie weder eine Azure Load Balancer-Instanz noch einen verteilten Netzwerknamen (DNN) für Ihre Always On-Verfügbarkeitsgruppe. Wenn Sie Ihre Verfügbarkeitsgruppe bereits in einem einzelnen Subnetz erstellt haben, können Sie sie in eine Umgebung mit mehreren Subnetzen migrieren.

In diesem Dokument erfahren Sie, wie Sie PowerShell für eine der folgenden Aufgaben nutzen können:

  • Erstellen eines Lastenausgleichs
  • Hinzufügen von IP-Adressen zu einem Lastenausgleich für SQL Server-Verfügbarkeitsgruppen

Ein Verfügbarkeitsgruppenlistener ist der Name eines virtuellen Netzwerks, mit dem Clients eine Verbindung herstellen, um Zugriff auf die Datenbank zu erhalten. Auf Azure-VMs in einem einzigen Subnetz verfügt ein Load Balancer über die IP-Adresse für den Listener. Mit dem Lastenausgleichsmodul wird Datenverkehr auf die Instanz von SQL Server geleitet, die über den Testport lauscht. Normalerweise wird für eine Verfügbarkeitsgruppe ein interner Load Balancer verwendet. Mit einem internen Azure Load Balancer kann auch eine größere Anzahl von IP-Adressen gehostet werden. Für jede IP-Adresse wird ein bestimmter Testport verwendet.

Um einem internen Lastenausgleich mehrere IP-Adressen zuzuweisen, müssen Sie eine SQL Server-Verfügbarkeitsgruppe auf virtuellen Azure-Computern im Ressourcen-Manager-Modell bereitstellen. Beide virtuellen SQL Server-Computer müssen der gleichen Verfügbarkeitsgruppe angehören. Sie können eine Azure-Schnellstartvorlage verwenden, um die Verfügbarkeitsgruppe automatisch in Azure Resource Manager zu erstellen. Mit dieser Vorlage wird die Verfügbarkeitsgruppe automatisch erstellt, einschließlich des internen Lastenausgleichsmoduls. Alternativ können Sie auch eine Always On-Verfügbarkeitsgruppe manuell konfigurieren.

Um die Schritte in diesem Artikel auszuführen, sollten Ihre Verfügbarkeitsgruppen bereits konfiguriert sein.

Verwandte Artikel umfassen:

Starten der PowerShell-Sitzung

Führen Sie das Cmdlet Connect-AzAccount aus, und Sie erhalten einen Anmeldebildschirm, um Ihre Anmeldeinformationen einzugeben. Verwenden Sie die gleichen Anmeldeinformationen wie für die Anmeldung beim Azure-Portal.

Connect-AzAccount

Wenn Sie über mehrere Abonnements verfügen, verwenden Sie das Cmdlet "Set-AzContext ", um auszuwählen, welches Abonnement Ihre PowerShell-Sitzung verwenden soll. Führen Sie das Cmdlet Get-AzContext aus, um das Abonnement anzuzeigen, das für die aktuelle PowerShell-Sitzung verwendet wird. Um alle Ihre Abonnements anzuzeigen, führen Sie Get-AzSubscription aus.

Set-AzContext -SubscriptionId 'aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e'

Überprüfen der PowerShell-Version

Die Beispiele in diesem Artikel wurden mit Version 5.4.1 des Azure PowerShell-Moduls getestet.

Vergewissern Sie sich, dass Sie mindestens Version 5.4.1 des PowerShell-Moduls verwenden.

Siehe Installieren des Azure PowerShell-Moduls.

Konfigurieren der Windows-Firewall

Konfigurieren Sie die Windows-Firewall so, dass der SQL Server-Zugriff zulässig ist. Die Firewallregeln ermöglichen TCP-Verbindungen mit den ports, die von der SQL Server-Instanz und dem Listener-Prüfpunkt verwendet werden. Weitere Informationen finden Sie unter Konfigurieren einer Windows-Firewall für Datenbank-Engine-Zugriff. Erstellen Sie für den SQL Server-Port und den Testport eine Regel für eingehenden Datenverkehr.

Wenn Sie den Zugriff mit einer Azure-Netzwerksicherheitsgruppe einschränken, stellen Sie sicher, dass die Regeln den Zugriff erlauben:

  • Die IP-Adressen der SQL Server-VMs im Back-End
  • Die Floating IP-Adressen des Lastenausgleichs für den Verfügbarkeitsgruppenlistener
  • Die IP-Adresse der Hauptressource des Clusters, falls zutreffend

Beispielskript: Erstellen eines internen Lastenausgleichs mit PowerShell

Hinweis

Wenn Sie Ihre Verfügbarkeitsgruppe mit einer Azure-Schnellstartvorlage erstellt haben, wurde das interne Lastenausgleichsmodul bereits erstellt.

Mit dem folgenden PowerShell-Skript wird ein internes Lastenausgleichsmodul erstellt, die Lastenausgleichsregeln werden erstellt und eine IP-Adresse für das Lastenausgleichsmodul wird festgelegt. Öffnen Sie Windows PowerShell ISE, und fügen Sie das Skript im Bereich „Skript“ ein, um es auszuführen. Verwenden Sie Connect-AzAccount, um sich mit PowerShell bei Azure anzumelden. Verwenden Sie bei mehreren Azure-Abonnements Select-AzSubscription , um das Abonnement festzulegen.

# Connect-AzAccount
# Select-AzSubscription -SubscriptionId <xxxxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx>

$ResourceGroupName = "<Resource Group Name>" # Resource group name
$VNetName = "<Virtual Network Name>"         # Virtual network name
$SubnetName = "<Subnet Name>"                # Subnet name
$ILBName = "<Load Balancer Name>"            # ILB name
$Location = "<Azure Region>"                 # Azure location
$VMNames = "<VM1>","<VM2>"                   # Virtual machine names

$ILBIP = "<n.n.n.n>"                         # IP address
[int]$ListenerPort = "<nnnn>"                # AG listener port
[int]$ProbePort = "<nnnn>"                   # Probe port

$LBProbeName ="ILBPROBE_$ListenerPort"       # The Load balancer Probe Object Name
$LBConfigRuleName = "ILBCR_$ListenerPort"    # The Load Balancer Rule Object Name

$FrontEndConfigurationName = "FE_SQLAGILB_1" # Object name for the front-end configuration
$BackEndConfigurationName ="BE_SQLAGILB_1"   # Object name for the back-end configuration

$VNet = Get-AzVirtualNetwork -Name $VNetName -ResourceGroupName $ResourceGroupName

$Subnet = Get-AzVirtualNetworkSubnetConfig -VirtualNetwork $VNet -Name $SubnetName

$FEConfig = New-AzLoadBalancerFrontendIpConfig -Name $FrontEndConfigurationName -PrivateIpAddress $ILBIP -SubnetId $Subnet.id

$BEConfig = New-AzLoadBalancerBackendAddressPoolConfig -Name $BackEndConfigurationName

$SQLHealthProbe = New-AzLoadBalancerProbeConfig -Name $LBProbeName -Protocol tcp -Port $ProbePort -IntervalInSeconds 15 -ProbeCount 2

$ILBRule = New-AzLoadBalancerRuleConfig -Name $LBConfigRuleName -FrontendIpConfiguration $FEConfig -BackendAddressPool $BEConfig -Probe $SQLHealthProbe -Protocol tcp -FrontendPort $ListenerPort -BackendPort $ListenerPort -LoadDistribution Default -EnableFloatingIP

$ILB= New-AzLoadBalancer -Location $Location -Name $ILBName -ResourceGroupName $ResourceGroupName -FrontendIpConfiguration $FEConfig -BackendAddressPool $BEConfig -LoadBalancingRule $ILBRule -Probe $SQLHealthProbe

$bepool = Get-AzLoadBalancerBackendAddressPoolConfig -Name $BackEndConfigurationName -LoadBalancer $ILB

foreach($VMName in $VMNames)
    {
        $VM = Get-AzVM -ResourceGroupName $ResourceGroupName -Name $VMName
        $NICName = ($vm.NetworkProfile.NetworkInterfaces.Id.split('/') | select -last 1)
        $NIC = Get-AzNetworkInterface -name $NICName -ResourceGroupName $ResourceGroupName
        $NIC.IpConfigurations[0].LoadBalancerBackendAddressPools = $BEPool
        Set-AzNetworkInterface -NetworkInterface $NIC
        start-AzVM -ResourceGroupName $ResourceGroupName -Name $VM.Name
    }

Hinweis

Der Standardloadbalancer wurde abgeschaltet. Verwenden Sie für neue Bereitstellungen den Standard-Lastenausgleich. Wenn Sie über eine vorhandene Bereitstellung verfügen, die den Standardlastenausgleich verwendet, führen Sie ein Upgrade auf den Standardlastenausgleich aus.

Beispielskript: Hinzufügen einer IP-Adresse zu einem vorhandenen Lastenausgleichsmodul mit PowerShell

Um mehrere Verfügbarkeitsgruppen zu verwenden, fügen Sie dem Lastenausgleich eine weitere IP-Adresse hinzu. Für jede IP-Adresse sind eine eigene Lastenausgleichsregel, ein Testport und ein Front-End-Port erforderlich. Fügen Sie nur die primäre IP-Adresse der VM zum Back-End-Pool des Load Balancers hinzu, da die sekundäre VM-IP-Adresse eine Floating-IP nicht unterstützt.

Der Front-End-Port ist der Port, der von Anwendungen zum Herstellen einer Verbindung mit der SQL Server-Instanz genutzt wird. IP-Adressen für unterschiedliche Verfügbarkeitsgruppen können denselben Front-End-Port verwenden.

Hinweis

Bei SQL Server-Verfügbarkeitsgruppen wird für jede IP-Adresse ein bestimmter Testport benötigt. Wenn für eine IP-Adresse eines Lastenausgleichsmoduls beispielsweise der Testport 59999 verwendet wird, können keine anderen IP-Adressen des Lastenausgleichsmoduls den Testport 59999 nutzen.

Mit dem folgenden Skript wird einem vorhandenen Lastenausgleichsmodul eine neue IP-Adresse hinzugefügt. Das interne Lastenausgleichsmodul verwendet den Listenerport für den Front-End-Port des Lastenausgleichs. Dieser Port kann der Port sein, über den SQL Server lauscht. Für Standardinstanzen von SQL Server lautet der Port 1433. Für die Lastenausgleichsregel einer Verfügbarkeitsgruppe wird eine Floating IP-Adresse (Direct Server Return) benötigt, sodass der Back-End-Port dem Front-End-Port entspricht. Aktualisieren Sie die Variablen für Ihre Umgebung.

# Connect-AzAccount
# Select-AzSubscription -SubscriptionId <xxxxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx>

$ResourceGroupName = "<ResourceGroup>"          # Resource group name
$VNetName = "<VirtualNetwork>"                  # Virtual network name
$SubnetName = "<Subnet>"                        # Subnet name
$ILBName = "<ILBName>"                          # ILB name

$ILBIP = "<n.n.n.n>"                            # IP address
[int]$ListenerPort = "<nnnn>"                   # AG listener port
[int]$ProbePort = "<nnnnn>"                     # Probe port

$ILB = Get-AzLoadBalancer -Name $ILBName -ResourceGroupName $ResourceGroupName

$count = $ILB.FrontendIpConfigurations.Count+1
$FrontEndConfigurationName ="FE_SQLAGILB_$count"

$LBProbeName = "ILBPROBE_$count"
$LBConfigrulename = "ILBCR_$count"

$VNet = Get-AzVirtualNetwork -Name $VNetName -ResourceGroupName $ResourceGroupName
$Subnet = Get-AzVirtualNetworkSubnetConfig -VirtualNetwork $VNet -Name $SubnetName

$ILB | Add-AzLoadBalancerFrontendIpConfig -Name $FrontEndConfigurationName -PrivateIpAddress $ILBIP -SubnetId $Subnet.Id

$ILB | Add-AzLoadBalancerProbeConfig -Name $LBProbeName  -Protocol Tcp -Port $Probeport -ProbeCount 2 -IntervalInSeconds 15  | Set-AzLoadBalancer

$ILB = Get-AzLoadBalancer -Name $ILBname -ResourceGroupName $ResourceGroupName

$FEConfig = get-AzLoadBalancerFrontendIpConfig -Name $FrontEndConfigurationName -LoadBalancer $ILB

$SQLHealthProbe  = Get-AzLoadBalancerProbeConfig -Name $LBProbeName -LoadBalancer $ILB

$BEConfig = Get-AzLoadBalancerBackendAddressPoolConfig -Name $ILB.BackendAddressPools[0].Name -LoadBalancer $ILB

$ILB | Add-AzLoadBalancerRuleConfig -Name $LBConfigRuleName -FrontendIpConfiguration $FEConfig  -BackendAddressPool $BEConfig -Probe $SQLHealthProbe -Protocol tcp -FrontendPort  $ListenerPort -BackendPort $ListenerPort -LoadDistribution Default -EnableFloatingIP | Set-AzLoadBalancer

Konfigurieren des Listeners

Der Verfügbarkeitsgruppenlistener umfasst eine IP-Adresse und einen Netzwerknamen, über die die SQL Server-Verfügbarkeitsgruppe lauscht. So erstellen Sie einen Verfügbarkeitsgruppenlistener:

  1. Abrufen des Namens der Clusternetzwerkressource:

    a) Verwenden Sie Bastion , um eine Verbindung mit dem virtuellen Azure-Computer herzustellen, auf dem das primäre Replikat gehostet wird.

    b. Öffnen Sie den Failovercluster-Manager.

    Abschnitt c. Wählen Sie den Knoten Netzwerke aus, und notieren Sie den Netzwerknamen des Clusters. Verwenden Sie diesen Namen im PowerShell-Skript in der Variablen $ClusterNetworkName . In der folgenden Abbildung lautet der Name des Clusternetzwerks Cluster Network 1:

    Screenshot eines Clusternetzwerknamen im Failovercluster-Manager

  2. Fügen Sie den Clientzugriffspunkt hinzu. Der Clientzugriffspunkt ist der Netzwerkname, der von den Anwendungen zum Herstellen der Verbindung mit den Datenbanken einer Verfügbarkeitsgruppe verwendet wird.

    a) Erweitern Sie im Failovercluster-Manager den Clusternamen, und wählen Sie dann Rollen aus.

    b. Klicken Sie im Bereich Rollen mit der rechten Maustaste auf den Verfügbarkeitsgruppennamen, und wählen Sie dann Ressource hinzufügen>Clientzugriffspunkt aus.

    Screenshot des Failovercluster-Managers beim Auswählen des Clientzugriffspunkt-Befehls im Kontextmenü für die Verfügbarkeitsgruppe

    Abschnitt c. Erstellen Sie im Feld Name einen Namen für diesen neuen Listener. Der Name für den neuen Listener ist der Netzwerkname, den Anwendungen beim Herstellen einer Verbindung mit Datenbanken in der SQL Server-Verfügbarkeitsgruppe verwenden.

    d. Klicken Sie zum Abschließen der Listenererstellung zweimal auf Weiter und dann auf Fertig stellen. Schalten Sie den Listener oder die Ressource jetzt noch nicht online.

  3. Schalten Sie die Clusterrolle der Verfügbarkeitsgruppe offline. Klicken Sie im Failovercluster-Manager unter Rollen mit der rechten Maustaste auf die Rolle, und klicken Sie dann auf Rolle beenden.

  4. Konfigurieren der IP-Ressource für die Verfügbarkeitsgruppe:

    a) Klicken Sie auf die Registerkarte Ressourcen, und erweitern Sie dann den erstellten Clientzugriffspunkt. Der Clientzugriffspunkt ist offline.

    Screenshot des Failovercluster-Managers mit einem Offlinestatus für einen Clientzugriffspunkt

    b. Klicken Sie mit der rechten Maustaste auf die IP-Ressource, und klicken Sie dann auf Eigenschaften. Notieren Sie den Namen der IP-Adresse, und verwenden Sie ihn in der Variablen $IPResourceName im PowerShell-Skript.

    Abschnitt c. Klicken Sie unter IP-Adresse auf Statische IP-Adresse. Legen Sie die IP-Adresse auf die gleiche Adresse fest, die Sie beim Festlegen der Adresse für den Lastenausgleich im Azure-Portal verwendet haben.

    Screenshot des Failovercluster-Managers, der die Auswahl einer IP-Adresse zeigt

  5. Einrichten der Abhängigkeit der SQL Server-Verfügbarkeitsgruppenressource vom Clientzugriffspunkt:

    a) Klicken Sie im Failovercluster-Manager auf Rollen und dann auf Ihre Verfügbarkeitsgruppe.

    b. Klicken Sie auf der Registerkarte Ressourcen unter Sonstige Ressourcen mit der rechten Maustaste auf die Verfügbarkeitsressource, und klicken Sie dann auf Eigenschaften.

    Abschnitt c. Fügen Sie auf der Registerkarte Abhängigkeiten den Namen des Clientzugriffspunkts (Listener) hinzu.

    Screenshot des Failovercluster-Managers, der das Hinzufügen eines Namens auf der Registerkarte „Abhängigkeiten“ zeigt

    d. Klicken Sie auf OK.

  6. Abhängigmachen der Ressource des Clientzugangspunkts von der IP-Adresse:

    a) Klicken Sie im Failovercluster-Manager auf Rollen und dann auf Ihre Verfügbarkeitsgruppe.

    b. Klicken Sie auf der Registerkarte Ressourcen unter Servername mit der rechten Maustaste auf den Clientzugriffspunkt, und wählen Sie dann Eigenschaften aus.

    Screenshot des Failovercluster-Managers mit der Menüoption „Eigenschaften“ für den Namen des Listeners

    Abschnitt c. Klicken Sie auf die Registerkarte Abhängigkeiten. Überprüfen Sie, ob es sich bei der IP-Adresse um eine Abhängigkeit handelt. Wenn dies nicht der Fall ist, legen Sie eine Abhängigkeit für die IP-Adresse fest. Wenn mehrere Ressourcen aufgelistet sind, vergewissern Sie sich, dass die IP-Adressen ORkeineAND Abhängigkeiten aufweisen. Klicken Sie anschließend auf OK.

    Screenshot der Registerkarte „Abhängigkeiten“ mit einer IP-Ressource für eine Verfügbarkeitsgruppe

    Tipp

    Sie können überprüfen, ob die Abhängigkeiten ordnungsgemäß konfiguriert sind. Wechseln Sie im Failovercluster-Manager zu Rollen, klicken Sie mit der rechten Maustaste auf die Verfügbarkeitsgruppe, wählen Sie Weitere Aktionen aus, und klicken Sie dann auf Abhängigkeitsbericht anzeigen. Wenn die Abhängigkeiten ordnungsgemäß konfiguriert sind, ist die Verfügbarkeitsgruppe vom Netzwerknamen und der Netzwerkname von der IP-Adresse abhängig.

  7. Festlegen der Clusterparameter in PowerShell:

    a) Kopieren Sie das folgende PowerShell-Skript in eine Ihrer SQL Server-Instanzen. Aktualisieren Sie die Variablen für Ihre Umgebung.

    • $ClusterNetworkName: Suchen Sie nach dem Namen im Failovercluster-Manger, indem Sie Netzwerke auswählen, mit der rechten Maustaste auf das Netzwerk klicken und dann Eigenschaften auswählen. Der $ClusterNetworkName befindet sich auf der Registerkarte Allgemein unter Name.

    • $IPResourceName ist der Name der IP-Adressressource im Failovercluster-Manager. Dieses finden Sie im Failovercluster-Manager, indem Sie Rollen auswählen, den SQL Server AG- oder FCI-Namen auswählen, unter Servername die Registerkarte Ressourcen auswählen, mit der rechten Maustaste auf die IP-Adressressource klicken und Eigenschaften auswählen. Der richtige Wert befindet sich auf der Registerkarte Allgemein unter Name.

    • $ListenerILBIP ist die IP-Adresse, die Sie im Azure Load Balancer für den Verfügbarkeitsgruppenlistener angelegt haben. Suchen Sie den $ListenerILBIP im Failovercluster-Manager auf derselben Eigenschaftenseite wie den SQL Server AG/FCI Listener-Ressourcenname.

    • $ListenerProbePort ist der Port, den Sie in Azure Load Balancer für den Verfügbarkeitsgruppenlistener konfiguriert haben, z. B. 59999. Alle nicht verwendeten TCP-Ports sind zulässig.

    $ClusterNetworkName = "<MyClusterNetworkName>" # The cluster network name. Use Get-ClusterNetwork on Windows Server 2012 or later to find the name.
    $IPResourceName = "<IPResourceName>" # The IP address resource name.
    $ListenerILBIP = "<n.n.n.n>" # The IP address of the internal load balancer. This is the static IP address for the load balancer that you configured in the Azure portal.
    [int]$ListenerProbePort = <nnnnn>
    
    Import-Module FailoverClusters
    
    Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ListenerILBIP";"ProbePort"=$ListenerProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
    

    b. Legen Sie die Clusterparameter fest, indem Sie das PowerShell-Skript auf einem der Clusterknoten ausführen.

    Hinweis

    Falls sich Ihre SQL Server-Instanzen in unterschiedlichen Regionen befinden, muss das PowerShell-Skript zweimal ausgeführt werden. Verwenden Sie beim ersten Mal die Werte $ListenerILBIP und $ListenerProbePort der ersten Region. Verwenden Sie beim zweiten Mal die Werte $ListenerILBIP und $ListenerProbePort der zweiten Region. Der Name des Clusternetzwerks und der Cluster-IP-Ressourcenname sind auch in jeder Region unterschiedlich.

  8. Schalten Sie die Clusterrolle für die Verfügbarkeitsgruppe online. Klicken Sie im Failovercluster-Manager unter Rollen mit der rechten Maustaste auf die Rolle, und klicken Sie dann auf Rolle starten.

Wiederholen Sie bei Bedarf die vorherigen Schritte, um die Clusterparameter für die IP-Adresse des Windows Server-Failoverclusters festzulegen:

  1. Rufen Sie den IP-Adressnamen des Windows Server-Failoverclusters ab. Suchen Sie den Servernamen im Failovercluster-Manager unter Hauptressourcen des Clusters.

  2. Klicken Sie erst mit der rechten Maustaste auf IP-Adresse, und wählen Sie dann Eigenschaften aus.

  3. Kopieren Sie aus Name den Namen der IP-Adresse. Es kann sich um die Cluster-IP-Adresse handeln.

  4. Festlegen der Clusterparameter in PowerShell:

    a) Kopieren Sie das folgende PowerShell-Skript in eine Ihrer SQL Server-Instanzen. Aktualisieren Sie die Variablen für Ihre Umgebung.

    • $ClusterCoreIP ist die IP-Adresse, die Sie in Azure Load Balancer für die Hauptclusterressource des Windows Server-Failoverclusters erstellt haben. Sie unterscheidet sich von der IP-Adresse des Verfügbarkeitsgruppenlisteners.

    • $ClusterProbePort ist der Port, den Sie in Azure Load Balancer für den Integritätstest des Windows Server-Failoverclusters konfiguriert haben. Er unterscheidet sich vom Test für den Verfügbarkeitsgruppenlistener.

    $ClusterNetworkName = "<MyClusterNetworkName>" # The cluster network name. Use Get-ClusterNetwork on Windows Server 2012 or later to find the name.
    $IPResourceName = "<ClusterIPResourceName>" # The IP address resource name.
    $ClusterCoreIP = "<n.n.n.n>" # The IP address of the cluster IP resource. This is the static IP address for the load balancer that you configured in the Azure portal.
    [int]$ClusterProbePort = <nnnnn> # The probe port from WSFCEndPointprobe in the Azure portal. This port must be different from the probe port for the availability group listener.
    
    Import-Module FailoverClusters
    
    Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ClusterCoreIP";"ProbePort"=$ClusterProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
    

    b. Legen Sie die Clusterparameter fest, indem Sie das PowerShell-Skript auf einem der Clusterknoten ausführen.

Wenn eine SQL-Ressource für die Verwendung eines Ports zwischen 49.152 und 65.536 (der standardmäßige dynamische Portbereich für TCP/IP) konfiguriert ist, fügen Sie einen Ausschluss für jeden Port hinzu. Solche Ressourcen können Folgendes umfassen:

  • SQL Server-Datenbank-Engine
  • Always On-Verfügbarkeitsgruppenlistener
  • Integritätstest für die Failoverclusterinstanz
  • Endpunkt für die Datenbankspiegelung
  • Clusterkern-IP-Ressource

Durch Hinzufügen eines Ausschlusses wird verhindert, dass andere Systemprozesse dynamisch demselben Port zugewiesen werden. Konfigurieren Sie für dieses Szenario die folgenden Ausschlüsse auf allen Clusterknoten:

  • netsh int ipv4 add excludedportrange tcp startport=58888 numberofports=1 store=persistent
  • netsh int ipv4 add excludedportrange tcp startport=59999 numberofports=1 store=persistent

Es ist wichtig, den Portausschluss zu konfigurieren, wenn der Port nicht verwendet wird. Andernfalls wird der Befehl mit einer Nachricht wie The process cannot access the file because it is being used by another process fehlschlagen. Um zu bestätigen, dass die Ausschlüsse ordnungsgemäß konfiguriert sind, verwenden Sie den folgenden Befehl: netsh int ipv4 show excludedportrange tcp

Warnung

Der Port für den Integritätstest des Verfügbarkeitsgruppenlisteners muss sich vom Port für den Integritätstest der IP-Adresse der Hauptressource des Clusters unterscheiden. In diesen Beispielen ist der Listenerport 59999, und der Port für den Integritätstest der IP-Adresse der Hauptressource des Clusters lautet 58888. Für beide Ports ist eine „Eingehende zulassen“-Firewallregel erforderlich.

Festlegen des Listenerports in SQL Server Management Studio

  1. Starten Sie SQL Server Management Studio, und stellen Sie eine Verbindung mit dem primären Replikat her.

  2. Navigieren Sie zu Hochverfügbarkeit mit Always On>Verfügbarkeitsgruppen>Verfügbarkeitsgruppenlistener.

  3. Jetzt sollte der Listenername angezeigt werden, den Sie im Failovercluster-Manager erstellt haben. Klicken Sie mit der rechten Maustaste auf den Listenernamen, und wählen Sie Eigenschaften aus.

  4. Geben Sie im Feld Port die Portnummer für den Verfügbarkeitsgruppenlistener an. Verwenden Sie dabei den zuvor verwendeten Wert für $EndpointPort (Standardwert: 1433). Wählen Sie anschließend OK aus.

Testen der Verbindung mit dem Listener

Gehen Sie wie folgt vor, um die Verbindung zu testen:

  1. Verwenden Sie Bastion , um eine Verbindung mit einem SQL Server herzustellen, der sich im selben virtuellen Netzwerk befindet, das Replikat jedoch nicht besitzt. Hierbei kann es sich um die andere SQL Server-Instanz im Cluster handeln.

  2. Testen Sie die Verbindung mithilfe des sqlcmd -Hilfsprogramms. Das folgende Skript stellt beispielsweise über den Listener eine sqlcmd -Verbindung mit Windows-Authentifizierung mit dem primären Replikat her:

    sqlcmd -S <listenerName> -E
    

    Geben Sie den Port in der Verbindungszeichenfolge an, wenn der Listener einen anderen Port als den Standardport (1433) verwendet. Mit dem folgenden sqlcmd-Befehl wird beispielsweise eine Verbindung mit einem Listener über Port 1435 hergestellt:

    sqlcmd -S <listenerName>,1435 -E
    

Die sqlcmd-Verbindung wird automatisch mit der SQL Server-Instanz hergestellt, die das primäre Replikat hostet.

Hinweis

Vergewissern Sie sich, dass der angegebene Port in der Firewall beider SQL Server geöffnet ist. Beide Server benötigen eine eingehende Regel für den TCP-Port, den Sie verwenden möchten. Weitere Informationen finden Sie unter Hinzufügen oder Bearbeiten einer Firewallregel.

Wenn Sie sich auf der sekundären Replikat-VM befinden und keine Verbindung mit dem Listener herstellen können, ist es möglich, dass der Probeport nicht ordnungsgemäß konfiguriert wurde.

Sie können das folgende Skript verwenden, um zu überprüfen, ob der Testport für die Verfügbarkeitsgruppe ordnungsgemäß konfiguriert ist:

Clear-Host
Get-ClusterResource `
| Where-Object {$_.ResourceType.Name -like "IP Address"} `
| Get-ClusterParameter `
| Where-Object {($_.Name -like "Network") -or ($_.Name -like "Address") -or ($_.Name -like "ProbePort") -or ($_.Name -like "SubnetMask")}

Richtlinien und Einschränkungen

Beachten Sie die folgenden Richtlinien für einen Verfügbarkeitsgruppenlistener in Azure mithilfe eines internen Lastenausgleichs:

  • Bei Verwendung eines internen Load Balancers erfolgt der Zugriff auf den Listener nur innerhalb desselben virtuellen Netzwerks.

  • Wenn Sie den Zugriff mit einer Azure-Netzwerksicherheitsgruppe einschränken, stellen Sie sicher, dass die Regeln den Zugriff erlauben:

    • Die IP-Adressen der SQL Server-VMs im Back-End
    • Die Floating IP-Adressen des Lastenausgleichs für den Verfügbarkeitsgruppenlistener
    • Die IP-Adresse der Hauptressource des Clusters, falls zutreffend
  • Erstellen Sie einen Dienstendpunkt, wenn Sie einen Standardlastenausgleich mit Azure Storage als Cloudzeugen verwenden. Weitere Informationen finden Sie unter Gewähren des Zugriffs über ein virtuelles Netzwerk.

PowerShell-Cmdlets

Verwenden Sie die folgenden PowerShell-Cmdlets, um ein internes Lastenausgleichsmodul für Azure Virtual Machines zu erstellen.