Подключение к прослушивателю группы доступности Always OnConnect to an Always On availability group listener

Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions)

После настройки прослушивателя группы доступности необходимо обновить строку подключения для подключения к прослушивателю группы доступности Always On.Once you've configured your availability group listener, you'll need to update your connection string to connect to the Always On availability group listener. Это приведет к автоматическому перенаправлению трафика из приложения в нужную реплику без необходимости вручную обновлять строку подключения после каждой отработки отказа.This will route traffic from your application automatically to the intended replica without having to manually update the connection string after every failover.

Подключение к первичной репликеConnect to the primary replica

Чтобы подключиться к первичной реплике с доступом для чтения и записи, в строке подключения укажите DNS-имя прослушивателя группы доступности.Specify the availability group listener DNS name in the connection string to connect to the primary replica for read-write access.

Например, чтобы подключиться к первичной реплике в SQL Server Management Studio через прослушиватель, введите DNS-имя прослушивателя в поле имени сервера:For example, to connect to the primary replica in SQL Server Management Studio through the listener, enter the listener DNS name in the server name field:

Подключение к прослушивателю в SSMS

Во время отработки отказа при изменении первичной реплики существующие подключения к прослушивателю прерываются, а новые соединения направляются в новую первичную реплику.During a failover, when the primary replica changes, existing connections to the listener are disconnected and new connections are routed to the new primary replica.

Пример простейшей строки соединения для поставщика данных ADO.NET (System.Data.SqlClient):An example of a basic connection string for the ADO.NET provider (System.Data.SqlClient):

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

Вы можете проверить, к какой реплике в данный момент вы подключены через прослушиватель, выполнив следующую команду Transact-SQL (T-SQL):You can verify which replica you're currently connected to through the listener by running the following Transact-SQL (T-SQL) command:

SELECT @@SERVERNAME

Например, если SQLVM1 — это первичная реплика:For example, when SQLVM1 is my primary replica:

Проверка подключения реплики

Вы по-прежнему можете подключаться непосредственно к экземпляру SQL Server, используя имя экземпляра первичной или вторичной реплики вместо использования прослушивателя группы доступности.You can still connect directly to the instance of SQL Server using the instance name of the primary or secondary replica instead of using the availability group listener. Однако вы потеряете преимущество автоматического перенаправления новых подключений к новой текущей первичной реплике.However, you will then lose the benefit of new connections being routed automatically to the new current primary replica. Кроме того, вы потеряете преимущество маршрутизации только для чтения, при которой подключения, указанные с read-intent, автоматически направляются в доступную для чтения вторичную реплику.Additionally, you will lose the benefit of read-only routing, where connections specified with read-intent are automatically routed to the readable secondary replica.

Подключение к реплике только для чтенияConnect to a read-only replica

Маршрутизация только для чтения означает автоматическую маршрутизацию входящих подключений к доступной для чтения вторичной реплике, которая поддерживает доступ только для чтения.Read-only routing refers to automatically routing incoming listener connections to a readable secondary replica that is configured to allow read-only workloads.

Подключения автоматически направляются в реплику только для чтения, если выполняются следующие условия:Connections are automatically routed to the read-only replica if the following are true:

  • Как минимум одна вторичная реплика устанавливается для доступа только для чтения, а первичная и все вторичные реплики только для чтения настраиваются для поддержки маршрутизации только для чтения.At least one secondary replica is set to read-only access, and each read-only secondary replica and the primary replica are configured to support read-only routing.

  • Строка подключения ссылается на базу данных, относящуюся к группе доступности.The connection string references a database involved in the Availability Group. Альтернативой является наличие базы данных, настроенной как базы данных по умолчанию, для имени входа, используемого при подключении.An alternative to this would be the login used in the connection has the database configured as its default database. Дополнительные сведения см. в этой статье о работе алгоритма с маршрутизацией только для чтения.For more information, see this article on how the algorithm works with read-only routing.

  • В строке подключения указывается прослушиватель группы доступности, а в качестве намерения приложения входящего подключения задается доступ только для чтения (например, с помощью ключевого слова Application Intent=ReadOnly в строке подключения ODBC или OLEDB либо атрибутами или свойствами соединения).The connection string references an availability group listener, and the application intent of the incoming connection is set to read-only (for example, by using the Application Intent=ReadOnly keyword in the ODBC or OLEDB connection strings or connection attributes or properties).

Атрибут намерения приложения сохраняется в сеансе клиента во время входа в систему, после чего экземпляр SQL Server обрабатывает это назначение и определяет, что делать в соответствии с конфигурацией группы доступности, а также текущим состоянием чтения и записи целевой базы данных на вторичной реплике.The application intent attribute is stored in the client's session during login and the instance of SQL Server will then process this intent and determine what to do according to the configuration of the availability group and the current read-write state of the target database in the secondary replica.

Например, чтобы подключиться к реплике только для чтения с помощью SQL Server Management Studio, выберите Параметры в диалоговом окне Подключение к серверу, выберите вкладку Дополнительные параметры подключения, а затем в текстовом поле укажите ApplicationIntent=ReadOnly:For example, to connect to a read-only replica using SQL Server Management Studio, select Options on the Connect to Server dialog box, select the Additional Connection Parameters tab, and then specify ApplicationIntent=ReadOnly in the text box:

Подключение только для чтения в SSMS

Пример строки подключения для поставщика ADO.NET (Systen.Data.SqlClient), обозначающий намерение приложения получить доступ только для чтения:An example of a connection string for the ADO.NET provider (System.Data.SqlClient) that designates read-only application intent:

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

Дополнительные сведения см. в разделе Настройка доступа только для чтения в реплике доступности (SQL Server)For more information, see Configure Read-Only Access on an Availability Replica (SQL Server)

Порты не по умолчаниюNon-default port

При создании прослушивателя необходимо назначить порт, который будет использоваться прослушивателем.When creating your listener, you designate a port for the listener to use. Если порт является портом по умолчанию 1433, то при подключении к прослушивателю не нужно указывать номер порта.If the port is the default port of 1433, then you do not have to specify a port number when connecting to your listener. Однако если это не порт 1433, он должен быть указан в строке подключения в формате listenername,port, например:However, if the port is not 1433, then the port must be specified in the connection string in the format of listenername,port such as:

Подключение не к порту по умолчанию

Пример строки подключения для поставщика ADO.NET (Systen.Data.SqlClient), указывающий порт не по умолчанию для прослушивателя:An example of a connection string for the ADO.NET provider (System.Data.SqlClient) that specifies a non-default port for the listener:

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

Обход прослушивателейBypass listeners

Хотя прослушиватели групп доступности обеспечивают поддержку перенаправления отработки отказа и маршрутизации только для чтения, клиентские подключения не обязательно должны использовать их.While availability group listeners enable support for failover redirection and read-only routing, client connections are not required to use them. Клиентское подключение может обращаться непосредственно к экземпляру SQL Server, а не к прослушивателю группы доступности.A client connection can also directly reference the instance of SQL Server instead of connecting to the availability group listener.

С точки зрения экземпляра SQL Server нет никакой разницы, использует соединение для входа в систему прослушиватель группы доступности или конечную точку другого экземпляра.To the instance of SQL Server, it is irrelevant whether a connection logs in using the availability group listener or using another instance endpoint. Экземпляр SQL Server проверяет состояние целевой базы данных и разрешает или запрещает подключение, исходя из конфигурации группы доступности, а также текущего состояния базы данных на экземпляре.The instance of SQL Server will verify the state of the targeted database and either allow or disallow connectivity based on the configuration of the availability group and the current state of the database on the instance. Например, если клиентское приложение подключается напрямую к порту экземпляра SQL Server, а затем соединяется с целевой базой данных, размещенной в группе доступности, при этом целевая база данных является базой данных-источником и находится в сети, связь будет успешно установлена.For example, if a client application connects directly to an instance of SQL Server port and connects to a target database hosted in an availability group, and the target database is in primary state and online, then connectivity will succeed. Если база данных-получатель не находится в сети или находится в переходном состоянии, связь с ней установить не удастся.If the target database is offline or in a transitional state, connectivity to the database will fail.

Кроме того, при переходе с зеркального отображения базы данных на Группы доступности AlwaysOnAlways On availability groupsприложения могут указывать строку подключения к зеркально отображаемой базе данных при условии, что имеется только одна вторичная реплика, которая запрещает подключения пользователей.Alternatively, while migrating from database mirroring to Группы доступности AlwaysOnAlways On availability groups, applications can specify the database mirroring connection string as long as only one secondary replica exists and it disallows user connections.

Строки подключения для зеркального отображения базы данныхDatabase mirroring connection strings

Если в группе доступности имеется только одна вторичная реплика и она настроена с помощью параметров ALLOW_CONNECTIONS = READ_ONLY или ALLOW_CONNECTIONS = NON для этой вторичной реплики, клиенты смогут подключаться к первичной реплике доступности с помощью строк подключения к зеркально отображаемой базе данных.If an availability group possesses only one secondary replica and is configured with either ALLOW_CONNECTIONS = READ_ONLY or ALLOW_CONNECTIONS = NONE for the secondary replica, clients can connect to the primary replica by using a database mirroring connection string. Такой подход можно использовать при переносе существующего приложения с зеркально отображаемой базы данных в группу доступности при условии ограничения группы доступности до двух реплик доступности (одной первичной и одной вторичной).This approach can be useful while migrating an existing application from database mirroring to an availability group, as long as you limit the availability group to two availability replicas (a primary replica and one secondary replica). При добавлении дополнительных вторичных реплик потребуется создать прослушиватель группы доступности и обновить приложения так, чтобы они использовали DNS-имя прослушивателя группы доступности.If you add additional secondary replicas, you will need to create an availability group listener for the availability group and update your applications to use the availability group listener DNS name.

При использовании строк подключения к зеркальному отображения баз данных клиент может использовать собственный клиент SQL ServerSQL Server или поставщика данных .NET Framework для SQL ServerSQL Server.When using database mirroring connection strings, the client can use either SQL ServerSQL Server Native Client or .NET Framework Data Provider for SQL ServerSQL Server. В строке подключения, предоставленной клиентом, должно быть как минимум указано имя экземпляра сервера, имя изначального участника, для определения экземпляра сервера, на котором первоначально размещалась реплика доступности, к которой необходимо подключиться.The connection string provided by a client must minimally supply the name of one server instance, the initial partner name, to identify the server instance that initially hosts the availability replica to which you intend to connect. При необходимости строка подключения может также содержать имя другого экземпляра сервера, имя партнера по обеспечению отработки отказа, обозначающее экземпляр сервера, на котором первоначально размещалась вторичная реплика, в качестве имени участника отработки отказа.Optionally, the connection string can also supply the name of another server instance, the failover partner name, to identify the server instance that initially hosts the secondary replica as the failover partner name.

Дополнительные сведения о строках подключения зеркального отображения баз данных см. в разделе Подключение клиентов к сеансу зеркального отображения базы данных (SQL Server).For more information about database mirroring connection strings, see Connect Clients to a Database Mirroring Session (SQL Server).

Отработка отказа в нескольких подсетяхMulti-subnet failovers

Если используются клиентские библиотеки, поддерживающие в строке подключения параметр подключения MultiSubnetFailover, то можно оптимизировать отработку отказа группы доступности в другую подсеть, задав для свойства MultiSubnetFailover значение True или Yes, в зависимости от синтаксиса используемого поставщика данных.If you're using client libraries that support the MultiSubnetFailover connection option in the connection string, you can optimize availability group failover to a different subnet by setting MultiSubnetFailover to "True" or "Yes", depending on the syntax of the provider you are using.

Примечание

Этим параметром рекомендуется пользоваться для соединения с прослушивателем группы доступности как с одной, так и с несколькими подсетями, а также для имени экземпляра отказоустойчивого кластера SQL Server.We recommend this setting for both single and multi-subnet connections to availability groups listeners and to SQL Server Failover Cluster Instance names. При использовании этого параметра задействуется дополнительная оптимизация, даже при работе с одной подсетью.Enabling this option adds additional optimizations, even for single-subnet scenarios.

Параметр подключения MultiSubnetFailover работает только с сетевым протоколом TCP и поддерживается только при подключении к прослушивателю группы доступности, а также для любого имени виртуальной сети, связанного с SQL Server 2019 (15.x)SQL Server 2019 (15.x).The MultiSubnetFailover connection option only works with the TCP network protocol and is only supported when connecting to an availability group listener and for any virtual network name connecting to SQL Server 2019 (15.x)SQL Server 2019 (15.x).

Вот пример подобной строки подключения (позволяющей выполнять отработку отказа в нескольких подсетях) для поставщика данных ADO.NET (System.Data.SqlClient):An example of the ADO.NET provider (System.Data.SqlClient) connection string that enables multi-subnet failover is as follows:

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

Параметру подключения MultiSubnetFailover следует задать значение True , даже если группа доступности размещена только в одной подсети.The MultiSubnetFailover connection option should be set to True even if the availability group only spans a single subnet. Это позволяет настроить новых клиентов для обеспечения поддержки расширения в будущем без необходимости вносить какие-либо изменения в строки подключения клиентов, а также оптимизирует производительность отработки отказа при работе в одной подсети.This allows you to preconfigure new clients to support future spanning of subnets without any need for future client connection string changes and also optimizes failover performance for single subnet failovers. Хотя параметр подключения MultiSubnetFailover не является обязательным, он обеспечивает повышение скорости отработки отказа в подсети.While the MultiSubnetFailover connection option is not required, it does provide the benefit of a faster subnet failover. Обусловлено это тем, что драйвер клиента пытается открыть TCP-сокет для каждого IP-адреса, параллельно связанного с группой доступности.This is because the client driver will attempt to open up a TCP socket for each IP address in parallel associated with the availability group. Драйвер клиента ждет ответа от первого IP-адреса с сообщением об успехе, а после его получения использует этот IP-адрес для подключения.The client driver will wait for the first IP to respond with success and once it does, will then use it for the connection.

Прослушиватели и сертификаты TLS/SSLListeners & TLS/SSL certificates

При подключении к прослушивателю группы доступности, если экземпляры-участники SQL Server используют TLS|SSL-сертификаты в сочетании с шифрованием сеанса, для обеспечения шифрования драйвер клиента, устанавливающего подключение, должен поддерживать альтернативное имя объекта (Subject Alternate Name) из TLS/SSL-сертификата.When connecting to an availability group listener, if the participating instances of SQL Server use TLS/SSL certificates in conjunction with session encryption, the connecting client driver will need to support the Subject Alternate Name in the TLS/SSL certificate in order to force encryption. Поддержка драйвером SQL Server альтернативного имени объекта (Subject Alternative Name) сертификата планируется для ADO.NET (SqlClient), Microsoft JDBC и SQL Native Client (SNAC).SQL Server driver support for certificate Subject Alternative Name is planned for ADO.NET (SqlClient), Microsoft JDBC, and SQL Native Client (SNAC).

Для каждого узла сервера-участника в отказоустойчивом кластере необходимо настроить сертификат X.509, задав список всех прослушивателей групп доступности, указанных в альтернативном имени объекта (Subject Alternate Name) сертификата.An X.509 certificate must be configured for each participating server node in the failover cluster with a list of all availability group listeners set in the Subject Alternate Name of the certificate.

Формат значений сертификата:The format for the certificate values is:

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

Например, у вас есть следующий код:For example, you have the following values:

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

Для WSFC с одной группой доступности сертификат должен иметь полное доменное имя (FQDN) сервера и FQDN прослушивателя:For a WSFC that has a single availability group, the certificate should have the fully qualified domain name (FQDN) of the server, and the FQDN of the listener:

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

В такой конфигурации соединения будут шифроваться при подключении к экземпляру (WIN2019\SQL2019) или прослушивателю (Listener2019).With this configuration, your connections will be encrypted when connecting to the instance (WIN2019\SQL2019), or the the listener (Listener2019).

В зависимости от настройки сети существует небольшое число клиентов, которым может потребоваться добавить NetBIOS в сеть SAN.Depending on how networking is configured, there is a small subset of customers that may need to add the NetBIOS to the SAN as well. В этом случае значения сертификата должны быть:In which case, the certificate values should be:

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

Если у WSFC есть три прослушивателя группы доступности, например: Listener1, Listener2, Listener3If the WSFC has three availability group listeners, such as: Listener1, Listener2, Listener3

Значения сертификата должны быть:Then the certificate values should be:

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

Прослушиватели и Kerberos (имена субъектов-служб)Listeners and Kerberos (SPNs)

Администратор домена должен настроить имя субъекта-службы (SPN) в Active Directory для каждого прослушивателя группы доступности, чтобы включить протокол Kerberos для клиентских подключений к прослушивателю.A domain administrator must configure a Service Principal Name (SPN) in Active Directory for each availability group listener to enable Kerberos for client connections to the listener. При регистрации имени субъекта-службы необходимо использовать учетную запись службы экземпляра сервера, на котором размещена реплика доступности.When registering the SPN, you must use the service account of the server instance that hosts the availability replica. Для обеспечения работы SPN во всех репликах необходимо использовать одну учетную запись службы для всех экземпляров из кластера WSFC, на которых размещается группа доступности.For the SPN to work across all replicas, the same service account must be used for all instances in the WSFC cluster that hosts the availability group.

Для задания SPN используйте программу командной строки Windows setspn .Use the setspn Windows command line tool to configure the SPN. Пример настройки SPN для группы доступности AG1listener.Adventure-Works.com , размещенной на наборе экземпляров SQL Server, работающих под учетной записью домена corp\svclogin2.For example to configure an SPN for an availability group named AG1listener.Adventure-Works.com hosted on a set of instances of SQL Server all configured to run under the domain account corp\svclogin2:

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

Дополнительные сведения о ручной регистрации SPN для SQL Server см. в разделе Регистрация имени участника-службы для соединений Kerberos.For more information about manual registration of a SPN for SQL Server, see Register a Service Principal Name for Kerberos Connections.

Дальнейшие действияNext steps

После успешного подключения к прослушивателю рассмотрите возможность разгрузки рабочих нагрузок только для чтения и резервных копий во вторичную реплику, чтобы повысить производительность.Once you've successfully connected to the listener, consider offloading read-only workloads and backups to the secondary replica to improve performance. Вы также можете ознакомиться с различными стратегиями мониторинга группы доступности, чтобы обеспечить работоспособность группы доступности.You can also review various availability group monitoring strategies to ensure the health of your availability group.

Дополнительные сведения о группах доступности см. в разделе Обзор групп доступности Always On (SQL Server).For more information about availability groups, see the Overview of Always On Availability Groups (SQL Server).