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

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server нетБаза данных SQL Azure нетAzure Synapse Analytics (хранилище данных SQL) нетParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

В этом разделе содержатся сведения о клиентских компонентах Группы доступности AlwaysOnAlways On availability groups и функциях переключения приложений.This article contains information about considerations for Группы доступности AlwaysOnAlways On availability groups client connectivity and application-failover functionality.

Примечание

В большинстве стандартных конфигураций прослушивателей первый прослушиватель группы доступности можно создать просто с помощью инструкции Transact-SQLTransact-SQL или командлетов PowerShell.For the majority of the common listener configurations, you can create the first availability group listener simply by using Transact-SQLTransact-SQL statements or PowerShell cmdlets. Дополнительные сведения см. в подразделе Связанные задачидалее в этом разделе.For more information, see Related Tasks, later in this topic.

Прослушиватели группы доступностиAvailability Group Listeners

Можно обеспечить клиентское соединение с базой данных определенной группы доступности, создав прослушиватель группы доступности.You can provide client connectivity to the database of a given availability group by creating an availability group listener. Прослушиватель группы доступности ― это виртуальное сетевое имя (VNN), к которому могут подключаться клиенты, чтобы получить доступ к базе данных из первичной или вторичной реплики группы доступности AlwaysOn.An availability group listener is a virtual network name (VNN) to which clients can connect in order to access a database in a primary or secondary replica of an Always On availability group. Прослушиватель группы доступности позволяет клиенту подключаться к реплике доступности, не зная имени физического экземпляра SQL Server, с которым устанавливается соединение.An availability group listener enables a client to connect to an availability replica without knowing the name of the physical instance of SQL Server to which the client is connecting. Изменять строку подключения клиента, чтобы установить соединение с текущим расположением текущей первичной реплики, не требуется.The client connection string does not need to be modified to connect to the current location of the current primary replica.

Прослушиватель группы доступности состоит из службы доменных имен прослушивателя (DNS), обозначения порта прослушивателя, а также одного или нескольких IP-адресов.An availability group listener consists of a Domain Name System (DNS) listener name, listener port designation, and one or more IP addresses. Для работы прослушивателя группы доступности поддерживается только протокол TCP.Only the TCP protocol is supported by availability group listener. DNS-имя прослушивателя должно быть уникальным в домене и в NetBIOS.The DNS name of the listener must also be unique in the domain and in NetBIOS. При создании нового прослушивателя группы доступности он становится ресурсом кластера с соответствующим виртуальным сетевым именем (VNN), виртуальным IP-адресом (VIP) и зависимостью группы доступности.When you create a new availability group listener it becomes a resource in a cluster with an associated virtual network name (VNN), virtual IP (VIP), and availability group dependency. Клиент с помощью DNS разрешает VNN в несколько IP-адресов, а затем пытается подключаться по каждому адресу, пока запрос подключения не завершится успехом или не истечет время ожидания.A client uses DNS to resolve the VNN into multiple IP addresses and then tries to connect to each address, until a connection request succeeds or until the connection requests time out.

Если для одной или нескольких вторичных реплик для чтения настроена маршрутизация только для чтения, то клиентские соединения с первичной репликой с намерением чтения направляются во вторичную реплику для чтения.If read-only routing is configured for one or more readable secondary replicas, read-intent client connections to the primary replica are redirected to a readable secondary replica. Кроме того, если первичная реплика переходит в режим «вне сети» на одном экземпляре SQL Server, а на другом экземпляре SQL Server новая первичная реплика переходит в режим «в сети», то прослушиватель группы доступности позволяет клиентам подключаться к новой первичной реплике.Also, if the primary replica goes offline on one instance of SQL Server, and a new primary replica comes online on another instance of SQL Server, the availability group listener enables clients to connect to the new primary replica.

Основные сведения о прослушивателях групп доступности см. в разделе Создание или настройка прослушивателя группы доступности (SQL Server).For essential information about availability group listeners, see Create or Configure an Availability Group Listener (SQL Server).

Конфигурация прослушивателя группы доступностиAvailability Group Listener Configuration

Прослушиватель группы доступности определяется следующими параметрами.An availability group listener is defined by the following:

Уникальное имя DNSA unique DNS name
Оно известно также как имя виртуальной сети (VNN).This is also known as a Virtual Network Name (VNN). Действуют правила именования Active Directory для DNS-имен узла.Active Directory naming rules for DNS host names apply. Дополнительные сведения см. в статье базы знаний Соглашения о наименовании в Active Directory для компьютеров, доменов, сайтов и подразделений .For more information, see the Naming conventions in Active Directory for computers, domains, sites, and OUs KB article.

Один или несколько виртуальных IP-адресов (VIP)One or more Virtual IP addresses (VIPs)
Виртуальные IP-адреса настраиваются для одной или нескольких подсетей, для которых группа доступности может выполнить отработку отказа.VIPs are configured for one or more subnets to which the availability group can fail over.

Настройка IP-адресовIP address configuration
Для данного прослушивателя группы доступности IP-адрес использует протокол DHCP или один или несколько статических IP-адресов.For a given availability group listener, the IP address uses either Dynamic Host Configuration Protocol (DHCP) or one or more static IP addresses.

  • Протокол DHCPDynamic Host Configuration Protocol (DHCP)

    Если группа доступности расположена в одной подсети, можно настроить использование протокола DHCP для всех IP-адресов прослушивателя группы доступности.If an availability group resides on a single subnet, you can configure all the availability group listener IP addresses to use DHCP. В предварительной рабочей среде протокол DHCP упрощает настройку группы доступности, для которой не требуется выполнять аварийное восстановление на удаленный сервер, находящийся в другой подсети.For pre-production environments, DHCP offers an easy setup for an availability group that does not require disaster recovery to a remote site on a separate subnet. Но не рекомендуется использовать протокол DHCP совместно с прослушивателем группы доступности для производственной среды.However, you should not use DHCP in conjunction with an availability group listener in a production environment. Причина в том, что в случае простоя, если время действия IP-адреса протокола DHCP истекло, на регистрацию нового сетевого IP-адреса протокола DHCP, связанного с DNS-именем прослушивателя, уйдет дополнительное время.This is because, in the event of down time, if the DHCP IP lease expires, extra time is required to re-register the new DHCP IP address associated with the listener DNS name. Из-за дополнительного затраченного времени возникнет ошибка подключения клиента.The extra time will cause client-connection failure.

  • Статические IP-адресаStatic IP addresses

    В рабочей среде прослушивателям группы доступности рекомендуется использовать статические IP-адреса.In production environments, we recommend that availability group listeners use static IP addresses. Кроме того, если группа доступности охватывает более одной подсети в домене с несколькими подсетями, прослушиватель группы доступности должен использовать статические IP-адреса.Furthermore, where availability groups extend across subnets in a multi-subnet domain, an availability group listener must use static IP addresses.

Гибридные конфигурации сети и использование протокола DHCP в нескольких подсетях не поддерживаются для прослушивателей групп доступности.Hybrid network configurations and DHCP across subnets are not supported for availability group listeners. Это связано с тем, что при отработке отказа время действия динамического IP-адреса может закончиться, что снижает общий высокий уровень доступности.This is because when a failover happens, a dynamic IP might expire or be released, which jeopardizes overall high availability.

Выбор порта прослушивателя группы доступностиSelecting an Availability Group Listener Port

При настройке прослушивателя группы доступности необходимо назначить порт.When configuring an availability group listener, you must designate a port. Для упрощения строки подключения клиента в качестве порта по умолчанию можно задать порт 1433.You can configure the default port to 1433 in order to allow for simplicity of the client connection strings. При использовании порта 1433 указывать номер порта в строках подключения не требуется.If using 1433, you do not need to designate a port number in a connection string. Кроме того, поскольку каждый прослушиватель группы доступности будет иметь собственное имя виртуальной сети, каждый прослушиватель группы доступности, настроенный в одном кластере WSFC, может использовать один и тот же порт по умолчанию ― 1433.Also, since each availability group listener will have a separate virtual network name, each availability group listener configured on a single WSFC can be configured to reference the same default port of 1433.

Также можно назначить нестандартный порт прослушивателя, однако это приведет к тому, что при подключении к прослушивателю группы доступности его также придется явно указывать в строках подключения.You can also designate a non-standard listener port; however this means that you will also need to explicitly specify a target port in your connection string whenever connecting to the availability group listener. Кроме того, для нестандартного порта также придется создавать разрешение в брандмауэре.You will also need to open permission on the firewall for the non-standard port.

Если для имен виртуальной сети прослушивателей используется порт по умолчанию 1433, необходимо будет сделать так, чтобы никакая другая служба в узле кластера не использовала этот порт. В противном случае возникнет конфликт порта.If you use the default port of 1433 for availability group listener VNNs, you will still need to ensure that no other services on the cluster node are using this port; otherwise this would cause a port conflict.

Если один из экземпляров SQL Server уже прослушивает TCP-порт 1433 через прослушиватель экземпляра и при этом на данном компьютере больше нет служб (включая дополнительные экземпляры SQL Server), прослушивающие порт 1433, это не приведет к конфликту порта с прослушивателем группы доступности.If one of the instances of SQL Server is already listening on TCP port 1433 via the instance listener and there are no other services (including additional instances of SQL Server) on the computer listening on port 1433, this will not cause a port conflict with the availability group listener. Обусловлено это тем, что прослушиватель группы доступности может совместно использовать один TCP-порт внутри одного процесса службы.This is because the availability group listener can share the same TCP port inside the same service process. Однако не следует настраивать прослушивание одного порта несколькими экземплярами SQL Server (работающими параллельно).However multiple instances of SQL Server (side-by-side) should not be configured to listen on the same port.

Соединение с первичной репликой с помощью прослушивателяUsing a Listener to Connect to the Primary Replica

Чтобы установить соединение с первичной репликой с доступом для чтения и записи с помощью прослушивателя группы доступности, необходимо указать в строке подключения DNS-имя прослушивателя группы доступности.To use an availability group listener to connect to the primary replica for read-write access, the connection string specifies the availability group listener DNS name. Если роль первичной реплики группы доступности переходит к другой реплике, существующие подключения, в которых используется сетевое имя прослушивателя группы доступности, разрываются.If an availability group primary replica changes to a new replica, existing connections that use an availability group listener's network name are disconnected. Новые подключения к прослушивателю группы доступности будут перенаправляться к новой первичной реплике.New connections to the availability group listener are then directed 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) is as follows:

Server=tcp: AGListener,1433;Database=MyDB;IntegratedSecurity=SSPI  

При всем этом вместо использования имени сервера прослушивателя группы доступности можно применять прямое обращение к имени экземпляра SQL Server первичной или вторичной реплики, однако в этом случае нельзя будет обеспечить автоматическое перенаправление новых подключений на текущую первичную реплику.You can still choose to directly reference the instance of SQL Server name of the primary or secondary replicas instead of using the availability group listener server name, however if you choose to do so you will lose the benefit of new connections being directed automatically to the current primary replica. Также нельзя будет маршрутизировать подключения с доступом только для чтения.You will also lose the benefit of read-only routing.

Соединение с помощью прослушивателя со вторичной репликой только для чтения (маршрутизация только для чтения)Using a Listener to Connect to a Read-Only Secondary Replica (Read-Only Routing)

Маршрутизация только для чтения означает способность SQL ServerSQL Server направлять входящие подключения к прослушивателю группы доступности на вторичную реплику, которая поддерживает доступ только для чтения.Read-only routing refers to the ability of SQL ServerSQL Server to route incoming connections to an availability group listener to a secondary replica that is configured to allow read-only workloads. Входящее подключение, ссылающееся на имя прослушивателя группы доступности, может быть автоматически перенаправлено на реплику, поддерживающую доступ только для чтения, при соблюдении следующих условий.An incoming connection referencing an availability group listener name can automatically be routed to a 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. Дополнительные сведения см. ниже в подразделе Настройка реплик доступности для маршрутизации только для чтения.For more information, see To Configure Availability Replicas for Read-Only Routing, later in this section.

  • Строка подключения ссылается на базу данных, относящуюся к группе доступности.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). Дополнительные сведения см. ниже в подразделе Приложение с намерением доступа только для чтения и маршрутизация только для чтения.For more information, see Read-Only Application Intent and Read-Only Routing, later in this section.

Настройка реплик доступности для маршрутизации только для чтенияTo Configure Availability Replicas for Read-Only Routing

Администратор базы данных должен настроить реплики доступности следующим образом.A database administrator must configure the availability replicas as follows:

  1. Для каждой реплики доступности, которую нужно настроить в качестве вторичной реплики с возможностью чтения, администратор базы данных должен задать следующие параметры, которые действуют только для вторичной роли.For each availability replica that you want to configure as a readable secondary replica, a database administrator must configure the following settings, which take effect only under the secondary role:

    • Соединение должно иметь доступ «все» или «только для чтения».Connection access must be set to "all" or "read only".

    • Необходимо указать URL-адрес маршрутизации только для чтения.The read-only routing URL must be specified.

  2. Для каждой из этих реплик необходимо для первичной роли указать список маршрутизации только для чтения.For each of these replicas, a read-only routing list must be specified for the primary role. Укажите имена одного или нескольких серверов в качестве целей маршрутизации.Specify one or more server names as routing targets.

Связанные задачиRelated Tasks

Приложение с намерением доступа только для чтения и маршрутизация только для чтенияRead-Only Application Intent and Read-Only Routing

Свойство намерения приложения в строке подключения выражает запрос клиентского приложения на перенаправление к версии базы данных группы доступности, предназначенной для чтения и записи или только для чтения.The application intent connection string property expresses the client application's request to be directed either to a read-write or read-only version of an availability group database. Чтобы обеспечить маршрутизацию только для чтения, в качестве намерения приложения клиент должен при соединении с прослушивателем группы доступности указать в строке подключения доступ только для чтения.To use read-only routing, a client must use an application intent of read-only in the connection string when connecting to the availability group listener. Если намерением приложения не является доступ только для чтения, то соединения с прослушивателем группы доступности направляются к базе данных на первичной реплике.Without the read-only application intent, connections to the availability group listener are directed to the database on the primary replica.

Атрибут намерения приложения сохраняется в сеансе клиента во время входа в систему, после чего экземпляр 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.

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

Server=tcp:AGListener,1433;Database=AdventureWorks;IntegratedSecurity=SSPI;ApplicationIntent=ReadOnly  

В этом примере строки подключения клиент пытается подключиться к базе данных AdventureWorks посредством прослушивателя группы доступности AGListener через порт 1433 (номер порта также можно не указывать, если прослушиватель группы доступности отслеживает порт 1433).In this connection string example, the client is attempting to connect to the AdventureWorks database via an availability group listener named AGListener on port 1433 (you may also omit the port if the availability group listener is listening on 1433). В строке подключения свойству ApplicationIntent присвоено значение ReadOnly, что делает эту строку строкой подключения с намерением чтения.The connection string has the ApplicationIntent property set to ReadOnly, making this a read-intent connection string. Без этого параметра сервер не стал бы пытаться выполнить для этого подключения маршрутизацию только для чтения.Without this setting, the server would not have attempted a read-only routing of the connection.

База данных-источник группы доступности обрабатывает входящий запрос на маршрутизацию только для чтения и пытается найти находящуюся в сети и доступную только для чтения реплику, присоединенную к первичной реплике и настроенную для маршрутизации только для чтения.The primary database of the availability group processes the incoming read-only routing request and attempts to locate an online, read-only replica that is joined to the primary replica and is configured for read-only routing. Клиент получает от сервера первичной реплики данные для подключения и устанавливает соединение с указанной, доступной только для чтения репликой.The client receives back connection information from the primary replica server and connects to the identified read-only replica.

Обратите внимание, что намерение приложения можно отправить из клиентского драйвера на экземпляр SQL Server более низкого уровня.Note that the application intent can be sent from a client driver to a down-level instance of SQL Server. В этом случае намерение приложения получить доступ только для чтения не учитывается, а соединение осуществляется в обычном режиме.In this case, application intent of read-only is ignored and the connection proceeds as normal.

Маршрутизацию только для чтения можно обойти, не присвоив в строке подключения свойству намерения приложения значение ReadOnly (если оно не указывается, во время входа в систему используется значение по умолчанию ReadWrite ) или подключившись непосредственно к экземпляру SQL Server первичной реплики вместо использования имени прослушивателя группы доступности.You can bypass read-only routing by not setting the application intent connection property to ReadOnly (when not designated, the default is ReadWrite during login) or by connecting directly to the primary replica instance of SQL Server instead of using the availability group listener name. Маршрутизация только для чтения также не выполняется при подключении непосредственно к реплике, доступной только для чтения.Read-only routing will also not occur if you connect directly to a read-only replica.

Связанные задачиRelated Tasks

Обход прослушивателей группы доступностиBypassing Availability Group 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. Дополнительные сведения см. далее в подразделе Использование строк подключения зеркального отображения баз данных с группами доступностиниже.For more information, see Using Database-Mirroring Connection Strings with Availability Groups, later in this section.

Использование строк подключения зеркального отображения баз данных с группами доступностиUsing Database-Mirroring Connection Strings with Availability Groups

Если в группе доступности имеется только одна вторичная реплика и она настроена с помощью параметров 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).

Поведение клиентских подключений при отработке отказаBehavior of Client Connections on Failover

В случае отработки отказа группы доступности существующие постоянные подключения к группе доступности разрываются, при этом, чтобы продолжить работать с той же базой данных-источником или доступной только для чтения базой данных-получателем, клиент должен установить новое соединение.When an availability group failover occurs, existing persistent connections to the availability group are terminated and the client must establish a new connection in order to continue working with the same primary database or read-only secondary database. Пока на стороне сервера выполняется отработка отказа, связь с группой доступности может прерваться, что заставит клиентское приложение начать попытки установить новое подключение до тех пор, пока база данных-источник не будет переведена в режим «в сети».While a failover is occurring on the server side, connectivity to the availability group may fail, forcing the client application to retry connecting until the primary is brought fully back online.

Если группа доступности возвращается в режим "в сети" в то время, когда клиентское приложение пытается установить соединение, и до истечения времени ожидания подключения, то драйвер клиента может успешно выполнить одну из своих внутренних попыток установить соединение. В этом случае приложение не выдаст никакого сообщения об ошибке.If the availability group comes back online during a client application's connection attempt but before the connect timeout period, the client driver may successfully connect during one of its internal retry attempts and no error will be surfaced to the application in this case.

Поддержка отказоустойчивых кластеров с несколькими подсетями группы доступностиSupporting Availability Group Multi-Subnet Failovers

Если используются клиентские библиотеки, поддерживающие в строке подключения параметр подключения MultiSubnetFailover, то можно оптимизировать отработку отказа группы доступности в другую подсеть, задав для свойства MultiSubnetFailover значение True или Yes, в зависимости от синтаксиса используемого поставщика данных.If you are 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 2019SQL Server 2019.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 2019SQL Server 2019.

Вот пример подобной строки подключения (позволяющей выполнять отработку отказа в нескольких подсетях) для поставщика данных 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;IntegratedSecurity=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.

Прослушиватели группы доступности и SSL-сертификатыAvailability Group Listeners and SSL Certificates

При подключении к прослушивателю группы доступности, если экземпляры-участники SQL Server используют SSL-сертификаты в сочетании с шифрованием сеанса, для обеспечения шифрования драйвер клиента, устанавливающего подключение, должен поддерживать альтернативное имя объекта (Subject Alternate Name) из SSL-сертификата.When connecting to an availability group listener, if the participating instances of SQL Server use SSL certificates in conjunction with session encryption, the connecting client driver will need to support the Subject Alternate Name in the 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.

Например, если в кластере WSFC есть три прослушивателя групп доступности с именами AG1_listener.Adventure-Works.com, AG2_listener.Adventure-Works.comи AG3_listener.Adventure-Works.com, альтернативное имя объекта (Subject Alternative Name) в сертификате должно быть задано следующим образом.For example, if the WSFC has three availability group listeners with the names AG1_listener.Adventure-Works.com, AG2_listener.Adventure-Works.com, and AG3_listener.Adventure-Works.com, the Subject Alternative Name for the certificate should be set as follows:

CN = ServerFQDN  
SAN = ServerFQDN,AG1_listener.Adventure-Works.com, AG2_listener.Adventure-Works.com, AG3_listener.Adventure-Works.com  

Прослушиватели группы доступности и имена участников-служб сервера (SPN)Availability Group Listeners and Server Principal Names (SPNs)

Имя участника-службы сервера (SPN) должно быть задано в Active Directory администратором домена для каждого имени прослушивателя группы доступности с тем, чтобы включить Kerberos для клиентских подключений к прослушивателям групп доступности.A Server Principal Name (SPN) must be configured in Active Directory by a domain administrator for each availability group listener name in order to enable Kerberos for the client connection to the availability group 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.

Связанные задачиRelated Tasks

См. такжеRelated Content

См. также:See Also

Обзор групп доступности AlwaysOn (SQL Server) Overview of Always On Availability Groups (SQL Server)
Подключение клиента AlwaysOn (SQL Server) Always On Client Connectivity (SQL Server)
Сведения о доступе клиентского подключения к репликам доступности (SQL Server) About Client Connection Access to Availability Replicas (SQL Server)
Активные вторичные реплики: вторичные реплики для чтения (группы доступности Always On) Active Secondaries: Readable Secondary Replicas (Always On Availability Groups)
Подключение клиентов к сеансу зеркального отображения базы данных (SQL Server)Connect Clients to a Database Mirroring Session (SQL Server)