티스토리 뷰
SQL Server 2014 이하에서는 Read-Only Routing(읽기 전용 라우팅) 을 지원하고 있으며, 이 기능은 첫번째 설정한 보조복제본으로만 접근이 계속되는 문제가 있었다.
첫번째 설정한 보조복제본에 장애가 발생할 경우에만 두번째 설정한 보조복제본으로 접근이 가능하다.
이 기능을 개선한 SQL Server 2016에서는 Load Balanced Read-Only Routing으로 개선하였다.
일단, 해보자. (나의 이상이다)
#. SQL Server 2016 Load Balanced Read-Only Routing(로드밸런싱 읽기전용 라우팅 ??) 설정하기
[환경설정]
2개의 가용성데이터베이스를 추가하여 그룹을 생성한다.
리스너를 생성해야 된다.
리스터 접속테스트
쿼리로만 구성이 가능하다.
USE MASTER
GO
-- 보조 복제본 Read-Only 설정
ALTER AVAILABILITY GROUP [AG-GroupNameTSQL]
MODIFY REPLICA ON N'AG2016-S1\AG1' WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = READ_ONLY))
GO
ALTER AVAILABILITY GROUP [AG-GroupNameTSQL]
MODIFY REPLICA ON N'AG2016-S2\AG2' WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = READ_ONLY))
GO
ALTER AVAILABILITY GROUP [AG-GroupNameTSQL]
MODIFY REPLICA ON N'AG2016-S3\AG3' WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = READ_ONLY))
GO
ALTER AVAILABILITY GROUP [AG-GroupNameTSQL]
MODIFY REPLICA ON N'AG2016-S4\AG4' WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = READ_ONLY))
GO
-- 라우팅 URL 생성
ALTER AVAILABILITY GROUP [AG-GroupNameTSQL] MODIFY REPLICA ON N'AG2016-S1\AG1'
WITH (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://AG2016-S1.overtop.local:1433'));
GO
ALTER AVAILABILITY GROUP [AG-GroupNameTSQL] MODIFY REPLICA ON N'AG2016-S2\AG2'
WITH (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://AG2016-S2.overtop.local:1433'));
GO
ALTER AVAILABILITY GROUP [AG-GroupNameTSQL] MODIFY REPLICA ON N'AG2016-S3\AG3'
WITH (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://AG2016-S3.overtop.local:1433'));
GO
ALTER AVAILABILITY GROUP [AG-GroupNameTSQL] MODIFY REPLICA ON N'AG2016-S4\AG4'
WITH (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://AG2016-S4.overtop.local:1433'));
GO
-- 라우팅 구성
-- 보조 복제본 2,3,4를 모두 LB 구성, 3개 모두 복제복이 비정상일겨웅에는 1번으로 연결한다는 정의
ALTER AVAILABILITY GROUP [AG-GroupNameTSQL]
MODIFY REPLICA ON N'AG2016-S1\AG1'
WITH (PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=(('AG2016-S4\AG4','AG2016-S3\AG3', 'AG2016-S2\AG2'), 'AG2016-S1\AG1')));
ALTER AVAILABILITY GROUP [AG-GroupNameTSQL]
MODIFY REPLICA ON N'AG2016-S2\AG2'
WITH (PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=(('AG2016-S4\AG4','AG2016-S3\AG3', 'AG2016-S1\AG1'), 'AG2016-S2\AG2')));
ALTER AVAILABILITY GROUP [AG-GroupNameTSQL]
MODIFY REPLICA ON N'AG2016-S3\AG3'
WITH (PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=(('AG2016-S4\AG4','AG2016-S2\AG2', 'AG2016-S1\AG1'), 'AG2016-S3\AG3')));
ALTER AVAILABILITY GROUP [AG-GroupNameTSQL]
MODIFY REPLICA ON N'AG2016-S4\AG4'
WITH (PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=(('AG2016-S3\AG3','AG2016-S2\AG2', 'AG2016-S1\AG1'), 'AG2016-S4\AG4')));
-- 구성완료.
-- 라우팅 제거할때는 아래와 같이 해주면 끝.
ALTER AVAILABILITY GROUP [AG-GroupNameTSQL]
MODIFY REPLICA ON N'AG2016-S4\AG4'
WITH (PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=NONE));
#. 로드밸런싱 라우팅 테스트
sqlcmd -S AGLBLsn.overtop.local,1433 -E -K ReadOnly -d AGDefault01 -Q "select @@servername"
AG3 보조복제본의 SQL 중지를 하고 테스트를 해보자. 2번과 4번으로 로드밸런싱이 되는 것을 확인 할 수 있다.
구성이 잘 된다.
그럼 기존의 방식으로도 가능할까?
테스트 결과 기존방식으로도 구성이 가능하다.
다음 포스팅은 다양한 LB 구성정책을 할 예정이다.
끝.
'SQL AlwaysON AG' 카테고리의 다른 글
SQL Server 2016 가용성 그룹-분산된 가용성그룹편 (0) | 2016.11.09 |
---|---|
SQL Server 2016 가용성 그룹- 로드밸런싱 읽기 전용 라우팅 다양하게 구성하는 방법 (0) | 2016.10.27 |
SQL Server 2016 가용성 그룹-자동장애조치 설정시 주의사항 (0) | 2016.10.26 |
SQL Server 2016 가용성 그룹-자동장애조치 노드수 (0) | 2016.10.26 |
SQL Server 2016 가용성 그룹- 복제본 추가 (0) | 2016.10.26 |
- Total
- Today
- Yesterday