Udostępnij za pośrednictwem


Połącz z słuchaczem grupy dostępności Always On

Dotyczy:SQL Server

W tym artykule przedstawiono sposób nawiązywania połączenia z odbiornikiem zawsze włączonej grupy dostępności dla programu SQL Server. Odbiornik grupy dostępności to nazwa sieci wirtualnej, której klienci używają do łączenia się z bazą danych hostowaną w grupie dostępności. Odbiornik zapewnia spójny punkt końcowy połączenia dla aplikacji klienckich, niezależnie od tego, która replika dostępności obecnie hostuje podstawową bazę danych. Słuchacz umożliwia również obsługę routingu tylko do odczytu i automatycznego przełączania awaryjnego.

Po skonfigurowaniu odbiornika zaktualizuj parametry połączenia, aby wskazywały odbiornik, tak aby ruch aplikacji był automatycznie kierowany do zamierzonej repliki bez konieczności ręcznego aktualizowania parametrów połączenia po każdym przejściu w tryb failover.

Nawiąż połączenie z repliką podstawową

Określ nazwę DNS odbiornika grupy dostępności w parametrach połączenia, aby nawiązać połączenie z repliką podstawową na potrzeby dostępu do odczytu i zapisu.

Aby na przykład nawiązać połączenie z repliką podstawową w programie SQL Server Management Studio za pośrednictwem odbiornika, wprowadź nazwę DNS odbiornika w polu nazwa serwera:

Zrzut ekranu przedstawiający nawiązywanie połączenia z odbiornikiem w programie SSMS.

Podczas pracy w trybie failover, gdy replika podstawowa ulegnie zmianie, istniejące połączenia z odbiornikiem są rozłączone, a nowe połączenia są kierowane do nowej repliki podstawowej.

Przykład podstawowych parametrów połączenia dla dostawcy ADO.NET (Microsoft.Data.SqlClient lub System.Data.SqlClient):

Server=tcp: AGListener,1433;Database=MyDB;Integrated Security=SSPI

Uwaga / Notatka

Microsoft.Data.SqlClient jest zalecanym dostawcą danych ADO.NET na potrzeby tworzenia nowych aplikacji. Obsługuje on te same słowa kluczowe parametrów połączenia co System.Data.SqlClient. Aby uzyskać więcej informacji, zobacz Wprowadzenie do przestrzeni nazw Microsoft.Data.SqlClient.

Możesz sprawdzić, z którą repliką jest obecnie połączona za pośrednictwem odbiornika, uruchamiając następujące polecenie Transact-SQL (T-SQL):

SELECT @@SERVERNAME

Na przykład gdy sqlVM1 jest repliką podstawową:

Zrzut ekranu przedstawiający sprawdzanie łączności repliki.

Można wciąż połączyć się bezpośrednio z wystąpieniem programu SQL Server, używając nazwy wystąpienia repliki podstawowej lub pomocniczej zamiast nasłuchiwacza grupy dostępności. Utracisz jednak korzyści wynikające z automatycznego kierowania nowych połączeń do nowej bieżącej repliki podstawowej. Ponadto utracisz korzyści z routingu tylko do odczytu, gdzie połączenia określone za pomocą read-intent są automatycznie kierowane do repliki pomocniczej z możliwością odczytu.

Połącz się z repliką tylko do odczytu

Trasowanie tylko do odczytu odnosi się do automatycznego kierowania przychodzących połączeń z odbiornikiem do możliwej do odczytu repliki pomocniczej, która umożliwia odczyt i jest skonfigurowana do wykonywania zadań tylko do odczytu.

Połączenia są automatycznie kierowane do repliki w trybie tylko do odczytu, jeśli spełnione są następujące warunki:

  • Co najmniej jedna replika pomocnicza jest ustawiona na dostęp tylko do odczytu, a każda replika pomocnicza tylko do odczytu i replika podstawowa są skonfigurowane do obsługi routingu tylko do odczytu.

  • Parametry połączenia odwołują się do bazy danych zaangażowanej w grupę dostępności. Alternatywą może być to, że login używany w połączeniu ma skonfigurowaną bazę danych jako swoją domyślną bazę danych. Aby uzyskać więcej informacji, zobacz ten artykuł dotyczący sposobu działania algorytmu z routingiem tylko do odczytu.

  • Parametry połączenia odwołują się do odbiornika grupy dostępności, a intencja aplikacji połączenia przychodzącego jest ustawiona na tylko do odczytu (na przykład przy użyciu słowa kluczowego Application Intent=ReadOnly w parametrach połączenia ODBC lub OLEDB albo atrybutach połączenia lub właściwościach).

Atrybut intencji aplikacji jest przechowywany w sesji klienta podczas logowania. Wystąpienie programu SQL Server przetwarza intencję i określa, co należy zrobić zgodnie z konfiguracją grupy dostępności i bieżącym stanem odczytu i zapisu docelowej bazy danych w repliki pomocniczej.

Aby na przykład nawiązać połączenie z repliką tylko do odczytu przy użyciu programu SQL Server Management Studio, wybierz pozycję Opcje w oknie dialogowym Łączenie z serwerem , wybierz kartę Dodatkowe parametry połączenia , a następnie określ ApplicationIntent=ReadOnly w polu tekstowym:

Zrzut ekranu przedstawiający połączenie tylko do odczytu w programie SSMS.

Przykład parametrów połączenia dla dostawcy ADO.NET (Microsoft.Data.SqlClient lub System.Data.SqlClient), który wyznacza intencję aplikacji tylko do odczytu:

Server=tcp:AGListener;Database=AdventureWorks;Integrated Security=SSPI;ApplicationIntent=ReadOnly

Aby uzyskać więcej informacji, zobacz Konfigurowanie dostępu tylko do odczytu na replika dostępności (SQL Server)

Port niezdefaultowy

Podczas tworzenia odbiornika należy wyznaczyć port do użycia przez odbiornik. Jeśli port jest domyślnym portem 1433, nie musisz określać numeru portu podczas nawiązywania połączenia z odbiornikiem. Jeśli jednak port nie jest równy 1433, to port musi być określony w parametrach połączenia w postaci listenername,port, na przykład:

Zrzut ekranu przedstawiający nawiązywanie połączenia z portem bez definicji.

Przykład parametrów połączenia dla dostawcy ADO.NET (Microsoft.Data.SqlClient lub System.Data.SqlClient), który określa port niezdefault dla odbiornika:

Server=tcp:AGListener,1445;Database=AdventureWorks;Integrated Security=SSPI

Pomiń odbiorniki

Podczas gdy nasłuchiwacze grupy dostępności umożliwiają obsługę przekierowywania w trybie failover i routingu tylko do odczytu, połączenia klienckie nie muszą ich używać. Połączenie klienta może również bezpośrednio odwoływać się do instancji SQL Server zamiast nawiązywać połączenie z odbiornikiem grupy dostępności.

Dla wystąpienia SQL Server nie ma znaczenia, czy połączenie loguje się przy użyciu nasłuchiwacza grupy dostępności, czy innego punktu końcowego wystąpienia. Instancja SQL Server weryfikuje stan docelowej bazy danych i zezwala lub nie zezwala na łączność na podstawie konfiguracji grupy dostępności i bieżącego stanu bazy danych w instancji. Na przykład, jeśli aplikacja kliencka łączy się bezpośrednio z wystąpieniem serwera SQL na porcie i łączy się z docelową bazą danych hostowaną w grupie dostępności, a docelowa baza danych jest w stanie pierwotnym i online, wtedy łączność będzie skuteczna. Jeśli docelowa baza danych jest w trybie offline lub w stanie przejściowym, łączność z bazą danych kończy się niepowodzeniem.

Alternatywnie, podczas migracji z dublowania bazy danych do grup dostępności Always On, aplikacje mogą określać parametry połączenia dublowania bazy danych, o ile istnieje tylko jedna replika pomocnicza i nie zezwala ona na połączenia użytkowników.

Parametry połączenia mirroringu bazy danych

Jeśli grupa dostępności ma tylko jedną replikę pomocniczą i jest skonfigurowana z użyciem ALLOW_CONNECTIONS = READ_ONLY lub ALLOW_CONNECTIONS = NONE dla repliki pomocniczej, klienci mogą łączyć się z repliką podstawową, używając ciągu połączenia do dublowania bazy danych. Takie podejście może być przydatne podczas migrowania istniejącej aplikacji z funkcji dublowania bazy danych do grupy dostępności, o ile grupa dostępności zostanie ograniczona do dwóch replik dostępności (repliki podstawowej i jednej repliki pomocniczej). W przypadku dodawania dodatkowych replik pomocniczych należy utworzyć odbiornik grupy dostępności dla grupy dostępności i zaktualizować aplikacje tak, aby używały nazwy DNS odbiornika grupy dostępności.

Podczas korzystania z ciągów połączenia z dublowaniem baz danych, klient może użyć programu SQL Server Native Client lub dostawcy danych .NET Framework dla SQL Server. Parametr połączenia dostarczony przez klienta musi co najmniej podać nazwę jednego wystąpienia serwera, czyli początkową nazwę partnera, aby zidentyfikować wystąpienie serwera, które początkowo udostępnia replikę dostępności, z którą zamierzasz nawiązać połączenie. Opcjonalnie łańcuch połączenia może również podać nazwę innego wystąpienia serwera, nazwę partnera trybu awaryjnego, aby zidentyfikować wystąpienie serwera, które początkowo hostuje replikę pomocniczą jako nazwę partnera trybu awaryjnego.

Aby uzyskać więcej informacji na temat parametrów połączenia w ramach mirroringu bazy danych, zobacz Łączenie klientów z sesją mirroringu bazy danych (SQL Server).

Przełączanie awaryjne między wieloma podsieciami

Jeśli używasz bibliotek klienckich, które obsługują opcję MultiSubnetFailover w parametrach połączenia, możesz zoptymalizować przenoszenie grupy dostępności do innej podsieci, ustawiając MultiSubnetFailover na "True" lub "Tak", w zależności od składni używanego dostawcy.

Uwaga / Notatka

Zalecamy to ustawienie zarówno dla połączeń jednopodsieciowych i wielopodsieciowych z nasłuchiwaczami grup dostępności, jak i z nazwami instancji klastra przełączania awaryjnego SQL Server. Włączenie tej opcji powoduje dodanie dodatkowych optymalizacji, nawet w przypadku scenariuszy z jedną podsiecią.

Opcja połączenia MultiSubnetFailover działa tylko z protokołem sieciowym TCP i jest obsługiwana tylko podczas nawiązywania połączenia ze słuchaczem grupy dostępności i dla dowolnej nazwy sieci wirtualnej łączącej się z SQL Server.

Przykład parametrów połączenia dostawcy ADO.NET (Microsoft.Data.SqlClient lub System.Data.SqlClient) umożliwiających przejście w tryb failover z wieloma podsieciami jest następujący:

Server=tcp:AGListener,1433;Database=AdventureWorks;Integrated Security=SSPI; MultiSubnetFailover=True

Opcja połączenia MultiSubnetFailover powinna być ustawiona na True, nawet jeśli grupa dostępności obejmuje tylko jedną podsieć. Ta opcja pozwala wstępnie skonfigurować nowych klientów, aby wspierać przyszłe rozciąganie podsieci bez konieczności zmiany łańcucha połączenia klienta, a także optymalizuje wydajność przełączania awaryjnego dla pojedynczych podsieci. Chociaż opcja połączenia MultiSubnetFailover nie jest wymagana, oferuje korzyść szybszego przełączania awaryjnego podsieci. Sterownik klienta próbuje otworzyć gniazdo TCP dla każdego adresu IP równolegle skojarzonego z grupą dostępności. Sterownik klienta czeka, aż pierwszy adres IP odpowie pomyślnie i po jego zakończeniu używa go do połączenia.

Odbiorniki i certyfikaty TLS/SSL

W przypadku nawiązywania połączenia z odbiornikiem grupy dostępności, jeśli uczestniczące wystąpienia programu SQL Server używają certyfikatów TLS/SSL w połączeniu z szyfrowaniem sesji, sterownik klienta połączenia musi obsługiwać alternatywną nazwę podmiotu w certyfikacie TLS/SSL w celu wymuszenia szyfrowania.

Certyfikat X.509 musi być skonfigurowany dla każdego węzła serwera uczestniczących w klastrze trybu failover z listą wszystkich odbiorników grupy dostępności ustawionych w alternatywnej nazwie podmiotu certyfikatu.

Format wartości certyfikatu to:

CN = Server.FQDN
SAN = Server.FQDN,Listener1.FQDN,Listener2.FQDN

Na przykład masz następujące wartości:

Servername: Win2019
Instance: SQL2019
AG: AG2019
Listener: Listener2019
Domain: contoso.com  (which is also the FQDN)

W przypadku usługi WSFC, która ma jedną grupę dostępności, certyfikat powinien mieć w pełni kwalifikowaną nazwę domeny (FQDN) serwera oraz nazwę FQDN odbiornika:

CN: Win2019.contoso.com
SAN: Win2019.contoso.com, Listener2019.contoso.com

W przypadku tej konfiguracji połączenie jest szyfrowane podczas nawiązywania połączenia z wystąpieniem (WIN2019\SQL2019) lub odbiornikiem (Listener2019).

W zależności od konfiguracji sieci istnieje niewielki podzbiór klientów, którzy również muszą dodać netBIOS do sieci SAN. W tym przypadku wartości certyfikatu powinny być następujące:

CN: Win2019.contoso.com
SAN: Win2019,Win2019.contoso.com,Listener2019,Listener2019.contoso.com

Jeśli usługa WSFC ma trzy nasłuchiwacze grup dostępności, takie jak: Listener1, Listener2, Listener3

Następnie wartości certyfikatu powinny być następujące:

CN: Win2019.contoso.com
SAN: Win2019.contoso.com,Listener1.contoso.com,Listener2.contoso.com,Listener3.contoso.com

Odbiorniki i sieci Kerberos (SPN)

Administrator domeny musi skonfigurować główną nazwę usługi (SPN) w usłudze Active Directory dla każdego odbiornika grupy dostępności w celu włączenia protokołu Kerberos dla połączeń klientów z odbiornikiem. Podczas rejestrowania SPN należy użyć konta usługi instancji serwera, która hostuje replikę dostępności. Aby system nazw SPN działał poprawnie we wszystkich replikach, należy używać tego samego konta usługi dla wszystkich instancji w klastrze WSFC, które hostują grupę dostępności.

Użyj narzędzia wiersza polecenia setspn systemu Windows, aby skonfigurować SPN. Na przykład, aby skonfigurować nazwę SPN dla odbiornika grupy dostępności o nazwie AG1listener.Adventure-Works.com, hostowanego na zestawie instancji SQL Server, wszystkich skonfigurowanych do uruchamiania w ramach konta domeny corp\svclogin2:

setspn -A MSSQLSvc/AG1listener.Adventure-Works.com:1433 corp\svclogin2

Aby uzyskać więcej informacji na temat ręcznej rejestracji głównej nazwy usługi dla programu SQL Server, zobacz Rejestrowanie głównej nazwy usługi dla połączeń Kerberos.