Konfigurera en ILB-lyssnare för tillgänglighetsgrupper på virtuella Azure SQL Server-datorer
Översikt
Viktigt
Azure har två olika distributionsmodeller för att skapa och arbeta med resurser: Azure Resource Manager och klassisk. Den här artikeln beskriver hur du använder den klassiska distributionsmodellen. Vi rekommenderar att de flesta nya distributioner använder Resource Manager modellen.
Information om hur du konfigurerar en lyssnare för en AlwaysOn-tillgänglighetsgrupp i Resource Manager modellen finns i Konfigurera en lastbalanserare för en AlwaysOn-tillgänglighetsgrupp i Azure.
Din tillgänglighetsgrupp kan innehålla repliker som endast är lokala eller endast Azure, eller som sträcker sig över både lokalt och Azure för hybridkonfigurationer. Azure-repliker kan finnas i samma region eller i flera regioner som använder flera virtuella nätverk. Procedurerna i den här artikeln förutsätter att du redan har konfigurerat en tillgänglighetsgrupp men ännu inte har konfigurerat en lyssnare.
Riktlinjer och begränsningar för interna lyssnare
Användning av en intern lastbalanserare (ILB) med en lyssnare för tillgänglighetsgrupper i Azure omfattas av följande riktlinjer:
- Tillgänglighetsgruppens lyssnare stöds på Windows Server 2008 R2, Windows Server 2012 och Windows Server 2012 R2.
- Endast en intern tillgänglighetsgruppslyssnare stöds för varje molntjänst, eftersom lyssnaren är konfigurerad för ILB och det bara finns en ILB för varje molntjänst. Det är dock möjligt att skapa flera externa lyssnare. Mer information finns i Konfigurera en extern lyssnare för AlwaysOn-tillgänglighetsgrupper i Azure.
Fastställa tillgängligheten för lyssnaren
Det är viktigt att inse att det finns två sätt att konfigurera en lyssnare för tillgänglighetsgrupper i Azure. Olika sätt skiljer sig åt i vilken typ av Azure-lastbalanserare du använder när du skapar lyssnaren. I följande tabell beskrivs skillnaderna:
Typ av lastbalanserare | Implementering | Använd när: |
---|---|---|
Extern | Använder den offentliga virtuella IP-adressen för den molntjänst som är värd för de virtuella datorerna (VM). | Du måste komma åt lyssnaren utanför det virtuella nätverket, inklusive från Internet. |
Intern | Använder en intern lastbalanserare med en privat adress för lyssnaren. | Du kan bara komma åt lyssnaren från samma virtuella nätverk. Den här åtkomsten inkluderar plats-till-plats-VPN i hybridscenarier. |
Viktigt
För en lyssnare som använder molntjänstens offentliga VIP (extern lastbalanserare) så länge klienten, lyssnaren och databaserna finns i samma Azure-region debiteras du inte för utgående avgifter. Annars betraktas alla data som returneras via lyssnaren som utgående och debiteras enligt normala dataöverföringshastigheter.
En ILB kan bara konfigureras i virtuella nätverk med ett regionalt omfång. Befintliga virtuella nätverk som har konfigurerats för en tillhörighetsgrupp kan inte använda en ILB. Mer information finns i Översikt över intern lastbalanserare.
Den här artikeln fokuserar på att skapa en lyssnare som använder en ILB. Om du behöver en offentlig eller extern lyssnare kan du läsa den version av den här artikeln som beskriver hur du konfigurerar en extern lyssnare.
Skapa belastningsutjämning av VM-slutpunkter med direkt serverretur
Du skapar först en ILB genom att köra skriptet senare i det här avsnittet.
Skapa en belastningsutjämningsslutpunkt för varje virtuell dator som är värd för en Azure-replik. Om du har repliker i flera regioner måste varje replik för den regionen finnas i samma molntjänst i samma virtuella Azure-nätverk. För att skapa tillgänglighetsgruppsrepliker som sträcker sig över flera Azure-regioner måste du konfigurera flera virtuella nätverk. Mer information om hur du konfigurerar anslutningar mellan virtuella nätverk finns i Konfigurera anslutning mellan virtuella nätverk till virtuella nätverk.
I Azure Portal går du till varje virtuell dator som är värd för en replik för att visa informationen.
Klicka på fliken Slutpunkter för varje virtuell dator.
Kontrollera att namn och offentlig port för den lyssnarslutpunkt som du vill använda inte redan används. I exemplet i det här avsnittet är namnet MyEndpoint och porten är 1433.
Ladda ned och installera den senaste PowerShell-modulen på din lokala klient.
Starta Azure PowerShell.
En ny PowerShell-session öppnas med de administrativa Azure-modulerna inlästa.Kör
Get-AzurePublishSettingsFile
. Den här cmdleten dirigerar dig till en webbläsare för att ladda ned en fil för publiceringsinställningar till en lokal katalog. Du kan uppmanas att ange dina inloggningsuppgifter för din Azure-prenumeration.Kör följande
Import-AzurePublishSettingsFile
kommando med sökvägen till publiceringsinställningsfilen som du laddade ned:Import-AzurePublishSettingsFile -PublishSettingsFile <PublishSettingsFilePath>
När filen med publiceringsinställningar har importerats kan du hantera din Azure-prenumeration i PowerShell-sessionen.
För ILB tilldelar du en statisk IP-adress. Granska den aktuella virtuella nätverkskonfigurationen genom att köra följande kommando:
(Get-AzureVNetConfig).XMLConfiguration
Observera undernätsnamnet för det undernät som innehåller de virtuella datorer som är värdar för replikerna. Det här namnet används i parametern $SubnetName i skriptet.
Observera VirtualNetworkSite-namnet och startadressprefixet för det undernät som innehåller de virtuella datorer som är värdar för replikerna. Leta efter en tillgänglig IP-adress genom att skicka båda värdena till
Test-AzureStaticVNetIP
kommandot och genom att undersöka AvailableAddresses. Om det virtuella nätverket till exempel heter MyVNet och har ett adressintervall för undernätet som börjar på 172.16.0.128, visar följande kommando tillgängliga adresser:(Test-AzureStaticVNetIP -VNetName "MyVNet"-IPAddress 172.16.0.128).AvailableAddresses
Välj en av de tillgängliga adresserna och använd den i parametern $ILBStaticIP i skriptet i nästa steg.
Kopiera följande PowerShell-skript till en textredigerare och ange de variabelvärden som passar din miljö. Standardvärden har angetts för vissa parametrar.
Befintliga distributioner som använder tillhörighetsgrupper kan inte lägga till en ILB. Mer information om ILB-krav finns i Översikt över intern lastbalanserare.
Om tillgänglighetsgruppen sträcker sig över Azure-regioner måste du också köra skriptet en gång i varje datacenter för molntjänsten och noderna som finns i det datacentret.
# 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 $SubnetName = "<MySubnetName>" # subnet name that the replicas use in the virtual network $ILBStaticIP = "<MyILBStaticIPAddress>" # static IP address for the ILB in the subnet $ILBName = "AGListenerLB" # customize the ILB name or use this default value # Create the ILB Add-AzureInternalLoadBalancer -InternalLoadBalancerName $ILBName -SubnetName $SubnetName -ServiceName $ServiceName -StaticVNetIPAddress $ILBStaticIP # Configure a load-balanced endpoint for each node in $AGNodes by using ILB ForEach ($node in $AGNodes) { Get-AzureVM -ServiceName $ServiceName -Name $node | Add-AzureEndpoint -Name "ListenerEndpoint" -LBSetName "ListenerEndpointLB" -Protocol tcp -LocalPort 1433 -PublicPort 1433 -ProbePort 59999 -ProbeProtocol tcp -ProbeIntervalInSeconds 10 -InternalLoadBalancerName $ILBName -DirectServerReturn $true | Update-AzureVM }
När du har angett variablerna kopierar du skriptet från textredigeraren till PowerShell-sessionen för att köra det. Om prompten fortfarande visas >>trycker du på Retur igen för att kontrollera att skriptet börjar köras.
Kontrollera att KB2854082 har installerats om det behövs
Om några servrar i klustret kör Windows Server 2008 R2 eller Windows Server 2012 måste du kontrollera att snabbkorrigeringen KB2854082 är installerad på var och en av de lokala servrarna eller de virtuella Azure-datorerna som ingår i klustret. Alla servrar eller virtuella datorer som finns i klustret, men inte i tillgänglighetsgruppen, bör också ha den här snabbkorrigeringen installerad.
I fjärrskrivbordssessionen för var och en av klusternoderna laddar du ned KB2854082 till en lokal katalog. Installera sedan snabbkorrigeringen på varje klusternod sekventiellt. Om klustertjänsten körs på klusternoden startas servern om i slutet av snabbkorrigeringsinstallationen.
Varning
Om du stoppar klustertjänsten eller startar om servern påverkas kvorumhälsan för klustret och tillgänglighetsgruppen, och det kan leda till att klustret kopplas från. Om du vill upprätthålla hög tillgänglighet för klustret under installationen kontrollerar du att:
- Klustret har optimal kvorumhälsa.
- Innan du installerar snabbkorrigeringen på en nod är alla klusternoder online.
- Innan du installerar snabbkorrigeringen på någon annan nod i klustret ska du tillåta att snabbkorrigeringsinstallationen körs på en nod, inklusive att servern startas om helt.
Öppna brandväggsportarna i tillgänglighetsgruppnoder
I det här steget skapar du en brandväggsregel för att öppna avsökningsporten för den lastbalanserade slutpunkten (59999, som angavs tidigare) och en annan regel för att öppna tillgänglighetsgruppens lyssnarport. Eftersom du skapade den belastningsutjämningsslutpunkten på de virtuella datorer som innehåller tillgänglighetsgruppsrepliker måste du öppna avsökningsporten och lyssnarporten på respektive virtuell dator.
Starta Windows-brandväggen med Avancerad säkerhet på virtuella datorer som är värdar för repliker.
Högerklicka på Regler för inkommande trafik och klicka sedan på Ny regel.
På sidan Regeltyp väljer du Port och klickar sedan på Nästa.
På sidan Protokoll och portar väljer du TCP, skriver 59999 i rutan Specifika lokala portar och klickar sedan på Nästa.
På sidan Åtgärd behåller du Tillåt anslutningen markerad och klickar sedan på Nästa.
Acceptera standardinställningarna på sidan Profil och klicka sedan på Nästa.
På sidan Namn i textrutan Namn anger du ett regelnamn, till exempel Alltid på lyssnarens avsökningsport, och klickar sedan på Slutför.
Upprepa föregående steg för tillgänglighetsgruppens lyssnarport (som angavs tidigare i $EndpointPort-parametern i skriptet) och ange sedan ett lämpligt regelnamn, till exempel Always On Listener-port.
Skapa tillgänglighetsgruppens lyssnare
Skapa tillgänglighetsgruppens lyssnare i två steg. Skapa först klusterresursen för klientåtkomstpunkten och konfigurera beroenden. För det andra konfigurerar du klusterresurserna i PowerShell.
Skapa klientåtkomstpunkten och konfigurera klusterberoendena
I det här steget skapar du manuellt tillgänglighetsgruppens lyssnare i Klusterhanteraren för växling vid fel och SQL Server Management Studio.
Öppna Klusterhanteraren för växling vid fel från noden som är värd för den primära repliken.
Välj noden Nätverk och notera sedan klustrets nätverksnamn. Det här namnet används i variabeln $ClusterNetworkName i PowerShell-skriptet.
Expandera klusternamnet och klicka sedan på Roller.
Högerklicka på tillgänglighetsgruppens namn i fönstret Roller och välj sedan Lägg tillresursklientåtkomstpunkt>.
I rutan Namn skapar du ett namn för den nya lyssnaren, klickar på Nästa två gånger och klickar sedan på Slutför.
Ta inte lyssnaren eller resursen online just nu.Klicka på fliken Resurser och expandera sedan klientåtkomstpunkten som du nyss skapade. IP-adressresursen för varje klusternätverk i klustret visas. Om det här är en azure-lösning visas bara en IP-adressresurs.
Gör något av följande:
Så här konfigurerar du en hybridlösning:
a. Högerklicka på DEN IP-adressresurs som motsvarar ditt lokala undernät och välj sedan Egenskaper. Observera IP-adressnamnet och nätverksnamnet.
b. Välj Statisk IP-adress, tilldela en oanvänd IP-adress och klicka sedan på OK.
Så här konfigurerar du en lösning endast för Azure:
a. Högerklicka på DEN IP-adressresurs som motsvarar ditt Azure-undernät och välj sedan Egenskaper.
Anteckning
Om lyssnaren senare inte kan komma online på grund av en IP-adress i konflikt som valts av DHCP kan du konfigurera en giltig statisk IP-adress i det här egenskapsfönstret.
b. I samma egenskapsfönster för IP-adress ändrar du IP-adressnamnet.
Det här namnet används i variabeln $IPResourceName för PowerShell-skriptet. Om din lösning omfattar flera virtuella Azure-nätverk upprepar du det här steget för varje IP-resurs.
Konfigurera klusterresurserna i PowerShell
För ILB måste du använda IP-adressen för den ILB som skapades tidigare. Använd följande skript för att hämta den här IP-adressen i PowerShell:
# Define variables $ServiceName="<MyServiceName>" # the name of the cloud service that contains the AG nodes (Get-AzureInternalLoadBalancer -ServiceName $ServiceName).IPAddress
På en av de virtuella datorerna kopierar du PowerShell-skriptet för ditt operativsystem till en textredigerare och anger sedan variablerna till de värden som du antecknade tidigare.
Använd följande skript för Windows Server 2012 eller senare:
# Define variables $ClusterNetworkName = "<MyClusterNetworkName>" # the cluster network name (Use Get-ClusterNetwork on Windows Server 2012 of higher to find the name) $IPResourceName = "<IPResourceName>" # the IP address resource name $ILBIP = "<X.X.X.X>" # the IP address of the ILB Import-Module FailoverClusters Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ILBIP";"ProbePort"="59999";"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
För Windows Server 2008 R2 använder du följande skript:
# Define variables $ClusterNetworkName = "<MyClusterNetworkName>" # the cluster network name (Use Get-ClusterNetwork on Windows Server 2012 of higher to find the name) $IPResourceName = "<IPResourceName>" # the IP address resource name $ILBIP = "<X.X.X.X>" # the IP address of the ILB Import-Module FailoverClusters cluster res $IPResourceName /priv enabledhcp=0 address=$ILBIP probeport=59999 subnetmask=255.255.255.255
När du har angett variablerna öppnar du ett upphöjt Windows PowerShell fönster och klistrar in skriptet från textredigeraren i PowerShell-sessionen för att köra det. Om kommandotolken fortfarande visas trycker >>du på Retur igen för att kontrollera att skriptet börjar köras.
Upprepa föregående steg för varje virtuell dator.
Det här skriptet konfigurerar IP-adressresursen med IP-adressen för molntjänsten och anger andra parametrar, till exempel avsökningsporten. När IP-adressresursen tas online kan den svara på avsökningen på avsökningsporten från den lastbalanserade slutpunkten som du skapade tidigare.
Ta lyssnaren online
I Klusterhanteraren för växling vid fel expanderar du Roller och markerar sedan tillgänglighetsgruppen.
Högerklicka på lyssnarnamnet på fliken Resurser och klicka sedan på Egenskaper.
Klicka på fliken Beroenden . Om flera resurser visas kontrollerar du att IP-adresserna har ELLER, inte OCH, beroenden.
Klicka på OK.
Högerklicka på lyssnarnamnet och klicka sedan på Bring Online.
När lyssnaren är online högerklickar du på tillgänglighetsgruppen på fliken Resurser och klickar sedan på Egenskaper.
Skapa ett beroende för lyssnarens namnresurs (inte namnet på IP-adressresurserna) och klicka sedan på OK.
Starta SQL Server Management Studio och anslut sedan till den primära repliken.
Gå tillAlwaysOn-tillgänglighetsgrupper><för hög tillgänglighet TillgänglighetGroupName>>Tillgänglighetsgrupplyssnare.>
Lyssnarnamnet som du skapade i Klusterhanteraren för växling vid fel ska visas.Högerklicka på lyssnarnamnet och klicka sedan på Egenskaper.
I rutan Port anger du portnumret för tillgänglighetsgruppens lyssnare med hjälp av $EndpointPort som du använde tidigare (i den här självstudien var 1433 standard) och klickar sedan på OK.
Uppföljningsobjekt
När du har skapat tillgänglighetsgruppens lyssnare kan det vara nödvändigt att justera parametrarna RegisterAllProvidersIP och HostRecordTTL-kluster för lyssnarresursen. Dessa parametrar kan minska återanslutningstiden efter en redundansväxling, vilket kan förhindra tidsgränser för anslutningen. Mer information om dessa parametrar samt exempelkod finns i Skapa eller konfigurera en tillgänglighetsgruppslyssnare.
Testa tillgänglighetsgruppens lyssnare (i samma virtuella nätverk)
I det här steget testar du tillgänglighetsgruppens lyssnare med hjälp av ett klientprogram som körs i samma nätverk.
Klientanslutningen har följande krav:
- Klientanslutningar till lyssnaren måste komma från datorer som finns i en annan molntjänst än den som är värd för AlwaysOn-tillgänglighetsreplikerna.
- Om AlwaysOn-replikerna finns i olika undernät måste klienterna ange MultisubnetFailover=True i anslutningssträngen. Det här villkoret resulterar i parallella anslutningsförsök till repliker i de olika undernäten. I det här scenariot ingår distribution av alwayson-tillgänglighetsgrupp mellan regioner.
Ett exempel är att ansluta till lyssnaren från en av de virtuella datorerna i samma virtuella Azure-nätverk (men inte ett som är värd för en replik). Ett enkelt sätt att slutföra det här testet är att försöka ansluta SQL Server Management Studio till tillgänglighetsgruppens lyssnare. En annan enkel metod är att köra SQLCMD.exe, enligt följande:
sqlcmd -S "<ListenerName>,<EndpointPort>" -d "<DatabaseName>" -Q "select @@servername, db_name()" -l 15
Anteckning
Om endpointPort-värdet är 1433 behöver du inte ange det i anropet. Det tidigare anropet förutsätter också att klientdatorn är ansluten till samma domän och att anroparen har beviljats behörigheter för databasen med hjälp av Windows-autentisering.
När du testar lyssnaren måste du redundansväxla tillgänglighetsgruppen för att se till att klienterna kan ansluta till lyssnaren över redundansväxlingar.
Nästa steg
Förutom att automatiskt ansluta klienter till den primära repliken kan en lyssnare användas för att omdirigera skrivskyddade arbetsbelastningar till sekundärfilerna. Den här användningen kan förbättra prestanda och skalbarhet för din övergripande lösning. Mer information finns i Använda ReadIntent-routning med Azure AlwaysOn-tillgänglighetsgruppslyssnare.
Anteckning
Felsökningstips för Azure-lyssnare finns i Felsöka tillgänglighetsgruppslyssnare i Azure i AlwaysOn-supportteamets blogg.
Mer information om hur du använder SQL Server i Azure finns i SQL Server på virtuella Azure-datorer.