Udostępnij za pośrednictwem


Współdziałanie funkcji z wystąpieniem klastra trybu failover programu SQL Server i nazwą sieci rozproszonej

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.

Istnieją pewne funkcje programu SQL Server, które opierają się na zakodowanej nazwie sieci wirtualnej (VNN). W związku z tym w przypadku korzystania z zasobu nazwy sieci rozproszonej (DNN) z wystąpieniem klastra trybu failover i programem SQL Server na maszynach wirtualnych platformy Azure należy wziąć pod uwagę dodatkowe zagadnienia.

W tym artykule dowiesz się, jak skonfigurować alias sieci podczas korzystania z zasobu sieci rozproszonej, a także funkcje programu SQL Server wymagają dodatkowej uwagi.

Tworzenie aliasu sieciowego (FCI)

Niektóre składniki po stronie serwera opierają się na zakodowanej wartości sieci wirtualnej i wymagają aliasu sieciowego, który mapuje nazwę sieci wirtualnej na nazwę DNS nazwy sieci rozproszonej w celu prawidłowego działania. Wykonaj kroki opisane w temacie Tworzenie aliasu serwera, aby utworzyć alias mapujący nazwę sieci wirtualnej na nazwę DNS nazwy sieci rozproszonej.

W przypadku wystąpienia domyślnego można mapować nazwę sieci VNN na nazwę DNS nazwy sieci rozproszonej bezpośrednio, tak aby nazwa DNS sieci VNN = nazwa DNS sieci rozproszonej. Jeśli na przykład nazwa sieci VNN to , nazwa wystąpienia to FCI1, a nazwa sieci rozproszonej to MSSQLSERVERFCI1DNN (klienci wcześniej połączeni z FCIserwerem , a teraz łączą się z FCI1DNNusługą ), zamapuj nazwę FCI1 sieci wirtualnej na nazwę sieci rozproszonej FCI1DNN.

W przypadku wystąpienia nazwanego należy wykonać mapowanie aliasu sieciowego dla pełnego wystąpienia, tak aby VNN\Instance = DNN\Instance. Jeśli na przykład nazwa sieci VNN to , nazwa wystąpienia to FCI1, a nazwa sieci rozproszonej to instAFCI1DNN (klienci wcześniej połączeni z FCI1\instAserwerem , a teraz łączą się z FCI1DNN\instaAusługą ), zamapuj nazwę FCI1\instaA sieci wirtualnej na nazwę sieci rozproszonej FCI1DNN\instaA.

Sterowniki klienta

W przypadku sterowników ODBC, OLEDB, ADO.NET, JDBC, PHP i Node.js użytkownicy muszą jawnie określić nazwę DNS nazwy sieci rozproszonej jako nazwę serwera w parametry połączenia. Aby zapewnić szybką łączność po przejściu w tryb failover, dodaj MultiSubnetFailover=True go do parametry połączenia, jeśli klient SQL go obsługuje.

Narzędzia

Użytkownicy programu SQL Server Management Studio, sqlcmd, Azure Data Studio i SQL Server Data Tools muszą jawnie określić nazwę DNS nazwy sieci rozproszonej jako nazwę serwera w parametry połączenia.

Grupy dostępności i wystąpienia klastra trybu failover

Możesz skonfigurować zawsze włączoną grupę dostępności przy użyciu wystąpienia klastra trybu failover jako jednej z replik. W tej konfiguracji adres URL punktu końcowego dublowania dla repliki wystąpienia klastra trybu failover musi używać nazwy rozproszonej klastra trybu failover. Podobnie, jeśli wystąpienia klastra trybu failover są używane jako replika tylko do odczytu, routing tylko do odczytu do repliki fcI musi używać nazwy rozproszonej klastra trybu failover.

Format punktu końcowego dublowania to: ENDPOINT_URL = 'TCP://<DNN DNS name>:<mirroring endpoint port>'.

Jeśli na przykład nazwa DNS nazwy domeny to dnnlsnri 5022 jest portem punktu końcowego dublowania wystąpienia klastra trybu failover, fragment kodu Transact-SQL (T-SQL) w celu utworzenia adresu URL punktu końcowego wygląda następująco:

ENDPOINT_URL = 'TCP://dnnlsnr:5022'

Podobnie format adresu URL routingu tylko do odczytu to: TCP://<DNN DNS name>:<SQL Server instance port>.

Jeśli na przykład nazwa DNS nazwy sieci rozproszonej to dnnlsnr, i 1444 jest portem używanym przez docelową usługę SQL Server FCI tylko do odczytu, fragment kodu T-SQL do utworzenia adresu URL routingu tylko do odczytu wygląda następująco:

READ_ONLY_ROUTING_URL = 'TCP://dnnlsnr:1444'

Możesz pominąć port w adresie URL, jeśli jest to domyślny port 1433. W przypadku nazwanego wystąpienia skonfiguruj port statyczny dla nazwanego wystąpienia i określ go w adresie URL routingu tylko do odczytu.

Replikacja

Replikacja ma trzy składniki: Wydawca, Dystrybutor, Subskrybent. Każdy z tych składników może być wystąpieniem klastra trybu failover. Ponieważ nazwa sieci wirtualnej wystąpienia klastra trybu failover jest intensywnie używana w konfiguracji replikacji, zarówno jawnie, jak i niejawnie, alias sieci mapujący nazwę sieci wirtualnej na nazwę sieci rozproszonej może być konieczny do działania replikacji.

Przed skonfigurowaniem replikacji należy używać nazwy sieci wirtualnej jako nazwy wystąpienia klastra trybu failover, ale przed skonfigurowaniem replikacji utwórz alias sieci w następujących sytuacjach zdalnych:

Składnik replikacji (FCI z siecią DNN) Składnik zdalny Mapa aliasu sieciowego Serwer z mapą sieci
Publisher Dystrybutor Nazwa sieci wirtualnej wydawcy do nazwy sieci rozproszonej programu Publisher Dystrybutor
Dystrybutor Subskrybent Dystrybutor sieci VNN do dystrybutora sieci rozproszonej Subskrybent
Dystrybutor Publisher Dystrybutor sieci VNN do dystrybutora sieci rozproszonej Publisher
Subskrybent Dystrybutor Nazwa sieci wirtualnej subskrybenta do nazwy sieci rozproszonej subskrybenta Dystrybutor

Załóżmy na przykład, że masz wydawcę, który jest skonfigurowany jako wystąpienie klastra trybu failover przy użyciu nazwy sieci rozproszonej w topologii replikacji, a dystrybutor jest zdalny. W takim przypadku utwórz alias sieciowy na serwerze dystrybutora, aby zamapować nazwę VNN wydawcy na nazwę sieci rozproszonej wydawcy:

Skonfiguruj nazwę DNS nazwy sieci rozproszonej jako alias sieci przy użyciu programu SQL Server Configuration Manager.

Użyj pełnej nazwy wystąpienia dla nazwanego wystąpienia, takiego jak na poniższym przykładzie:

Użyj pełnej nazwy wystąpienia podczas konfigurowania aliasu sieciowego dla nazwanego wystąpienia.

Dublowanie bazy danych

Dublowanie bazy danych można skonfigurować za pomocą wystąpienia klastra trybu failover jako jeden z partnerów dublowania bazy danych. Skonfiguruj ją przy użyciu języka Transact-SQL (T-SQL), a nie interfejsu GUI programu SQL Server Management Studio. Użycie języka T-SQL zapewni utworzenie punktu końcowego dublowania bazy danych przy użyciu nazwy sieci rozproszonej zamiast nazwy sieci wirtualnej.

Jeśli na przykład nazwa DNS nazwy domeny to dnnlsnr, a punkt końcowy dublowania bazy danych to 7022, poniższy fragment kodu T-SQL konfiguruje partnera dublowania bazy danych:

ALTER DATABASE AdventureWorks
    SET PARTNER =
    'TCP://dnnlsnr:7022'
GO 

W przypadku dostępu klienta właściwość Partner trybu failover może obsługiwać tryb failover dublowania bazy danych, ale nie tryb failover wystąpienia klastra trybu failover.

MSDTC

FcI może uczestniczyć w transakcjach rozproszonych koordynowanych przez koordynatora transakcji rozproszonych firmy Microsoft (MSDTC). Klastrowane MSDTC i lokalne MSDTC są obsługiwane w przypadku nazwy rozproszonej klastra trybu failover. Na platformie Azure usługa Azure Load Balancer jest niezbędna do wdrożenia klastrowanego msdTC.

Napiwek

Nazwa sieci rozproszonej zdefiniowana w klastrze klastra MSDTC nie zastępuje wymagania usługi Azure Load Balancer.

FileStream

Mimo że usługa FileStream jest obsługiwana dla bazy danych w klastrze trybu failover, uzyskiwanie dostępu do elementu FileStream lub FileTable przy użyciu interfejsów API systemu plików z siecią DNN nie jest obsługiwane.

Serwery połączone

Korzystanie z serwera połączonego z siecią DNN wystąpienia klastra trybu failover jest obsługiwane. Użyj nazwy sieci rozproszonej bezpośrednio do skonfigurowania połączonego serwera lub użyj aliasu sieciowego, aby zamapować nazwę sieci wirtualnej na nazwę sieci rozproszonej.

Aby na przykład utworzyć połączony serwer z nazwą dnnlsnr DNS nazwy sieci rozproszonej dla nazwanego wystąpienia insta1, użyj następującego polecenia Języka Transact-SQL (T-SQL):

USE [master]   
GO   

EXEC master.dbo.sp_addlinkedserver    
    @server = N'dnnlsnr\inst1',    
    @srvproduct=N'SQL Server' ;   
GO 

Alternatywnie można utworzyć połączony serwer przy użyciu nazwy sieci wirtualnej (VNN), ale następnie należy zdefiniować alias sieciowy, aby zamapować nazwę sieci wirtualnej na nazwę sieci rozproszonej.

Na przykład w przypadku nazwy wystąpienia , nazwy insta1vnnnamesieci wirtualnej i nazwy dnnlsnrnazwy sieci rozproszonej użyj następującego polecenia Języka Transact-SQL (T-SQL), aby utworzyć serwer połączony przy użyciu nazwy sieci wirtualnej:

USE [master]
GO   

EXEC master.dbo.sp_addlinkedserver   
    @server = N'vnnname\inst1',    
    @srvproduct=N'SQL Server' ;   
GO 

Następnie utwórz alias sieciowy do mapowania vnnname\insta1 na dnnlsnr\insta1.

Często zadawane pytania

  • Która wersja programu SQL Server zapewnia obsługę sieci rozproszonej?

    PROGRAM SQL Server 2019 CU2 lub nowszy.

  • Jaki jest oczekiwany czas pracy w trybie failover, kiedy jest używana nazwa sieci rozproszonej?

    W przypadku nazwy sieci rozproszonej czas pracy w trybie failover będzie tylko czasem pracy w trybie failover wystąpienia klastra trybu failover bez konieczności dodawania czasu (na przykład czasu sondy, gdy używasz usługi Azure Load Balancer).

  • Czy istnieją jakieś wymagania dotyczące wersji dla klientów SQL do obsługi nazwy rozproszonej z oleDB i ODBC?

    Zalecamy MultiSubnetFailover=True parametry połączenia obsługę sieci rozproszonej. Jest ona dostępna od programu SQL Server 2012 (11.x).

  • Czy do korzystania z nazwy sieci rozproszonej są wymagane jakiekolwiek zmiany konfiguracji programu SQL Server?

    Program SQL Server nie wymaga żadnej zmiany konfiguracji w celu używania nazwy sieci rozproszonej, ale niektóre funkcje programu SQL Server mogą wymagać większej uwagi.

  • Czy nazwa sieci rozproszonej obsługuje klastry z wieloma podsieciami?

    Tak. Klaster wiąże nazwę sieci rozproszonej w systemie DNS z fizycznymi adresami IP wszystkich węzłów w klastrze niezależnie od podsieci. Klient SQL próbuje wszystkich adresów IP nazwy DNS niezależnie od podsieci.

Następne kroki

Aby dowiedzieć się więcej, zobacz: