공부, 기록

[SQL SERVER ] HA 헬스 체크 방식 본문

공부/DATABASE

[SQL SERVER ] HA 헬스 체크 방식

무는빼주세요 2024. 5. 14. 13:01

1. WSFC 기반 솔루션 (FCI, Always On 고가용성 그룹)

 

SQL Server Always On, FCI는 모두 WSFC를 플랫폼 기술로 활용. WSFC는 쿼럼 기반 방식을 사용하여 전반적인 클러스터 상태를 모니터링하고 노드 수준의 내결함성을 극대화한다. 

WSFC 클러스터의 각 노드는 주기적 하트비트 통신에 참여하여 노드의 상태를 다른 노드와 공유합니다. 응답하지 않는 노드는 오류 상태에 있는 것으로 간주

 

https://learn.microsoft.com/ko-kr/sql/relational-databases/system-stored-procedures/sp-server-diagnostics-transact-sql?view=sql-server-ver16

 

sp_server_diagnostics(Transact-SQL) - SQL Server

sp_server_진단 SQL Server에 대한 진단 데이터 및 상태 정보를 캡처하여 잠재적인 오류를 검색합니다.

learn.microsoft.com

 

서비스 상태 모니터링

SQL Server 서비스의 시작 상태를 모니터링하여 중지된 시기를 감지.

인스턴스 응답 모니터링

sp_server_diagnotics 를 반복적으로 실행하여 리로스 DLL에 대한 SQL Server 구성 요소의 상태를 주기적으로 체크.

 

구성 요소 진단 모니터링

시스템 저장 프로시저 sp_server_diagnostics는 SQL 인스턴스의 구성 요소 진단을 주기적으로 수집.

수집되는 진단 정보는 다음 구성 요소 각각에 대한 행으로 표시되고 호출 스레드에 전달된다.

  1. 시스템
  2. resource
  3. query process
  4. io_subsystem
  5. events

실패 확정 (IS-Alive)

sp_server_diagnotics 의 값에 따라 판단한다.

각 수준은 상위 수준을 포함하며 수준이 커질 수록 민감하게 페일오버를 한다 (.

수준 조건 설명
0 자동 장애 조치(failover) 또는 다시 시작 없음 장애 조치(failover) 또는 다시 시작이 오류 조건에서 자동으로 트리거되지 않음을 나타냅니다. 이 수준은 시스템 유지 관리 용도로만 사용됩니다.
1 서버가 다운된 경우 장애 조치(failover) 또는 다시 시작 SQL Server 서비스가 다운된 경우
OnServerDown
2 응답하지 않는 서버에서 장애 조치(failover) 또는 다시 시작 SQL Server 인스턴스가 응답하지 않습니다(Resource DLL은 HealthCheckTimeout 설정 내에서 sp_server_diagnostics의 데이터를 받을 수 없음).
OnServerUnresposive
3

심각한 서버 오류 시 장애 조치(Failover) 또는 다시 시작
(default)
sp_server_diagnostics가 '시스템 오류'를 반환할 경우
OnCriticalServerError
4 일반적인 서버 오류 시 장애 조치(Failover) 또는 다시 시작 sp_server_diagnostics가 '리소스 오류'를 반환할 경우
OnModerateServerError
5 정규화된 오류 조건에서 장애 조치(failover) 또는 다시 시작 sp_server_diagnostics가 'query_processing 오류'를 반환할 경우
OnAnyQualifiedFailureConditions

설정 변경 

ALTER SERVER CONFIGURATION SET FAILOVER CLUSTER PROPERTY FailureConditionLevel = 0;

 

실패 응답

WSFC 설정에 따라 장애 대응을 한다.

 

헬스체크 타임은 기본 30초로 설정되어있으며 최소 시간은 15초이다.

설정 변경 (밀리초) 

ALTER SERVER CONFIGURATION SET FAILOVER CLUSTER PROPERTY HealthCheckTimeout = 15000;

 

전체적인 흐름도.

WSFC는 Looks-Alive와 IS-Alive로 나눌 수 있는데

Looks-Alive : 5초 마다 발생하며 지속적으로 다른 클러스터 노드에 하트비트를 전송하고 승인을 기다리며 승인을 받지 못할 경우 다운되었다고 판단한다. 그런 다음 쿼럼 투표 및 다수 구성을 기반으로 클러스터 소유권을 변경한다.

 

 

 

IS-Alive : 60초마다 리소스 DLL에서 SQL 서비스의 상태를 확인하기 위해 sp_server_diagnostics 프로시저를 사용하여 확인하는 단계. IS-Alive 에서 주 복제본이 응답하지 않는 것으로 판단되면 failover가 시작된다 (헬스체크 타임아웃은 해당 작업을 의미하며 기본 30초 최소 15초). 

 

 

 

2. MIRRORING


sp_dbmmonitor  SP를 사용한다

 

 

 

 

참조

https://learn.microsoft.com/ko-kr/sql/sql-server/failover-clusters/windows/configure-healthchecktimeout-property-settings?view=sql-server-ver16

https://learn.microsoft.com/ko-kr/sql/relational-databases/system-stored-procedures/sp-server-diagnostics-transact-sql?view=sql-server-ver16

https://learn.microsoft.com/ko-kr/sql/sql-server/failover-clusters/windows/failover-policy-for-failover-cluster-instances?view=sql-server-ver16

https://learn.microsoft.com/ko-kr/sql/database-engine/availability-groups/windows/availability-group-lease-healthcheck-timeout?view=sql-server-ver16

https://blog.naver.com/heyjieun/221007720713