Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:SQL Server
В этой статье рассказывается о том, как подключиться к прослушивателю группы доступности Always On для SQL Server. Прослушиватель группы доступности — это имя виртуальной сети, которое клиенты используют для подключения к базе данных, размещенной в группе доступности. Прослушиватель предоставляет согласованную конечную точку подключения для клиентских приложений, независимо от того, какая реплика доступности в настоящее время размещает базу данных-источник. Прослушиватель также обеспечивает поддержку маршрутизации только для чтения и автоматического переключения при отказе.
После настройки прослушивателя обновите строки подключения, чтобы они указывали на прослушиватель, чтобы трафик приложения автоматически перенаправлялся в предназначенную реплику без необходимости вручную обновлять строки подключения после каждой смены.
Подключение к первичной реплике
Чтобы подключиться к первичной реплике с доступом для чтения и записи, в строке подключения укажите DNS-имя прослушивателя группы доступности.
Например, чтобы подключиться к первичной реплике в SQL Server Management Studio через прослушиватель, введите DNS-имя прослушивателя в поле имени сервера:
Во время отказоустойчивости при смене первичной реплики существующие подключения к слушателю прерываются, а новые соединения направляются к новой первичной реплике.
Пример базовой строки подключения для поставщика ADO.NET (Microsoft.Data.SqlClient или System.Data.SqlClient):
Server=tcp: AGListener,1433;Database=MyDB;Integrated Security=SSPI
Примечание.
Microsoft.Data.SqlClient — рекомендуемый поставщик данных ADO.NET для создания новых приложений. Он поддерживает те же ключевые слова строки подключения, что и System.Data.SqlClient. Дополнительные сведения см. в разделе "Общие сведения о пространстве имен Microsoft.Data.SqlClient".
Вы можете проверить, к какой реплике в данный момент вы подключены через прослушиватель, выполнив следующую команду Transact-SQL (T-SQL):
SELECT @@SERVERNAME
Например, если SQLVM1 является основной репликой:
Вы по-прежнему можете подключаться непосредственно к экземпляру SQL Server, используя имя экземпляра первичной или вторичной реплики вместо использования прослушивателя группы доступности. Тем не менее, вы потеряете преимущество автоматического перенаправления новых подключений к новой текущей первичной реплике. Кроме того, вы потеряете преимущество маршрутизации только для чтения, при котором подключения, указанные с помощью read-intent, автоматически направляются на читаемую вторичную реплику.
Подключитесь к реплике только для чтения
Маршрутизация только для чтения означает автоматическую маршрутизацию входящих подключений через прослушиватель к доступной для чтения вторичной реплике, которая предназначена для обработки рабочих нагрузок только для чтения.
Подключения автоматически перенаправляются на реплику только для чтения, если выполняются следующие условия:
Как минимум одна вторичная реплика устанавливается для доступа только для чтения, а первичная и все вторичные реплики только для чтения настраиваются для поддержки маршрутизации только для чтения.
Строка подключения ссылается на базу данных, относящуюся к группе доступности. Альтернативой является наличие базы данных, настроенной как базы данных по умолчанию, для имени входа, используемого при подключении. Дополнительные сведения см. в этой статье о работе алгоритма с маршрутизацией только для чтения.
В строке подключения указывается прослушиватель группы доступности, а цель приложения для входящего соединения задается как доступ только для чтения (например, с помощью ключевого слова Application Intent=ReadOnly в строках подключения ODBC или OLEDB, либо в атрибутах или свойствах соединения).
Атрибут намерения приложения хранится в сеансе клиента во время входа. Экземпляр SQL Server обрабатывает намерение и определяет, что делать в соответствии с конфигурацией группы доступности и текущим состоянием записи целевой базы данных в вторичной реплике.
Например, чтобы подключиться к реплике только для чтения с помощью SQL Server Management Studio, выберите параметры в диалоговом окне "Подключение к серверу ", перейдите на вкладку "Дополнительные параметры подключения ", а затем укажите ApplicationIntent=ReadOnly в текстовом поле:
Пример строки подключения для поставщика ADO.NET (Microsoft.Data.SqlClient или System.Data.SqlClient), который указывает на намерение работы приложения в режиме только чтение.
Server=tcp:AGListener;Database=AdventureWorks;Integrated Security=SSPI;ApplicationIntent=ReadOnly
Дополнительные сведения см. в разделе Настройка доступа только для чтения в реплике доступности (SQL Server).
Недефаултный порт
При создании прослушивателя необходимо назначить порт, который будет использоваться прослушивателем. Если порт является портом по умолчанию 1433, то при подключении к прослушивателю не нужно указывать номер порта. Однако, если порт не имеет значения 1433, то он должен быть указан в строке подключения в таком форматеlistenername,port, как:
Пример строки подключения для поставщика ADO.NET (Microsoft.Data.SqlClient или System.Data.SqlClient) с указанием недефолтного порта прослушивателя:
Server=tcp:AGListener,1445;Database=AdventureWorks;Integrated Security=SSPI
Обход прослушивателей
Хотя прослушиватели группы доступности обеспечивают поддержку перенаправления отработки отказа и маршрутизации только для чтения, клиентские подключения не требуются для их использования. Клиентское подключение может обращаться непосредственно к экземпляру SQL Server вместо подключения к слушателю группы доступности.
Для экземпляра SQL Server не имеет значения, используется ли подключение через прослушиватель группы доступности или через другую конечную точку этого же экземпляра. Экземпляр SQL Server проверяет состояние целевой базы данных и разрешает или запрещает подключение на основе конфигурации группы доступности и текущего состояния базы данных на экземпляре. Например, если клиентское приложение подключается непосредственно к экземпляру порта SQL Server и подключается к целевой базе данных, размещенной в группе доступности, и целевая база данных находится в основном состоянии и в сети, то подключение завершается успешно. Если целевая база данных находится в автономном режиме или находится в переходном состоянии, подключение к базе данных завершается сбоем.
Кроме того, при миграции из зеркального отображения базы данных в группы доступности Always On приложения могут указывать строку подключения зеркального отображения базы данных до тех пор, пока существует только одна вторичная реплика, и она запрещает подключения пользователей.
Строки подключения для зеркалирования базы данных
Если в группе высокой доступности имеется только одна вторичная реплика и она настроена с параметрами ALLOW_CONNECTIONS = READ_ONLY или ALLOW_CONNECTIONS = NONE для этой вторичной реплики, клиенты могут подключаться к первичной реплике, используя строку подключения к зеркально отражаемой базе данных. Такой подход можно использовать при переносе существующего приложения с зеркально отображаемой базы данных в группу доступности при условии ограничения группы доступности до двух реплик доступности (одной первичной и одной вторичной). При добавлении дополнительных вторичных реплик необходимо создать прослушиватель группы доступности для группы доступности и обновить приложения для использования DNS-имени прослушивателя группы доступности.
При использовании строки подключения зеркалирования базы данных клиент может использовать либо SQL Server Native Client, либо поставщик данных .NET Framework для SQL Server. В строке подключения, предоставленной клиентом, должно быть как минимум указано имя экземпляра сервера, имя изначального участника, для определения экземпляра сервера, на котором первоначально размещалась реплика доступности, к которой необходимо подключиться. При необходимости строка подключения может также содержать имя другого экземпляра сервера, имя партнера по отказоустойчивости, для обозначения экземпляра сервера, который изначально размещает вторичную реплику в качестве имени партнера по отказоустойчивости.
Дополнительные сведения о строках подключения зеркального отображения баз данных см. в разделе Подключение клиентов к сеансу зеркального отображения базы данных (SQL Server).
Отказоустойчивость на нескольких подсетях
Если вы используете клиентские библиотеки, поддерживающие параметр подключения MultiSubnetFailover в строке подключения, вы можете оптимизировать переключение группы доступности на другую подсеть, установив для MultiSubnetFailover значение True или "Да" в зависимости от синтаксиса вашего поставщика.
Примечание.
Этим параметром рекомендуется пользоваться для соединения с прослушивателем группы доступности как с одной, так и с несколькими подсетями, а также для имени экземпляра отказоустойчивого кластера SQL Server. При использовании этого параметра задействуется дополнительная оптимизация, даже при работе с одной подсетью.
Параметр подключения MultiSubnetFailover работает только с протоколом TCP и поддерживается только при подключении к прослушивателю группы доступности и любому имени виртуальной сети, подключаемому к SQL Server.
Пример строки подключения поставщика ADO.NET (Microsoft.Data.SqlClient или System.Data.SqlClient) с возможностью отработки отказа в нескольких подсетях выглядит следующим образом:
Server=tcp:AGListener,1433;Database=AdventureWorks;Integrated Security=SSPI; MultiSubnetFailover=True
Параметру подключения MultiSubnetFailover следует задать значение True , даже если группа доступности размещена только в одной подсети. Этот параметр позволяет предварительно настроить новых клиентов для поддержки будущего разделения подсетей без необходимости дальнейших изменений в строке подключения клиентов, а также оптимизирует производительность переключения на резерв для аварийного восстановления в рамках одной подсети. Хотя параметр подключения MultiSubnetFailover не является обязательным, он обеспечивает более быструю отработку отказа подсети. Драйвер клиента пытается параллельно открыть TCP-сокет для каждого IP-адреса, который связан с группой доступности. Драйвер клиента ожидает, пока первый IP-адрес будет отвечать успешно, и после этого использует его для подключения.
Прослушиватели и SSL-сертификаты
При подключении к прослушивателю группы доступности, если участвующие экземпляры SQL Server используют TLS/SSL-сертификаты в сочетании с шифрованием сеансов, драйвер подключающегося клиента должен поддерживать альтернативное имя субъекта в TLS/SSL-сертификате для принудительного шифрования.
Для каждого узла сервера-участника в отказоустойчивом кластере необходимо настроить сертификат X.509, задав список всех прослушивателей групп доступности, указанных в альтернативном имени объекта (Subject Alternate Name) сертификата.
Формат значений сертификата:
CN = Server.FQDN
SAN = Server.FQDN,Listener1.FQDN,Listener2.FQDN
Например, у вас есть следующие значения:
Servername: Win2019
Instance: SQL2019
AG: AG2019
Listener: Listener2019
Domain: contoso.com (which is also the FQDN)
Для WSFC с одной группой доступности сертификат должен иметь полное доменное имя (FQDN) сервера и FQDN прослушивателя:
CN: Win2019.contoso.com
SAN: Win2019.contoso.com, Listener2019.contoso.com
С помощью этой конфигурации подключение шифруется при подключении к экземпляру (WIN2019\SQL2019) или прослушивателю (Listener2019).
В зависимости от настройки сети существует небольшое подмножество клиентов, которые могут также добавить NetBIOS в SAN. В этом случае значения сертификата должны быть:
CN: Win2019.contoso.com
SAN: Win2019,Win2019.contoso.com,Listener2019,Listener2019.contoso.com
Если WSFC имеет три прослушивателя группы доступности, например Прослушиватель1, Прослушиватель2, Прослушиватель3
Значения сертификата должны быть:
CN: Win2019.contoso.com
SAN: Win2019.contoso.com,Listener1.contoso.com,Listener2.contoso.com,Listener3.contoso.com
Прослушиватели и Kerberos (SPN)
Администратор домена должен настроить имя субъекта-службы (SPN) в Active Directory для каждого прослушивателя группы доступности, чтобы включить протокол Kerberos для клиентских подключений к прослушивателю. При регистрации SPN необходимо использовать учетную запись службы экземпляра сервера, на котором размещена резервная реплика. Для обеспечения работы SPN во всех репликах необходимо использовать одну учетную запись службы для всех экземпляров из кластера WSFC, на которых размещается группа доступности.
Для задания SPN используйте программу командной строки Windows setspn . Пример настройки SPN для прослушивателя группы доступности, названного AG1listener.Adventure-Works.com, размещенного на нескольких экземплярах SQL Server, которые работают под учетной записью домена corp\svclogin2:
setspn -A MSSQLSvc/AG1listener.Adventure-Works.com:1433 corp\svclogin2
Дополнительные сведения о ручной регистрации имени службы (SPN) для SQL Server см. в разделе "Регистрация имени службы для подключений Kerberos".