Wir widmen uns in diesem Artikel mit der Konfiguration eines Listeners, der extern über eine öffentliche und virtuelle IP-Adresse (VIP) auf die Always On Verfügbarkeitsgruppe in SQL Server VMs zugreifen kann.
Wie wir eine Always On Availability Group konfigurieren und erstellen, haben wir im vorangegangenen Artikel näher beschrieben.
Wir ermöglichen mit der Konfiguration des Listeners eine automatische Verbindung von Clients zu einem Replikat. Damit können beispielsweise schreibgeschützte Workloads an sekundäre Replikate weitergeleitet werden, die die Leistung und Skalierbarkeit Ihrer Infrastruktur verbessern.
Ein Verfügbarkeitsgruppen-Listener ist ein virtueller Netzwerkname (VNN), mit dem sich Clients verbinden können, um auf eine Datenbank in einer primären oder sekundären Replikation einer Always On-Verfügbarkeitsgruppe zuzugreifen. Ein Listener ermöglicht es einem Client, eine Verbindung zu einer Replikation herzustellen, ohne den physischen Instanznamen des SQL Servers zu kennen.
Man unterscheidet zudem zwischen einem externen und internen Listener:
externer Listener:
Verwendet die öffentliche virtuelle IP-Adresse des Clouddiensts, der die virtuellen Maschinen (VMs) hostet. Es wird von außen, beispielsweise über das Internet auf den Listener zugegriffen.
interner Listener:
Verwendet einen internen Load Balancer mit einer privaten Adresse für den Listener. Auf den internen Listener kann nur innerhalb eines virtuellen Netzwerks zugegriffen werden.
Bevor wir mit der Konfiguration starten, müssen einige Richtlinien beachtet werden:
Als erstes im Prozess erstellen wir VM Endpunkte, die den Lastenausgleich und eine direkte Serverrückgabe durchführen. Für jede VM muss ein solcher Endpunkt erstellt werden. Besitzen Sie Azure-Replikate in mehreren Regionen, muss sich jedes Replikat im selben Clouddienst und VNET befinden. Haben Sie gleich mehrere Azure Regionen, müssen auch mehr VNETs konfiguriert werden.
Öffnen Sie im Azure Portal zu jeder vorhandenen VM, die ein Replikat hostet und lassen sich entsprechende Details anzeigen.
Klicken Sie auf die Registerkarte Endpunkte.
Stellen Sie sicher, dass der Name und der öffentliche Port des Listener-Endpunkts nicht bereits verwendet werden. In unserem Beispiel lautet der Name „MyEndpoint“ und der Port ist „1433“.
Gehen Sie sicher, dass auf Ihrem lokalen Client das neuste PowerShell Modul installiert ist.
Starten Sie PowerShell und öffnen eine neue Sitzung, in der die Azure-Verwaltungsmodule geladen sind.
Führen Sie Get-AzurePublishSettingsFile aus. Dieses Cmdlet leitet Sie weiter, um eine Datei mit Veröffentlichungseinstellungen in Ihr lokales Verzeichnis herunterzuladen. Möglicherweise werden Sie zur Eingabe Ihrer Anmeldeinformationen für Ihr Azure-Abonnement aufgefordert.
Führen Sie den Befehl Import-AzurePublishSettingsFile mit dem Pfad der heruntergeladenen Veröffentlichungseinstellungsdatei aus. Dies ermöglicht Ihnen im Nachgang die Verwaltung Ihres Azure Abonnements in PowerShell.
Import-AzurePublishSettingsFile -PublishSettingsFile <PublishSettingsFilePath>
# Define variables $ServiceName = "<cloud_service_test>" # 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 }
→ Sind Ihre Azure VMs ein Teil eines Windows Server 2008 R2 oder Windows Server 2021 Clusters, müssen Sie sicherstellen, dass der Hotfix KB2854082 auf jedem lokalen Server, sowie der Azure VMs installiert ist.
Wir erstellen nun eine Regel zum Öffnen des Firewall Testports für den VM Endpunkt mit Lastenausgleich. Gleichzeitig erstellen wir eine weitere Regel zum Öffnen des Listener-Ports der Verfügbarkeitsgruppe.
Nachdem wir nun die Firewall geöffnet und die VM Endpunkte eingerichtet haben, kann es nun weitergehen mit der Einrichtung der Verfügbarkeits-Listener.
Zunächst erstellen wir einen Clientzugriffspunkt sowie eine Clusterressource und konfigurieren entsprechende Abhängigkeiten. Danach konfigurieren wir die Clusterressourcen mit PowerShell. Wir verwenden dafür den Failovercluster-Manager sowie das SQL Server Management Studio.
# Define variables $ClusterNetworkName = "<cluster_network_name>" # 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
Öffnen Sie jetzt das Azure PowerShell Fenster und fügen das eben angepasste Skript ein. Drücken Sie die Eingabetaste, sodass das Skript ausgeführt wird.
Wiederholen Sie diesen Vorgang auf jeder VM.
Dieses Skript konfiguriert die IP-Adressressource mit der IP-Adresse des Cloud-Dienstes und legt andere Parameter wie den Probe-Port fest. Wenn die IP-Adressressource online geschaltet wird, kann sie auf das Polling am Probe-Port von dem zuvor in diesem Tutorial erstellten Lastenausgleichsendpunkt antworten.
Nach diesem Schritt sind wir nun startklar, den Listener online zu bringen.
Nachdem der Verfügbarkeitsgruppenlistener erstellt ist, müssen möglicherweise die Clusterparameter RegisterAllProvidersIP und HostRecordTTL für die Listenerressource angepasst werden. Diese Parameter können die Wiederverbindungszeit nach einem Failover verkürzen, wodurch Verbindungszeitüberschreitungen verhindert werden können.
Um die Einrichtung des Listeners zu überprüfen, testen wir mit den nachfolgenden Schritten unsere Umsetzung innerhalb unseres VNETs:
Dafür stellen wir die Verbindung zwischen dem Listener und einem virtuellen Computer innerhalb eines Azure Netzwerks her. Eine mögliche Option ist die Verbindung über das SQL Server Management Studio, eine Andere, über SQLCMD.exe das folgende Skript auszuführen:
sqlcmd -S "<ListenerName>,<EndpointPort>" -d "<DatabaseName>" -Q "select @@servername, db_name()" -l 15
→ Stellen Sie beim Testen des Listeners sicher, dass die Verfügbarkeitsgruppe übersprungen wird, sodass Clients über Failover hinweg eine Verbindung mit dem Listener herstellen können.
Um aus dem Internet auf den eben konfigurierten Listener zuzugreifen, müssen wir auf den externen Lastenausgleich zurückgreifen. Diesen haben wir in den vorherigen Schritten bereits eingerichtet. Nutzen Sie die folgende SQLCMD Anweisung mit dem Namen Ihres Clouddienstes wie folgt:
sqlcmd -S "mycloudservice.cloudapp.net,<EndpointPort>" -d "<DatabaseName>" -U "<LoginId>" -P "<Password>" -Q "select @@servername, db_name()" -l 15
Im Gegensatz zum vorherigen Schritt des Tests innerhalb des VNETs, muss hier die SQL Server Authentifizierung verwendet werden. Sie müssen in diesem Schritt sicherstellen, dass sie auf allen vorhandenen Replikaten diesselbe Anmeldung verwenden.
Wenn sich die AlwaysOn–Replikate in verschiedenen regionsübergreifenden Subnetzen befinden, müssen Clients MultisubnetFailover=True in der Verbindungszeichenfolge angeben. Dies führt zu parallelen Verbindungsversuchen zu Replikaten in den verschiedenen Subnetzen.
Im nächsten Artikel widmen wir uns der Konfiguration eines internen Listeners für Verfügbarkeitsgruppen auf Azure.
Kontaktieren Sie uns gerne über das
Kontaktformular und vereinbaren ein unverbindliches
Beratungsgespräch mit unseren Berater:innen zur
Bedarfsevaluierung. Gemeinsam optimieren wir Ihre
Umgebung und steigern Ihre Performance!
Wir freuen uns auf Ihre Kontaktaufnahme!