Sdílet prostřednictvím


Připojení k posluchači skupiny vysoké dostupnosti Always On

platí pro:SQL Server

V tomto článku se dozvíte, jak se připojit k posluchači skupiny dostupnosti Always On pro SQL Server. Naslouchací prvek skupiny dostupnosti je virtuální název sítě, který klienti používají pro připojení k databázi hostované ve skupině dostupnosti. Posluchač poskytuje konzistentní koncový bod připojení pro klientské aplikace, bez ohledu na to, která dostupnostní replika aktuálně hostuje primární databázi. Posluchač také umožňuje podporu směrování pouze pro čtení a automatického převzetí služeb při selhání.

Po nakonfigurování naslouchacího procesu aktualizujte připojovací řetězce tak, aby odkazovaly na naslouchací proces, aby se provoz aplikace automaticky směroval na zamýšlenou repliku, aniž by se po každém převzetí služeb při selhání musel ručně aktualizovat připojovací řetězec.

Připojení k primární replice

Zadejte název DNS posluchače skupiny dostupnosti v připojovacím řetězci pro připojení k primární replice pro čtení a zápis.

Pokud se například chcete připojit k primární replice v aplikaci SQL Server Management Studio prostřednictvím naslouchacího procesu, zadejte název DNS naslouchacího procesu do pole název serveru:

Snímek obrazovky připojení k posluchači v SSMS

Při převzetí služeb při selhání, když se změní primární replika, se stávající připojení k naslouchacímu procesu odpojí a nová připojení se přesměrují na novou primární repliku.

Příklad základního připojovacího řetězce pro poskytovatele ADO.NET (Microsoft.Data.SqlClient nebo System.Data.SqlClient):

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

Poznámka:

Microsoft.Data.SqlClient je doporučeným poskytovatelem dat ADO.NET pro vývoj nových aplikací. Podporuje stejná klíčová slova připojovacího řetězce jako System.Data.SqlClient. Další informace naleznete v tématu Úvod do jmenného prostoru Microsoft.Data.SqlClient.

Spuštěním následujícího příkazu Transact-SQL (T-SQL) můžete ověřit, ke které replice jste aktuálně připojení prostřednictvím naslouchacího procesu:

SELECT @@SERVERNAME

Například když je SQLVM1 primární replika:

Snímek obrazovky kontroly připojení repliky

Stále se můžete připojit přímo k instanci aplikace SQL Server pomocí názvu instance buď primární, nebo sekundární repliky, místo posluchače skupiny dostupnosti. Pak ale ztratíte výhodu nových připojení směrovaných automaticky na novou aktuální primární repliku. Kromě toho ztratíte výhodu směrování jen pro čtení, kdy se připojení zadaná pomocí read-intent automaticky směrují do sekundární repliky pro čtení.

Připojte se k replice určené pouze pro čtení

Směrování jen pro čtení znamená automatické směrování příchozích připojení klienta na čitelnou sekundární repliku, která je nakonfigurována tak, aby umožňovala úlohy pouze pro čtení.

Připojení se automaticky směrují na repliku jen pro čtení, pokud jsou splněné následující podmínky:

  • Nejméně jedna sekundární replika je nastavená na přístup jen pro čtení a každá sekundární replika jen pro čtení a primární replika je nakonfigurovaná tak, aby podporovala směrování jen pro čtení.

  • Připojovací řetězec odkazuje na databázi zapojenou do skupiny dostupnosti. Alternativou k tomu je přihlášení použité v připojení, které má databáze nakonfigurovanou jako výchozí databázi. Další informace najdete v tomto článku o tom, jak algoritmus funguje se směrováním jen pro čtení.

  • Připojovací řetězec odkazuje na posluchač skupiny dostupnosti a záměr aplikace příchozího připojení je nastaven na režim pouze pro čtení (například pomocí klíčového slova Application Intent=ReadOnly v připojovacích řetězcích ODBC nebo OLEDB, vlastnostech připojení nebo jejich atributech).

Atribut záměru aplikace je uložen v relaci klienta během přihlášení. Instance SQL Serveru zpracuje záměr a určí, co dělat podle konfigurace skupiny dostupnosti a aktuálního stavu čtení a zápisu cílové databáze v sekundární replice.

Pokud se například chcete připojit k replice jen pro čtení pomocí aplikace SQL Server Management Studio , vyberte Možnosti v dialogovém okně Připojit k serveru , vyberte kartu Další parametry připojení a pak zadejte ApplicationIntent=ReadOnly do textového pole:

Snímek obrazovky s připojením jen pro čtení v SSMS

Příklad připojovacího řetězce pro poskytovatele ADO.NET (Microsoft.Data.SqlClient nebo System.Data.SqlClient), který určuje záměr aplikace jen pro čtení:

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

Další informace najdete v tématu Konfigurace přístupu pouze pro čtení k replice dostupnosti (SQL Server)

Nedefaultní port

Při vytváření naslouchacího procesu určíte port, který bude naslouchací proces používat. Pokud je port výchozím portem 1433, nemusíte při připojování k naslouchacímu procesu zadávat číslo portu. Pokud ale port není 1433, musí být port zadán v připojovacím řetězci ve formátu listenername,port , například:

Snímek obrazovky s připojením přes nestandardní port.

Příklad připojovacího řetězce pro poskytovatele ADO.NET (Microsoft.Data.SqlClient nebo System.Data.SqlClient), který určuje nedefaultní port pro naslouchací proces:

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

Obejít naslouchače

Zatímco posluchači skupin dostupnosti umožňují podporu přesměrování převzetí služeb a směrování pouze pro čtení, pro připojení klientů není nutné je používat. Připojení klienta může také přímo odkazovat na instanci SQL Serveru místo toho, aby se připojilo k naslouchacímu procesu skupiny dostupnosti.

Pro instanci SQL Serveru nezáleží na tom, jestli se přihlašuje pomocí naslouchacích postupů skupiny dostupnosti nebo pomocí koncového bodu jiné instance. Instance SQL Serveru ověří stav cílové databáze a buď povolí nebo zakáže připojení na základě konfigurace skupiny dostupnosti a aktuálního stavu databáze v instanci. Pokud se například klientská aplikace připojí přímo k instanci portu SQL Serveru a připojí se k cílové databázi hostované ve skupině dostupnosti a cílová databáze je v primárním stavu a online, připojení proběhne úspěšně. Pokud je cílová databáze offline nebo v přechodném stavu, připojení k databázi selže.

Alternativně, při migraci ze zrcadlení databáze do Always On skupin dostupnosti mohou aplikace zadat připojovací řetězec pro zrcadlení databáze, pokud existuje jen jedna sekundární replika, která nepovoluje připojení uživatelů.

Připojovací řetězce pro databázové zrcadlení

Pokud skupina dostupnosti má pouze jednu sekundární repliku a je nakonfigurovaná buď s ALLOW_CONNECTIONS = READ_ONLY, nebo ALLOW_CONNECTIONS = NONE pro sekundární repliku, klienti se můžou připojit k primární replice pomocí připojovacího řetězce zrcadlení databáze. Tento přístup může být užitečný při migraci existující aplikace ze zrcadlení databáze do skupiny dostupnosti, pokud omezíte skupinu dostupnosti na dvě repliky dostupnosti (primární repliku a jednu sekundární repliku). Pokud přidáte další sekundární repliky, budete muset vytvořit naslouchací službu skupiny dostupnosti pro tuto skupinu dostupnosti a aktualizovat své aplikace pro použití názvu DNS naslouchací služby skupiny dostupnosti.

Při použití připojovacích řetězců pro zrcadlení databází může klient použít buď SQL Server Native Client, nebo zprostředkovatele dat rozhraní .NET Framework pro SQL Server. Připojovací řetězec poskytnutý klientem musí minimálně zadat název jedné instance serveru, počáteční název partnera, aby bylo možné identifikovat instanci serveru, která původně hostuje repliku dostupnosti, ke které se chcete připojit. Volitelně může připojovací řetězec zadat také název jiné instance serveru, název partnera pro převzetí služeb při selhání, aby se identifikovala instance serveru, která původně hostuje sekundární repliku jako název partnera pro převzetí služeb při selhání.

Pro více informací o připojovacích řetězcích zrcadlení databáze si přečtěte Připojení klientů k relaci zrcadlení databáze (SQL Server).

Převzetí služeb při selhání v prostředí s více podsítěmi

Pokud používáte klientské knihovny, které podporují volbu připojení MultiSubnetFailover v připojovacím řetězci, můžete optimalizovat převzetí skupiny dostupnosti na jinou podsíť nastavením MultiSubnetFailover na hodnotu True nebo Ano, v závislosti na syntaxi poskytovatele, který používáte.

Poznámka:

Toto nastavení doporučujeme pro připojení s jednou i více podsítěmi k naslouchacím procesům skupin dostupnosti a k názvům instancí převzetí služeb při selhání clusteru SQL Serveru. Povolením této možnosti přidáte další optimalizace, a to i pro scénáře s jednou podsítí.

Možnost připojení MultiSubnetFailover funguje pouze s protokolem TCP a je podporována pouze při připojování k posluchači skupiny dostupnosti nebo ke všem virtuálním názvům sítí, které se připojují k SQL Serveru.

Příklad připojovacího řetězce poskytovatele ADO.NET (Microsoft.Data.SqlClient nebo System.Data.SqlClient), který umožňuje převzetí služeb při selhání s více podsítěmi, je následující:

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

Možnost připojení MultiSubnetFailover by měla být nastavená na hodnotu True, i když skupina dostupnosti pokrývá pouze jednu podsíť. Tato možnost umožňuje předem nakonfigurovat nové klienty tak, aby podporovali budoucí rozšiřování podsítí bez nutnosti měnit připojovací řetězec klienta v budoucnu, a současně optimalizuje výkon převzetí služeb při selhání pro selhání s jedinou podsítí. I když možnost připojení MultiSubnetFailover není nutná, poskytuje výhodu rychlejšího převzetí služeb při selhání podsítě. Klientský ovladač se pokusí otevřít soket TCP pro každou IP adresu paralelně přidruženou ke skupině dostupnosti. Ovladač klienta čeká, až první IP adresa odpoví úspěšně, a jakmile se tak stane, použije ji pro připojení.

Posluchače a certifikáty TLS/SSL

Pokud se zúčastněné instance SQL Serveru připojují k naslouchacímu procesu skupiny dostupnosti a používají TLS/SSL certifikáty společně s šifrováním relací, musí připojovací klientský ovladač podporovat alternativní název subjektu v certifikátu TLS/SSL, aby bylo možné vynutit šifrování.

Pro každý uzel zúčastněného serveru v clusteru s podporou převzetí služeb při selhání musí být nakonfigurovaný certifikát X.509 se seznamem všech naslouchacích procesů skupiny dostupnosti nastavených v alternativním názvu subjektu certifikátu.

Formát hodnot certifikátu je:

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

Máte například následující hodnoty:

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

Pro WSFC, který má jednu skupinu dostupnosti, by měl certifikát obsahovat plně kvalifikovaný název domény (FQDN) serveru a posluchače:

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

Při této konfiguraci se připojení při připojování k instanci (WIN2019\SQL2019) nebo naslouchacímu procesu (Listener2019) zašifruje.

V závislosti na konfiguraci sítě existuje malá podmnožina zákazníků, kteří můžou potřebovat přidat rozhraní NetBIOS také do sítě SAN. V takovém případě by hodnoty certifikátu měly být:

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

Pokud má WSFC tři posluchače skupiny dostupnosti, například: posluchač1, posluchač2, posluchač3

Hodnoty certifikátu by pak měly být:

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

Naslouchací procesy a protokoly Kerberos (SPN)

Správce domény musí ve službě Active Directory nakonfigurovat hlavní název služby (SPN) pro každý naslouchací proces skupiny dostupnosti, aby mohl protokol Kerberos povolit připojení klientů k naslouchacímu procesu. Při registraci SPN musíte použít účet služby instance serveru, která hostuje repliku dostupnosti. Aby SPN fungoval ve všech replikách, musí být pro všechny instance v clusteru WSFC, který hostuje skupinu dostupnosti, použit stejný účet služby.

K konfiguraci hlavního názvu služby (SPN) použijte nástroj příkazového řádku Windows setspn. Pokud například chcete nakonfigurovat hlavní název služby (SPN) pro posluchač AG1listener.Adventure-Works.com skupiny dostupnosti hostovaný v souboru instancí SQL Serveru, které jsou nakonfigurované tak, aby běžely v rámci účtu corp\svclogin2 domény:

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

Další informace o ruční registraci Service Principal Name (SPN) pro SQL Server naleznete v tématu Registrace hlavního názvu služby pro připojení Kerberos.