Konfigurowanie odbiornika nazwy sieci rozproszonej dla grupy dostępności
Dotyczy: program SQL Server na maszynie wirtualnej platformy Azure
Napiwek
Istnieje wiele metod wdrażania grupy dostępności. Uprość wdrażanie i eliminuje konieczność korzystania z usługi Azure Load Balancer lub rozproszonej nazwy sieci (DNN) dla zawsze włączonej grupy dostępności, tworząc maszyny wirtualne programu SQL Server w wielu podsieciach w tej samej sieci wirtualnej platformy Azure. Jeśli grupa dostępności została już utworzona w jednej podsieci, możesz ją zmigrować do środowiska z wieloma podsieciami.
W przypadku programu SQL Server na maszynach wirtualnych platformy Azure w jednej podsieci rozproszona nazwa sieci (DNN) kieruje ruch do odpowiedniego zasobu klastrowanego. Zapewnia to łatwiejszy sposób nawiązywania połączenia z zawsze włączoną grupą dostępności niż odbiornik nazwy sieci wirtualnej (VNN) bez konieczności używania usługi Azure Load Balancer.
W tym artykule przedstawiono sposób konfigurowania odbiornika sieci rozproszonej w celu zastąpienia odbiornika sieci VNN i kierowania ruchu do grupy dostępności przy użyciu programu SQL Server na maszynach wirtualnych platformy Azure w celu zapewnienia wysokiej dostępności i odzyskiwania po awarii (HADR).
W przypadku alternatywnej opcji łączności rozważ zamiast tego odbiornik sieci wirtualnej i usługę Azure Load Balancer .
Omówienie
Odbiornik rozproszonej nazwy sieci (DNN) zastępuje tradycyjny odbiornik grupy dostępności sieci wirtualnej (VNN), gdy jest używany z zawsze włączonymi grupami dostępności na maszynach wirtualnych programu SQL Server. To neguje potrzebę kierowania ruchem przez usługę Azure Load Balancer, upraszczając wdrażanie, konserwację i ulepszanie trybu failover.
Użyj odbiornika nazwy sieci rozproszonej, aby zastąpić istniejący odbiornik sieci VNN lub użyć go w połączeniu z istniejącym odbiornikiem sieci VNN, aby grupa dostępności ma dwa odrębne punkty połączenia — jeden przy użyciu nazwy odbiornika sieci wirtualnej (i portu, jeśli nie jest domyślny) i jeden przy użyciu nazwy odbiornika nazwy sieci rozproszonej i portu.
Uwaga
Zachowanie routingu w przypadku korzystania z nazwy sieci rozproszonej różni się w przypadku korzystania z sieci VNN. Nie używaj portu 1433. Aby dowiedzieć się więcej, zobacz sekcję Zagadnienia dotyczące portów w dalszej części tego artykułu.
Wymagania wstępne
Przed wykonaniem kroków opisanych w tym artykule należy mieć już następujące elementy:
- Program SQL Server, począwszy od programu SQL Server 2019 CU8 lub nowszego, programu SQL Server 2017 CU25 lub nowszego lub programu SQL Server 2016 z dodatkiem SP3 lub nowszym w systemie Windows Server 2016 lub nowszym.
- Podjęto decyzję, że nazwa sieci rozproszonej jest odpowiednią opcją łączności dla rozwiązania HADR.
- Skonfigurowano zawsze włączoną grupę dostępności.
- Zainstalowano najnowszą wersję programu PowerShell.
- Zidentyfikowano unikatowy port, który będzie używany dla odbiornika sieci rozproszonej. Port używany dla odbiornika sieci rozproszonej musi być unikatowy we wszystkich replikach grupy dostępności lub wystąpienia klastra trybu failover. Żadne inne połączenie nie może współużytkować tego samego portu.
Uwaga
Jeśli masz wiele grup dostępności lub wystąpień klastra trybu failover w tym samym klastrze i używasz odbiornika sieci rozproszonej lub sieci wirtualnej, każda grupa dostępności lub wystąpienie klastra trybu failover wymaga własnego niezależnego punktu połączenia.
Tworzenie skryptu
Użyj programu PowerShell, aby utworzyć zasób nazwy sieci rozproszonej (DNN) i skojarzyć go z grupą dostępności.
W tym celu wykonaj następujące kroki:
Otwórz Edytor tekstu, takiego jak Notatnik.
Skopiuj i wklej następujący skrypt:
param ( [Parameter(Mandatory=$true)][string]$Ag, [Parameter(Mandatory=$true)][string]$Dns, [Parameter(Mandatory=$true)][string]$Port ) Write-Host "Add a DNN listener for availability group $Ag with DNS name $Dns and port $Port" $ErrorActionPreference = "Stop" # create the DNN resource with the port as the resource name Add-ClusterResource -Name $Port -ResourceType "Distributed Network Name" -Group $Ag # set the DNS name of the DNN resource Get-ClusterResource -Name $Port | Set-ClusterParameter -Name DnsName -Value $Dns # start the DNN resource Start-ClusterResource -Name $Port $Dep = Get-ClusterResourceDependency -Resource $Ag if ( $Dep.DependencyExpression -match '\s*\((.*)\)\s*' ) { $DepStr = "$($Matches.1) or [$Port]" } else { $DepStr = "[$Port]" } Write-Host "$DepStr" # add the Dependency from availability group resource to the DNN resource Set-ClusterResourceDependency -Resource $Ag -Dependency "$DepStr" #bounce the AG resource Stop-ClusterResource -Name $Ag Start-ClusterResource -Name $Ag
Zapisz skrypt jako
.ps1
plik, taki jakadd_dnn_listener.ps1
.
Wykonywanie skryptu
Aby utworzyć odbiornik nazwy sieci rozproszonej, wykonaj skrypt przekazujący parametry dla nazwy grupy dostępności, nazwy odbiornika i portu.
Na przykład przy założeniu, że nazwa grupy dostępności , nazwa odbiornika ag1
dnnlsnr
i portu odbiornika jako 6789
, wykonaj następujące kroki:
Otwórz narzędzie interfejsu wiersza polecenia, takie jak wiersz polecenia lub program PowerShell.
Przejdź do miejsca zapisania skryptu
.ps1
, takiego jak c:\Documents.Wykonaj skrypt:
add_dnn_listener.ps1 <ag name> <listener-name> <listener port>
. Na przykład:c:\Documents> .\add_dnn_listener.ps1 ag1 dnnlsnr 6789
Weryfikowanie odbiornika
Użyj programu SQL Server Management Studio lub Języka Transact-SQL, aby potwierdzić, że odbiornik nazwy sieci rozproszonej został utworzony pomyślnie.
SQL Server Management Studio
Rozwiń węzeł Odbiorniki grupy dostępności w programie SQL Server Management Studio (SSMS), aby wyświetlić odbiornik sieci rozproszonej:
Transact-SQL
Użyj języka Transact-SQL, aby wyświetlić stan odbiornika sieci rozproszonej:
SELECT * FROM SYS.AVAILABILITY_GROUP_LISTENERS
Wartość 1
dla is_distributed_network_name
wskazuje, że odbiornik jest odbiornikiem nazwy sieci rozproszonej (DNN):
Aktualizowanie parametry połączenia
Zaktualizuj parametry połączenia dla dowolnej aplikacji, która musi nawiązać połączenie z odbiornikiem sieci rozproszonej. Parametry połączenia odbiornika sieci rozproszonej musi podać numer portu nazwy sieci rozproszonej i określić MultiSubnetFailover=True
w parametry połączenia. Jeśli klient SQL nie obsługuje parametru MultiSubnetFailover=True
, nie jest zgodny z odbiornikiem sieci rozproszonej.
Poniżej przedstawiono przykład parametry połączenia dla nazwy odbiornika DNN_Listener i portu 6789:
DataSource=DNN_Listener,6789;MultiSubnetFailover=True
Testowanie pracy w trybie failover
Przetestuj tryb failover grupy dostępności, aby zapewnić funkcjonalność.
Aby przetestować tryb failover, wykonaj następujące kroki:
- Połącz się z odbiornikiem sieci rozproszonej lub jedną z replik przy użyciu programu SQL Server Management Studio (SSMS).
- Rozwiń pozycję Zawsze włączona grupa dostępności w Eksplorator obiektów.
- Kliknij prawym przyciskiem myszy grupę dostępności i wybierz pozycję Tryb failover, aby otworzyć Kreatora trybu failover.
- Postępuj zgodnie z monitami, aby wybrać docelowy tryb failover i zakończyć niepowodzeniem grupy dostępności do repliki pomocniczej.
- Upewnij się, że baza danych jest w stanie zsynchronizowanym w nowej repliki podstawowej.
- (Opcjonalnie) Powrót po awarii do oryginalnej repliki podstawowej lub innej repliki pomocniczej.
Testowanie łączności
Przetestuj łączność z odbiornikiem sieci rozproszonej, wykonując następujące kroki:
- Otwórz program SQL Server Management Studio.
- Połącz się z odbiornikiem sieci rozproszonej.
- Otwórz nowe okno zapytania i sprawdź, z którą repliką masz połączenie, uruchamiając polecenie
SELECT @@SERVERNAME
. - Przełącz grupę dostępności w tryb failover do innej repliki.
- Po rozsądnym czasie uruchom polecenie
SELECT @@SERVERNAME
, aby potwierdzić, że grupa dostępności jest teraz hostowana w innej repliki.
Ograniczenia
- Odbiorniki sieci rozproszonej MUSZĄ być skonfigurowane z unikatowym portem. Port nie może być współużytkowany z żadnym innym połączeniem w żadnej repliki.
- Klient nawiązujący połączenie z odbiornikiem sieci rozproszonej musi obsługiwać
MultiSubnetFailover=True
parametr w parametry połączenia. - Podczas pracy z innymi funkcjami programu SQL Server i grupą dostępności z siecią DNN mogą istnieć dodatkowe kwestie. Aby uzyskać więcej informacji, zobacz ag with DNN interoperability (Grupa dostępności z współdziałaniem sieci rozproszonej sieci rozproszonej).
Zagadnienia dotyczące portów
Odbiorniki sieci rozproszonej są przeznaczone do nasłuchiwania na wszystkich adresach IP, ale na określonym, unikatowym porcie. Wpis DNS dla nazwy odbiornika powinien być rozpoznawany jako adresy wszystkich replik w grupie dostępności. Odbywa się to automatycznie za pomocą skryptu programu PowerShell podanego w sekcji Tworzenie skryptu . Ponieważ odbiorniki sieci rozproszonej akceptują połączenia na wszystkich adresach IP, ważne jest, aby port odbiornika był unikatowy i nie był używany przez żadną inną replikę w grupie dostępności. Ponieważ program SQL Server domyślnie nasłuchuje na porcie 1433, bezpośrednio lub za pośrednictwem usługi SQL Browser, zdecydowanie odradza się używanie portu 1433 dla odbiornika sieci rozproszonej.
Jeśli port odbiornika wybrany dla odbiornika sieci VNN wynosi od 49 152 do 65 536 ( domyślny zakres portów dynamicznych dla protokołu TCP/IP, dodaj dla tego wykluczenie. Pozwoli to zapobiec dynamicznemu przypisywaniu tego samego portu przez inne systemy.
Wykluczenie portów można dodać za pomocą następującego polecenia: netsh int ipv4 add excludedportrange tcp startport=<Listener Port> numberofports=1 store=persistent
Następne kroki
Po wdrożeniu grupy dostępności rozważ optymalizację ustawień usługi HADR dla programu SQL Server na maszynach wirtualnych platformy Azure.
Aby dowiedzieć się więcej, zobacz: