Использование балансировщика нагрузки перед SQL Server
Мы настраиваем SQL Server 2014 AG с несколькими вторичными только для чтения экземплярами, поскольку у нас есть несколько важных запросов, которые убивают наших первичных. То, что мы хотели бы сделать, это поставить балансировщик нагрузки перед читателями, чтобы помочь масштабировать.
Веб-приложение.NET/IIS. Есть ли какие-либо настройки, которые SqlConnection
, SQL Server или LB понадобятся, такие как липкие сеансы или настройки пула подключений)? Или какие-то другие сюрпризы, с которыми мы можем столкнуться?
1 ответ
Вам нужно убедиться, что слушатель правильно настроен. Где экземпляр будет в строке подключения, вы будете использовать имя слушателя. Таким образом, вам не нужно знать, кто является первичным или вторичным. Во-вторых, в качестве части строки подключения вам необходимо добавить "applicationintent = readonly". Это говорит слушателю, как направить запрос на соединение, когда весь запрос выполняет запрос.
Кроме того, есть некоторая маршрутизация, о которой вам нужно знать. Следующая ссылка проведет вас по ней, но в основном вам нужно настроить каждый сервер в AG, а затем настроить маршрутизацию для каждого.
ALTER AVAILABILITY GROUP [AG1]
MODIFY REPLICA ON
N'COMPUTER01' WITH
(SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY));
ALTER AVAILABILITY GROUP [AG1]
MODIFY REPLICA ON
N'COMPUTER01' WITH
(SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER01.contoso.com:1433'));
ALTER AVAILABILITY GROUP [AG1]
MODIFY REPLICA ON
N'COMPUTER02' WITH
(SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY));
ALTER AVAILABILITY GROUP [AG1]
MODIFY REPLICA ON
N'COMPUTER02' WITH
(SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER02.contoso.com:1433'));
ALTER AVAILABILITY GROUP [AG1]
MODIFY REPLICA ON
N'COMPUTER01' WITH
(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('COMPUTER02','COMPUTER01')));
ALTER AVAILABILITY GROUP [AG1]
MODIFY REPLICA ON
N'COMPUTER02' WITH
(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('COMPUTER01','COMPUTER02')));
GO
Изменить и добавить по мере необходимости