Failover Policy for Failover Cluster Instances
적용 대상: SQL Server
SQL Server 장애 조치(failover) 클러스터 인스턴스(FCI)에서는 한 번에 하나의 노드에서만 WSFC(Windows Server Failover Cluster) 클러스터 리소스 그룹을 소유할 수 있습니다. 클라이언트 요청은 FCI에서 이 노드를 통해 제공됩니다. 실패하고 다시 시작에 실패한 경우 그룹 소유권은 FCI의 다른 WSFC 노드로 이동됩니다. 이 프로세스를 장애 조치(Failover)라고 합니다. SQL Server는 오류 검색의 안정성이 향상되었고 유연한 장애 조치(failover) 정책을 제공합니다.
SQL Server FCI는 장애 조치(failover) 검색을 위해 기본 WSFC 서비스에 따라 달라집니다. 따라서 두 가지 메커니즘이 FCI의 장애 조치(failover) 동작을 결정합니다. 전자는 기본 WSFC 기능이고 후자는 SQL Server 설치 프로그램에 의해 추가되는 기능입니다.
WSFC 클러스터는 자동 장애 조치(failover)에서 고유한 장애 조치(failover) 대상을 보장하는 쿼럼 구성을 유지 관리합니다. WSFC 서비스는 클러스터가 항상 최적의 쿼럼 상태인지 여부를 확인하고 그에 따라 리소스 그룹을 온라인 및 오프라인으로 전환합니다.
활성 SQL Server 인스턴스는 전용 연결을 통해 WSFC 리소스 그룹에 구성 요소 진단 집합을 주기적으로 보고합니다. WSFC 리소스 그룹은 다시 시작 및 장애 조치(failover)를 트리거하는 오류 상태를 정의한 장애 조치(failover) 정책을 유지 관리합니다.
이 항목에서는 위의 두 번째 메커니즘에 대해 설명합니다. 쿼럼 구성 및 상태 감지에 대한 WSFC 동작의 자세한 내용은 WSFC 쿼럼 모드 및 투표 구성(SQL Server)을 참조하세요.
중요
FCI로 또는 FCI로부터의 자동 장애 조치(failover)는 Always On 가용성 그룹에서 허용되지 않습니다. 그러나 FCI로 또는 FCI로부터의 수동 장애 조치(failover)는 Always On 가용성 그룹에서 허용됩니다.
장애 조치(failover) 정책 개요
장애 조치(failover) 프로세스는 다음 단계로 세분화할 수 있습니다.
상태 모니터링
FCI에 대해 모니터링되는 세 가지 유형의 상태가 있습니다.
SQL Server 서비스의 상태
WSFC 서비스는 활성 FCI 노드에서 SQL Server 서비스의 시작 상태를 모니터링하여 SQL Server 서비스가 중지된 시기를 감지합니다.
SQL Server 인스턴스의 응답
SQL Server를 시작하는 동안 WSFC 서비스는 SQL Server 데이터베이스 엔진 리소스 DLL을 사용하여 상태를 모니터링하는 데만 사용되는 별도의 스레드에 대한 새 연결을 만듭니다. 이렇게 하면 SQL 인스턴스에 부하가 걸린 동안 상태를 보고하는 데 필요한 리소스가 있는지 확인됩니다. 이 전용 연결을 통해 SQL Server는 sp_server_diagnostics(Transact-SQL) 시스템 저장 프로시저를 반복적으로 실행하여 리소스 DLL에 대한 SQL Server 구성 요소의 상태를 주기적으로 보고합니다.
리소스 DLL은 상태 확인 제한 시간을 사용하여 SQL 인스턴스의 응답을 확인합니다. HealthCheckTimeout 속성은 리소스 DLL이 SQL 인스턴스가 WSFC Server 서비스에 응답하지 않는 것으로 보고하기 전에 sp_server_diagnostics 저장 프로시저를 대기해야 하는 시간을 정의합니다. 이 속성은 장애 조치(failover) 클러스터 관리자 스냅인뿐만 아니라 T-SQL을 사용하여 구성할 수 있습니다. 자세한 내용은 Configure HealthCheckTimeout Property Settings을 참조하세요. 다음 항목에서는 이 속성이 시간 제한 및 반복 간격 설정에 미치는 영향을 설명합니다.
리소스 DLL은 sp_server_diagnostics 저장 프로시저를 호출하고 반복 간격을 HealthCheckTimeout 설정의 3분의 1로 설정합니다.
sp_server_diagnostics 저장 프로시저가 느리거나 정보를 반환하지 않는 경우 리소스 DLL은 SQL 인스턴스가 응답하지 않는 것으로 WSFC 서비스에 보고하기 전에 HealthCheckTimeout에서 지정된 간격 동안 대기합니다.
전용 연결이 끊어지면 리소스 DLL은 SQL 인스턴스가 응답하지 않는다는 것을 WSFC 서비스에 보고하기 전에 HealthCheckTimeout에서 지정한 간격에 대해 SQL 인스턴스에 대한 연결을 다시 시도합니다.
SQL Server 구성 요소 진단
시스템 저장 프로시저 sp_server_diagnostics는 SQL 인스턴스의 구성 요소 진단을 주기적으로 수집합니다. 수집되는 진단 정보는 다음 구성 요소 각각에 대한 행으로 표시되고 호출 스레드에 전달됩니다.
시스템
resource
query process
io_subsystem
events
시스템, 리소스 및 쿼리 프로세스 구성 요소는 오류 감지에 사용됩니다. io_subsytem 및 이벤트 구성 요소는 진단 목적으로만 사용됩니다.
정보의 각 행 집합은 SQL Server 클러스터 진단 로그에도 기록됩니다. 자세한 내용은 장애 조치(failover) 클러스터 인스턴스 진단 로그 보기 및 읽기를 참조하세요.
팁
sp_server_diagnostic 저장 프로시저는 SQL Server Always On 기술에서 사용되지만 모든 SQL Server 인스턴스에서 문제를 감지하고 해결하는 데 사용할 수 있습니다.
실패 확정
SQL Server 데이터베이스 엔진 리소스 DLL은 검색된 상태가FailureConditionLevel 속성을 사용하는 실패 조건인지 여부를 결정합니다. FailureConditionLevel 속성은 감지된 상태로 인해 다시 시작 또는 장애 조치(failover)가 발생하는 것을 정의합니다. 자동 다시 시작 또는 장애 조치(failover) 사용 안 함에서부터 자동 다시 시작 또는 장애 조치(failover)를 초래하는 모든 오류 상태에 이르기까지 다양한 수준의 옵션을 사용할 수 있습니다. 이 속성을 구성하는 방법에 대한 자세한 내용은 FailureConditionLevel 속성 설정 구성을 참조하세요.
실패 조건은 증가하는 범위로 설정됩니다. 수준 1-5의 경우 각 수준에는 자체 조건 외에도 이전 수준의 모든 조건이 포함됩니다. 즉 각 수준에서 장애 조치(failover) 또는 다시 시작할 확률이 높아집니다. 다음 표에서는 실패 조건 수준에 대해 설명합니다.
이 시스템 저장 프로시저는 오류 상태 수준에서 중요한 역할을 하므로 sp_server_diagnostics(Transact-SQL)를 검토하세요.
수준 | 조건 | 설명 |
---|---|---|
0 | 자동 장애 조치(failover) 또는 다시 시작 없음 | 장애 조치(failover) 또는 다시 시작이 오류 조건에서 자동으로 트리거되지 않음을 나타냅니다. 이 수준은 시스템 유지 관리 용도로만 사용됩니다. |
1 | 서버가 다운된 경우 장애 조치(failover) 또는 다시 시작 | 다음 조건이 발생하는 경우 서버 다시 시작 또는 장애 조치(failover)가 트리거됨을 나타냅니다. SQL Server 서비스가 다운된 경우 |
2 | 응답하지 않는 서버에서 장애 조치(failover) 또는 다시 시작 | 다음 조건이 발생하는 경우 서버 다시 시작 또는 장애 조치(failover)가 트리거됨을 나타냅니다. SQL Server 서비스가 다운된 경우 SQL Server 인스턴스가 응답하지 않습니다(Resource DLL은 HealthCheckTimeout 설정 내에서 sp_server_diagnostics의 데이터를 받을 수 없음). |
3* | 심각한 서버 오류 시 장애 조치(Failover) 또는 다시 시작 | 다음 조건이 발생하는 경우 서버 다시 시작 또는 장애 조치(failover)가 트리거됨을 나타냅니다. SQL Server 서비스가 다운된 경우 SQL Server 인스턴스가 응답하지 않습니다(Resource DLL은 HealthCheckTimeout 설정 내에서 sp_server_diagnostics의 데이터를 받을 수 없음). 시스템 저장 프로시저 sp_server_diagnostics가 '시스템 오류'를 반환할 경우 |
4 | 일반적인 서버 오류 시 장애 조치(Failover) 또는 다시 시작 | 다음 조건이 발생하는 경우 서버 다시 시작 또는 장애 조치(failover)가 트리거됨을 나타냅니다. SQL Server 서비스가 다운된 경우 SQL Server 인스턴스가 응답하지 않습니다(Resource DLL은 HealthCheckTimeout 설정 내에서 sp_server_diagnostics의 데이터를 받을 수 없음). 시스템 저장 프로시저 sp_server_diagnostics가 '시스템 오류'를 반환할 경우 시스템 저장 프로시저 sp_server_diagnostics가 '리소스 오류'를 반환할 경우 |
5 | 정규화된 오류 조건에서 장애 조치(failover) 또는 다시 시작 | 다음 조건이 발생하는 경우 서버 다시 시작 또는 장애 조치(failover)가 트리거됨을 나타냅니다. SQL Server 서비스가 다운된 경우 SQL Server 인스턴스가 응답하지 않습니다(Resource DLL은 HealthCheckTimeout 설정 내에서 sp_server_diagnostics의 데이터를 받을 수 없음). 시스템 저장 프로시저 sp_server_diagnostics가 '시스템 오류'를 반환할 경우 시스템 저장 프로시저 sp_server_diagnostics가 '리소스 오류'를 반환할 경우 시스템 저장 프로시저 sp_server_diagnostics가 'query_processing 오류'를 반환할 경우 |
*기본값
실패에 대한 응답
하나 이상의 오류 상태가 감지된 경우 WSFC 서비스의 오류 대응 방법은 FCI 리소스 그룹의 다시 시작 및 장애 조치(failover) 설정과 WSFC 쿼럼 상태에 따라 다릅니다. FCI가 WSFC 쿼럼을 상실한 경우 전체 FCI가 오프라인 상태가 되고 FCI의 고가용성이 상실됩니다. 이 FCI가 계속 WSFC 쿼럼을 유지하면 WSFC 서비스는 실패한 노드의 다시 시작을 처음 시도하여 대응하고 다시 시작 시도가 실패할 경우 장애 조치(failover)할 수도 있습니다. 다시 시작 및 장애 조치(failover) 설정은 장애 조치(failover) 클러스터 관리자 스냅인에서 구성됩니다. 이러한 설정에 대한 자세한 내용은 <리소스> 속성: 정책 탭을 참조하세요.
쿼럼 상태의 유지 관리에 대한 자세한 내용은 WSFC 쿼럼 모드 및 투표 구성(SQL Server)을 참조하세요.