Konfigurowanie odbiornika nazwy sieci rozproszonej dla grupy dostępności

Dotyczy: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:

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 czynności:

  1. Otwórz Edytor tekstu, takiego jak Notatnik.

  2. 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
    
  3. Zapisz skrypt jako .ps1 plik, taki jak add_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 ag1dnnlsnri portu odbiornika jako 6789, wykonaj następujące kroki:

  1. Otwórz narzędzie interfejsu wiersza polecenia, takie jak wiersz polecenia lub program PowerShell.

  2. Przejdź do miejsca zapisania skryptu .ps1 , takiego jak c:\Documents.

  3. Wykonaj skrypt: add_dnn_listener.ps1 <ag name> <listener-name> <listener port>. 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:

View the DNN listener under availability group listeners in SQL Server Management Studio (SSMS)

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):

Use sys.availability_group_listeners to identify DNN listeners that have a value of 1 in is_distributed_network_name

Aktualizowanie parametrów połączenia

Zaktualizuj parametry połączenia dla dowolnej aplikacji, która musi nawiązać połączenie z odbiornikiem sieci rozproszonej. Parametry połączenia z odbiornikiem sieci DNN muszą podać numer portu nazwy sieci rozproszonej i określić MultiSubnetFailover=True w parametrach połączenia. Jeśli klient SQL nie obsługuje parametru MultiSubnetFailover=True , nie jest zgodny z odbiornikiem sieci rozproszonej.

Poniżej przedstawiono przykład parametrów 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:

  1. Połącz się z odbiornikiem sieci rozproszonej lub jedną z replik przy użyciu programu SQL Server Management Studio (SSMS).
  2. Rozwiń pozycję Zawsze włączona grupa dostępności w Eksploratorze obiektów.
  3. Kliknij prawym przyciskiem myszy grupę dostępności i wybierz pozycję Tryb failover, aby otworzyć Kreatora trybu failover.
  4. Postępuj zgodnie z monitami, aby wybrać docelowy tryb failover i zakończyć niepowodzeniem grupy dostępności do repliki pomocniczej.
  5. Upewnij się, że baza danych jest w stanie zsynchronizowanym w nowej repliki podstawowej.
  6. (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:

  1. Otwórz program SQL Server Management Studio.
  2. Połącz się z odbiornikiem sieci rozproszonej.
  3. Otwórz nowe okno zapytania i sprawdź, z którą repliką masz połączenie, uruchamiając polecenie SELECT @@SERVERNAME.
  4. Przełącz grupę dostępności w tryb failover do innej repliki.
  5. 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 parametrach 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: