새소식

반응형
Database/MSSQL Server

SQL Server(MSSQL) Clustering Test

  • -
반응형

클러스터링 테스트를 진행 할때 몇가지 테스트를 시나리오를 토대로 테스트를 진행하였는데, 생각처럼 되지 않아서 난항을 겪었습니다.

그래서 이번에 테스트를 진행하면서 많은 어려움을 정리하고 공유하고자 이번 포스트를 작성합니다. 이 문서에 클러스터링 구성방법은 없으며, 옵션설정만 있음을 

참고 바랍니다.


우리가 하고자 하였던 것 

http://blogs.technet.com/b/vipulshah/archive/2009/06/17/failover-cluster-testing-methods.aspx 

위의 내용에서 나오는 SQL 부분에 관하여, 테스트 하고자 하였습니다. 이곳에 우리는 "SQL Server Service 의 정지 시 정상적으로 넘어가는 가? "를 보고 싶었습니다.


1.2.1 SQL Server Services

Purpose: The purpose of simulating service failures is to ensure that failover will occur and to monitor the activity that occurs during failover. We will be looking for the time required for failover, proper failover and ensuring dependencies are being brought online properly.

Procedure: The best approach to testing a clustered service is to stop this service from the Services snap-in within the Management MMC. A service that has become a clustered resource can only be managed through the cluster administrator. Performing services operations through the Services snap-in will appear to the cluster as a failure and therefore will simulate a service failing. Following are the services we will attempt to fail.

  • SQL Server service
  • SQL Server Agent service
  • MS DTC service


하지만 SQL Server Service를 정지시켜도 SQL 은 정상으로 올라오지 않았습니다. 

그래서 이 부분에 관하여, 설정 하는 방법과 어떻게 테스틑 해야 하는지를 정리하였습니다. 


Step 1 - 클러스터링 관리자 옵션 세팅

- 역할 부분에서 옵션을 세팅 하는 부분 입니다. 

① 장애 조치(Failover) 클러스터 관리자를 실행하고, 장애조치 클러스터 부분의 "역할"을 클릭

② SQL Server(MSSQLSERVER) 클릭하고, "리소스 탭"을 클릭

③ 서버이름 부분에 이름(서버명) 부분을 우클릭

④ 우클릭 한 곳에서 속성 클릭 







Step 2 - 옵션 설정

- 속성 부분에서 아래 처럼 변경 시켜 줍니다.

① 다시 시작 기간(mm:ss)(P) : 이것은 다시 시작의 기간을 의미 합니다.

- Default 값은 15분이며, 테스트를 위해 이것을 초단위로 변경 해야 합니다. 

- 초 단위로 변경하고 테스트 할 경우 : SQL Server가 현재서버(Active)에서 자동으로 잘 다시 시작하는지 보기 위함 입니다.

- 분 단위로 변경하고 테스트 할 경우 : SQL Server를 죽이고 난 뒤  지정한 시간 내의 지정한 횟수를 초과하여, 계속 정지할 경우 Standby로 넘어가는지 보기 위함 입니다.

- 이 값의 의미는 장애가 날 경우 15분 이내에 1번 SQL Server를 다시 시작시키고, 다시 한번(15분 이내) 장애가 발생하면, Standby 서버로 넘긴다는 의미입니다.


② 지정된 기간 내의 최대 다시 시작 횟수(X): 이것은 지정된 시간(1번 항목) 안에 다시 시작하는 횟수를 의미합니다. 

- Default 값은 1회 이며, 1번 항목의 시간 내에 2번 항목의 횟수를 초과하면 Active 에서 Standby로 넘어가려 시도합니다.


③ 다시 시작 전 지연시간(ss.f)(D): 다시 시작을 위한 지연시간을 의미합니다.

- Default 값은 0.5 입니다. 

- 테스트시에 큰 의미는 없다고 생각됩니다.


④ 다시 시작에 실패하는 경우 이 역할의 모든 리소스를 장애 조치합니다(U).

- 이 체크옵션의 의미는 SQL Server를 1번 항목의 정해진 시간내에 2번 항목의 정해진 횟수로 재시작을 만약 실패 할 경우 Standby 서버로 Failover 한다는 의미입니다.


⑤ 모든 다시 시작 시도가 실패한 경우 지정된 시간(hh:mm)동안 기다린 후 다시 시작합니다(S).

- 이 체크옵션의 의미는 만약 모든 조치가(4번) 실패 할 경우 지정한 시간내에 SQL Server Service 다시시작 함을 의미 합니다. (현재 노드에서)



옵션관련 참조 : https://technet.microsoft.com/library/113b5967-f7a4-4038-b583-a9c343dbffd7


Step 3 - SQL Server(MSSQLSERVER) 속성 설정

① 장애 조치(Failover) 클러스터 관리자를 실행하고, 장애조치 클러스터 부분의 "역할"을 클릭

② SQL Server(MSSQLSERVER) 우클릭

③ 속성 클릭



Step 4 - SQL Server(MSSQLSERVER) 속성 변경

지정된 기간 내 최대 실패 수(M) 

- 현재 테스트를 하는 것이므로, 계속해서 실패해도 다시 시작되도록 설정을 변경해야 합니다. 

- 현재 100으로 설정되어 있으며, Default 값은 6 입니다. 


② 기간(시간)(P)

- 해당 시간 동안의 실패 할 경우 다시 시작 기간을 의미합니다. 이 기간동안 1번의 항목의 횟수만큼 다시 시작을 시도하여, 초과시 실패로 간주하고 

  다시 시작 시도를 하지 않습니다.




Step 5 - SQL Server Service 죽이기


우리는 이부분에 가장 많이 삽질(?)을 했습니다. 당연히 SQL Server 구성 관리자에서 SQL Server를 중지시키면 자동으로 failover 되는것으로 생각했으나...

이것은 잘못된 생각이였습니다. 


아래와 같은 방법으로 죽이는 것(?)은 정상적으로 종료시키는 방법으로써 클러스터링 관리자는 이것을 감시하지 않습니다.

그래서 아무리 중지 시켜도 자동 failover를 시도하지 않습니다.


다음과 같은 방법을 통해서 SQL Server Service를 중지시킵니다.

작업 관리자에서 프로세스를 아에 강제종료시켜야지 클러스터링 관리자는 이것이 예기치 못한 종료로 판단하여, 장애로 인식합니다.

이 부분에서 대략 1시간은 삽질 한 듯 합니다...


감사합니다.


도움주신 분들 모두 감사드립니다. 


반응형

'Database > MSSQL Server' 카테고리의 다른 글

특정 IP로 실행한 쿼리 추적  (0) 2016.01.19
데이터 손실 시 복구  (0) 2016.01.18
조인 조건자 없음  (0) 2016.01.06
가상 인덱스 (Hypothetical Indexes)  (0) 2015.12.30
SQL Server Clustering 설치 시 NetFx3 오류  (0) 2015.12.29
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.