Delen via


Een externe listener configureren voor beschikbaarheidsgroepen op Azure SQL Server-VM's

In dit onderwerp wordt beschreven hoe u een listener configureert voor een AlwaysOn-beschikbaarheidsgroep die extern toegankelijk is op internet. Dit wordt mogelijk gemaakt door het openbare VIP-adres (Virtual IP) van de cloudservice te koppelen aan de listener.

Belangrijk

Azure heeft twee verschillende implementatiemodellen voor het maken en werken met resources: Resource Manager en klassiek. In dit artikel wordt beschreven hoe u het klassieke implementatiemodel gebruikt. U doet er verstandig aan voor de meeste nieuwe implementaties het Resource Manager-model te gebruiken.

Uw beschikbaarheidsgroep kan replica's bevatten die alleen on-premises, alleen Azure of zowel on-premises als Azure omvatten voor hybride configuraties. Azure-replica's kunnen zich in dezelfde regio of in meerdere regio's bevinden met behulp van meerdere virtuele netwerken (VNets). In de onderstaande stappen wordt ervan uitgegaan dat u al een beschikbaarheidsgroep hebt geconfigureerd , maar dat u geen listener hebt geconfigureerd.

Richtlijnen en beperkingen voor externe listeners

Let op de volgende richtlijnen over de listener voor beschikbaarheidsgroepen in Azure wanneer u implementeert met behulp van het openbare VIP-adres van de cloudservice:

  • De listener voor beschikbaarheidsgroepen wordt ondersteund in Windows Server 2008 R2, Windows Server 2012 en Windows Server 2012 R2.
  • De clienttoepassing moet zich in een andere cloudservice bevinden dan de cloudservice die de VM's van uw beschikbaarheidsgroep bevat. Azure biedt geen ondersteuning voor direct server return met client en server in dezelfde cloudservice.
  • Standaard laten de stappen in dit artikel zien hoe u één listener configureert voor het gebruik van het VIP-adres (Virtual IP) van de cloudservice. Het is echter mogelijk om meerdere VIP-adressen voor uw cloudservice te reserveren en te maken. Hierdoor kunt u de stappen in dit artikel gebruiken om meerdere listeners te maken die elk zijn gekoppeld aan een ander VIP. Zie Meerdere VIP-adressen per cloudservice voor meer informatie over het maken van meerdere VIP-adressen.
  • Als u een listener voor een hybride omgeving maakt, moet het on-premises netwerk verbinding hebben met het openbare internet, naast de site-naar-site-VPN met het virtuele Azure-netwerk. Wanneer u zich in het Azure-subnet bevindt, is de listener van de beschikbaarheidsgroep alleen bereikbaar via het openbare IP-adres van de respectieve cloudservice.
  • Het wordt niet ondersteund om een externe listener te maken in dezelfde cloudservice waar u ook een interne listener hebt met behulp van de Interne Load Balancer (ILB).

De toegankelijkheid van de listener bepalen

Het is belangrijk om te beseffen dat er twee manieren zijn om een listener voor een beschikbaarheidsgroep in Azure te configureren. De manieren verschillen in het type Azure Load Balancer dat u gebruikt wanneer u de listener maakt. In de volgende tabel worden de verschillen beschreven:

Type load balancer Implementatie Gebruiken wanneer:
Extern Gebruikt het openbare virtuele IP-adres van de cloudservice die als host fungeert voor de virtuele machines (VM's). U moet toegang krijgen tot de listener van buiten het virtuele netwerk, met inbegrip van internet.
Intern Maakt gebruik van een interne load balancer met een privéadres voor de listener. U hebt alleen toegang tot de listener vanuit hetzelfde virtuele netwerk. Deze toegang omvat site-naar-site VPN in hybride scenario's.

Belangrijk

Voor een listener die gebruikmaakt van het openbare VIP van de cloudservice (externe load balancer), zolang de client, listener en databases zich in dezelfde Azure-regio bevinden, worden er geen uitgaande kosten in rekening gebracht. Anders worden alle gegevens die via de listener worden geretourneerd, beschouwd als uitgaand verkeer en worden er kosten in rekening gebracht tegen normale gegevensoverdrachtsnelheden.

Een ILB kan alleen worden geconfigureerd voor virtuele netwerken met een regionaal bereik. Bestaande virtuele netwerken die zijn geconfigureerd voor een affiniteitsgroep, kunnen geen ILB gebruiken. Zie het overzicht van interne load balancer voor meer informatie.

Dit artikel is gericht op het maken van een listener die gebruikmaakt van externe taakverdeling. Als u een listener wilt die privé is voor uw virtuele netwerk, raadpleegt u de versie van dit artikel met stappen voor het instellen van een listener met ILB

VM-eindpunten met gelijke taakverdeling maken met direct server return

Externe taakverdeling maakt gebruik van het virtuele virtuele IP-adres van de cloudservice die als host fungeert voor uw VM's. Daarom hoeft u in dit geval de load balancer niet te maken of te configureren.

U moet een eindpunt met gelijke taakverdeling maken voor elke VM die als host fungeert voor een Azure-replica. Als u replica's in meerdere regio's hebt, moet elke replica voor die regio zich in dezelfde cloudservice in hetzelfde VNet bevinden. Voor het maken van replica's van beschikbaarheidsgroepen die meerdere Azure-regio's omvatten, moet u meerdere VNets configureren. Zie VNet configureren voor VNet-connectiviteit naar VNet-connectiviteit voor meer informatie over het configureren van connectiviteit tussen VNet's.

  1. Navigeer in de Azure Portal naar elke VIRTUELE machine die als host fungeert voor een replica en bekijk de details.

  2. Klik op het tabblad Eindpunten voor elk van de VM's.

  3. Controleer of de naam en openbare poort van het listener-eindpunt dat u wilt gebruiken, nog niet in gebruik zijn. In het onderstaande voorbeeld is de naam 'MyEndpoint' en is de poort '1433'.

  4. Download en installeer de nieuwste PowerShell-module op uw lokale client.

  5. Start Azure PowerShell. Er wordt een nieuwe PowerShell-sessie geopend met de Azure-beheermodules geladen.

  6. Voer Get-AzurePublishSettingsFile uit. Met deze cmdlet wordt u naar een browser om een bestand met publicatie-instellingen naar een lokale map te downloaden. Mogelijk wordt u gevraagd om uw aanmeldingsreferenties voor uw Azure-abonnement.

  7. Voer de opdracht Import-AzurePublishSettingsFile uit met het pad van het bestand met publicatie-instellingen dat u hebt gedownload:

    Import-AzurePublishSettingsFile -PublishSettingsFile <PublishSettingsFilePath>
    

    Zodra het bestand met publicatie-instellingen is geïmporteerd, kunt u uw Azure-abonnement beheren in de PowerShell-sessie.

  8. Kopieer het Onderstaande PowerShell-script naar een teksteditor en stel de variabelewaarden in op basis van uw omgeving (standaardwaarden zijn opgegeven voor sommige parameters). Als uw beschikbaarheidsgroep Azure-regio's omvat, moet u het script eenmaal uitvoeren in elk datacenter voor de cloudservice en knooppunten die zich in dat datacenter bevinden.

    # Define variables
    $ServiceName = "<MyCloudService>" # the name of the cloud service that contains the availability group nodes
    $AGNodes = "<VM1>","<VM2>","<VM3>" # all availability group nodes containing replicas in the same cloud service, separated by commas
    
    # Configure a load balanced endpoint for each node in $AGNodes, with direct server return enabled
    ForEach ($node in $AGNodes)
    {
        Get-AzureVM -ServiceName $ServiceName -Name $node | Add-AzureEndpoint -Name "ListenerEndpoint" -Protocol "TCP" -PublicPort 1433 -LocalPort 1433 -LBSetName "ListenerEndpointLB" -ProbePort 59999 -ProbeProtocol "TCP" -DirectServerReturn $true | Update-AzureVM
    }
    
  9. Zodra u de variabelen hebt ingesteld, kopieert u het script vanuit de teksteditor naar uw Azure PowerShell sessie om het uit te voeren. Als de prompt nog steeds wordt weergegeven >>, typt u ENTER opnieuw om te controleren of het script wordt uitgevoerd.

Controleer of KB2854082 zo nodig is geïnstalleerd

Als op servers in het cluster Vervolgens Windows Server 2008 R2 of Windows Server 2012 wordt uitgevoerd, moet u controleren of de hotfix KB2854082 is geïnstalleerd op elk van de on-premises servers of Azure-VM's die deel uitmaken van het cluster. Elke server of VM die zich in het cluster bevindt, maar niet in de beschikbaarheidsgroep, moet ook deze hotfix hebben geïnstalleerd.

Download KB2854082 in de sessie extern bureaublad voor elk van de clusterknooppunten naar een lokale map. Installeer vervolgens de hotfix op elk clusterknooppunt opeenvolgend. Als de clusterservice momenteel wordt uitgevoerd op het clusterknooppunt, wordt de server opnieuw opgestart aan het einde van de hotfix-installatie.

Waarschuwing

Het stoppen van de clusterservice of het opnieuw opstarten van de server is van invloed op de quorumstatus van uw cluster en de beschikbaarheidsgroep. Dit kan ertoe leiden dat uw cluster offline gaat. Als u de hoge beschikbaarheid van uw cluster tijdens de installatie wilt behouden, moet u ervoor zorgen dat:

  • Het cluster heeft de optimale quorumstatus.
  • Voordat u de hotfix op een knooppunt installeert, zijn alle clusterknooppunten online.
  • Voordat u de hotfix installeert op een ander knooppunt in het cluster, staat u toe dat de hotfixinstallatie wordt uitgevoerd op één knooppunt, inclusief het volledig opnieuw opstarten van de server.

Open de firewallpoorten in beschikbaarheidsgroepknooppunten

In deze stap maakt u een firewallregel om de testpoort te openen voor het eindpunt met gelijke taakverdeling (59999, zoals eerder opgegeven) en een andere regel om de listenerpoort voor de beschikbaarheidsgroep te openen. Omdat u het eindpunt met taakverdeling hebt gemaakt op de VM's die replica's van de beschikbaarheidsgroep bevatten, moet u de testpoort en de listenerpoort op de respectieve VM's openen.

  1. Start Windows Firewall met Geavanceerde beveiliging op VM's die replica's hosten.

  2. Met de rechtermuisknop op regels voor binnenkomende verbindingen, en klik vervolgens op nieuwe regel.

  3. Selecteer Poort op de pagina Regeltype en klik vervolgens op Volgende.

  4. Selecteer TCP op de pagina Protocol en poorten, typ 59999 in het vak Specifieke lokale poorten en klik vervolgens op Volgende.

  5. Houd op de pagina Actiede verbinding toestaan geselecteerd en klik vervolgens op Volgende.

  6. Accepteer op de pagina Profiel de standaardinstellingen en klik vervolgens op Volgende.

  7. Geef op de pagina Naam in het tekstvak Naam een regelnaam op, zoals alwayson-listenertestpoort, en klik vervolgens op Voltooien.

  8. Herhaal de voorgaande stappen voor de listenerpoort van de beschikbaarheidsgroep (zoals eerder opgegeven in de parameter $EndpointPort van het script) en geef vervolgens een juiste regelnaam op, zoals AlwaysOn-listenerpoort.

De listener voor beschikbaarheidsgroep maken

Maak de listener voor beschikbaarheidsgroepen in twee stappen. Maak eerst de clusterresource van het clienttoegangspunt en configureer afhankelijkheden. Configureer vervolgens de clusterbronnen met PowerShell.

Het clienttoegangspunt maken en de clusterafhankelijkheden configureren

In deze stap maakt u handmatig de listener voor beschikbaarheidsgroepen in Failoverclusterbeheer en SQL Server Management Studio.

  1. Open Failoverclusterbeheer vanuit het knooppunt dat als host fungeert voor de primaire replica.

  2. Selecteer het knooppunt Netwerken en noteer de naam van het clusternetwerk. Deze naam wordt gebruikt in de $ClusterNetworkName variabele in het PowerShell-script.

  3. Vouw de clusternaam uit en klik vervolgens op Rollen.

  4. Klik in het deelvenster Rollen met de rechtermuisknop op de beschikbaarheidsgroepnaam en selecteer Resource toevoegen>Clienttoegangspunt.

    Clienttoegangspunt toevoegen voor beschikbaarheidsgroep

  5. Maak in het vak Naam een naam voor deze nieuwe listener, klik tweemaal op Volgende en klik vervolgens op Voltooien.
    Breng de listener of resource op dit moment nog niet online.

  6. Klik op het tabblad Resources en vouw vervolgens het clienttoegangspunt uit dat u zojuist hebt gemaakt. De IP-adresresource voor elk clusternetwerk in uw cluster wordt weergegeven. Als dit een alleen-Azure-oplossing is, wordt er slechts één IP-adresresource weergegeven.

  7. Gebruik een van de volgende methoden:

    • Een hybride oplossing configureren:

      a. Klik met de rechtermuisknop op de IP-adresresource die overeenkomt met uw on-premises subnet en selecteer vervolgens Eigenschappen. Noteer de IP-adresnaam en netwerknaam.

      b. Selecteer Statisch IP-adres, wijs een ongebruikt IP-adres toe en klik vervolgens op OK.

    • Een alleen-Azure-oplossing configureren:

      a. Klik met de rechtermuisknop op de IP-adresresource die overeenkomt met uw Azure-subnet en selecteer vervolgens Eigenschappen.

      Notitie

      Als de listener later niet online komt vanwege een conflicterend IP-adres dat is geselecteerd door DHCP, kunt u een geldig statisch IP-adres configureren in dit eigenschappenvenster.

      b. Wijzig in hetzelfde venster ip-adreseigenschappen de naam van het IP-adres.
      Deze naam wordt gebruikt in de $IPResourceName variabele van het PowerShell-script. Als uw oplossing meerdere virtuele Azure-netwerken omvat, herhaalt u deze stap voor elke IP-resource.

De clusterbronnen configureren in PowerShell

  1. Voor externe taakverdeling moet u het openbare virtuele IP-adres verkrijgen van de cloudservice die uw replica's bevat. Meld u aan bij de Azure-portal. Navigeer naar de cloudservice die de VM van uw beschikbaarheidsgroep bevat. Open de dashboardweergave .

  2. Noteer het adres dat wordt weergegeven onder VIP-adres (Public Virtual IP). Als uw oplossing VNets omvat, herhaalt u deze stap voor elke cloudservice die een VIRTUELE machine bevat die als host fungeert voor een replica.

  3. Kopieer op een van de VM's het Onderstaande PowerShell-script naar een teksteditor en stel de variabelen in op de waarden die u eerder hebt genoteerd.

    # Define variables
    $ClusterNetworkName = "<ClusterNetworkName>" # the cluster network name (Use Get-ClusterNetwork on Windows Server 2012 of higher to find the name)
    $IPResourceName = "<IPResourceName>" # the IP Address resource name
    $CloudServiceIP = "<X.X.X.X>" # Public Virtual IP (VIP) address of your cloud service
    
    Import-Module FailoverClusters
    
    # If you are using Windows Server 2012 or higher, use the Get-Cluster Resource command. If you are using Windows Server 2008 R2, use the cluster res command. Both commands are commented out. Choose the one applicable to your environment and remove the # at the beginning of the line to convert the comment to an executable line of code.
    
    # Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$CloudServiceIP";"ProbePort"="59999";"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"OverrideAddressMatch"=1;"EnableDhcp"=0}
    # cluster res $IPResourceName /priv enabledhcp=0 overrideaddressmatch=1 address=$CloudServiceIP probeport=59999  subnetmask=255.255.255.255
    
  4. Nadat u de variabelen hebt ingesteld, opent u een venster met verhoogde Windows PowerShell en kopieert u het script vanuit de teksteditor en plakt u het in uw Azure PowerShell-sessie om het uit te voeren. Als de prompt nog steeds wordt weergegeven >>, typt u ENTER opnieuw om te controleren of het script wordt uitgevoerd.

  5. Herhaal dit op elke VIRTUELE machine. Met dit script configureert u de IP-adresresource met het IP-adres van de cloudservice en stelt u andere parameters in, zoals de testpoort. Wanneer de IP-adresresource online wordt gebracht, kan deze reageren op de polling op de testpoort vanaf het eindpunt met taakverdeling dat eerder in deze zelfstudie is gemaakt.

De listener online brengen

  1. Vouw in Failoverclusterbeheer rollen uit en markeer vervolgens uw beschikbaarheidsgroep.

  2. Klik op het tabblad Resources met de rechtermuisknop op de naam van de listener en klik vervolgens op Eigenschappen.

  3. Klik op het tabblad Afhankelijkheden . Als er meerdere resources worden vermeld, controleert u of de IP-adressen OR, niet EN, afhankelijkheden hebben.

  4. Klik op OK.

  5. Klik met de rechtermuisknop op de naam van de listener en klik vervolgens op Bring Online.

  6. Nadat de listener online is, klikt u op het tabblad Resources met de rechtermuisknop op de beschikbaarheidsgroep en klikt u vervolgens op Eigenschappen.

    De resource van de beschikbaarheidsgroep configureren

  7. Maak een afhankelijkheid van de naamresource van de listener (niet de naam van de IP-adresresources) en klik vervolgens op OK.

    Afhankelijkheid van de listenernaam toevoegen

  8. Start SQL Server Management Studio en maak vervolgens verbinding met de primaire replica.

  9. Ga naar AlwaysOn High Availability>><Groups Availability Groups AvailabilityGroupName>>Availability Group Listeners.
    De naam van de listener die u hebt gemaakt in Failoverclusterbeheer, moet worden weergegeven.

  10. Klik met de rechtermuisknop op de naam van de listener en klik vervolgens op Eigenschappen.

  11. Geef in het vak Poort het poortnummer voor de listener voor de beschikbaarheidsgroep op met behulp van de $EndpointPort die u eerder hebt gebruikt (in deze zelfstudie was 1433 de standaardinstelling) en klik vervolgens op OK.

Opvolgingsitems

Nadat u de listener voor de beschikbaarheidsgroep hebt gemaakt, is het mogelijk nodig om de clusterparameters RegisterAllProvidersIP en HostRecordTTL voor de listener-resource aan te passen. Deze parameters kunnen de tijd voor opnieuw verbinden verminderen na een failover, waardoor verbindingstime-outs mogelijk worden voorkomen. Zie Een listener voor een beschikbaarheidsgroep maken of configureren voor meer informatie over deze parameters en voorbeeldcode.

De listener van de beschikbaarheidsgroep testen (binnen hetzelfde VNet)

In deze stap test u de listener van de beschikbaarheidsgroep met behulp van een clienttoepassing die wordt uitgevoerd op hetzelfde netwerk.

Clientconnectiviteit heeft de volgende vereisten:

  • Clientverbindingen met de listener moeten afkomstig zijn van computers die zich in een andere cloudservice bevinden dan die waarop de AlwaysOn-beschikbaarheidsreplica's worden gehost.
  • Als de AlwaysOn-replica's zich in verschillende subnetten bevinden, moeten clients MultisubnetFailover=True opgeven in de connection string. Deze voorwaarde resulteert in parallelle verbindingspogingen naar replica's in de verschillende subnetten. Dit scenario omvat een implementatie van een AlwaysOn-beschikbaarheidsgroep voor meerdere regio's.

Een voorbeeld is om verbinding te maken met de listener vanaf een van de VM's in hetzelfde virtuele Azure-netwerk (maar niet één die als host fungeert voor een replica). Een eenvoudige manier om deze test te voltooien, is door te proberen SQL Server Management Studio verbinding te maken met de listener van de beschikbaarheidsgroep. Een andere eenvoudige methode is omSQLCMD.exeuit te voeren, als volgt:

sqlcmd -S "<ListenerName>,<EndpointPort>" -d "<DatabaseName>" -Q "select @@servername, db_name()" -l 15

Notitie

Als de EndpointPort-waarde 1433 is, hoeft u deze niet op te geven in de aanroep. Bij de vorige aanroep wordt ook ervan uitgegaan dat de clientcomputer lid is van hetzelfde domein en dat de aanroeper machtigingen heeft gekregen voor de database met behulp van Windows-verificatie.

Wanneer u de listener test, moet u een failover uitvoeren voor de beschikbaarheidsgroep om ervoor te zorgen dat clients verbinding kunnen maken met de listener via failovers.

De listener van de beschikbaarheidsgroep testen (via internet)

Als u toegang wilt krijgen tot de listener van buiten het virtuele netwerk, moet u externe/openbare taakverdeling gebruiken (beschreven in dit onderwerp) in plaats van ILB, dat alleen toegankelijk is binnen hetzelfde VNet. In de connection string geeft u de naam van de cloudservice op. Als u bijvoorbeeld een cloudservice met de naam mycloudservice hebt, is de sqlcmd-instructie als volgt:

sqlcmd -S "mycloudservice.cloudapp.net,<EndpointPort>" -d "<DatabaseName>" -U "<LoginId>" -P "<Password>"  -Q "select @@servername, db_name()" -l 15

In tegenstelling tot het vorige voorbeeld moet SQL-verificatie worden gebruikt, omdat de aanroeper geen windows-verificatie via internet kan gebruiken. Zie AlwaysOn-beschikbaarheidsgroep in Azure VM voor meer informatie: Scenario's voor clientconnectiviteit. Wanneer u SQL-verificatie gebruikt, moet u ervoor zorgen dat u dezelfde aanmelding maakt op beide replica's. Zie Aanmeldingen met beschikbaarheidsgroepen toewijzen of ingesloten SQL Database-gebruiker gebruiken om verbinding te maken met andere replica's en toewijzen aan beschikbaarheidsdatabases voor meer informatie over het oplossen van problemen met aanmeldingen met beschikbaarheidsgroepen.

Als de AlwaysOn-replica's zich in verschillende subnetten bevinden, moeten clients MultisubnetFailover=True opgeven in de connection string. Dit resulteert in parallelle verbindingspogingen naar replica's in de verschillende subnetten. Houd er rekening mee dat dit scenario een implementatie van een AlwaysOn-beschikbaarheidsgroep voor meerdere regio's omvat.

Volgende stappen

Naast het automatisch verbinden van clients met de primaire replica, kan een listener worden gebruikt om alleen-lezenworkloads om te leiden naar de secundaire bestanden. Dit gebruik kan de prestaties en schaalbaarheid van uw algehele oplossing verbeteren. Zie ReadIntent Routing gebruiken met azure AlwaysOn-listener voor beschikbaarheidsgroepen voor meer informatie.

Notitie

Zie De listener voor beschikbaarheidsgroepen in Azure oplossen in de blog van het AlwaysOn-ondersteuningsteam voor tips voor het oplossen van problemen met Azure-listeners.

Zie SQL Server op virtuele Azure-machines voor meer informatie over het gebruik van SQL Server in Azure.