Database/MSSQL Server

SSL 인증서 문제로 인한 SQL Server 시작 불가능

데이터엔지니어 주형권 2015. 11. 27. 11:40
반응형

클러스터링으로 묶여있는 서버에서 Active 장비에서 Standby 장비로 넘기고 서버를 재부팅 하려는 과정에서 클러스터링이 넘어가지 않고, SQL Serve가 시작되지 않는 

상황이 발생하여, 지인 분의 도움으로 해결하였습니다. 결론적으로 SSL 인증서 문제였으며, 인증서를 삭제함으로써 문제를 해결하였습니다. 해당 포스트는 그 과정을 

상세히 설명하였습니다.



1. 장비 구성 및 버전 

- 장비는 클러스터링으로 묶여 있으며, 두 서버 모두 SQL Server 2012 STD를 사용하고 있습니다. 




2. 장애 당시 상황


㉠ Node 1 장비(Active)의 Windows Update를 모두 하고 재부팅을 하고자 함

㉡ Node 1 장비를 Standby 상태로 만들고, Node 2를 Active 로 만들어서 순차적으로 Update 후에 재부팅 하고자 함

㉢ Node 2 장비에서 '장애 조치(Failover)클러스터 관리자'를 통해 Node를 이동하려 하였음

㉣ Node 2 를 Active 상태로 만들려 하였으나, Disk 쪽은 넘어가지만 SQL Server 시작이 되지 않음 

㉤ Node 1 <-> Node 2 사이에서 서로 계속 핑퐁을 치는 상황

㉥ Node 1 를 Active로 만들려 하였으나 역시 SQL Server가 올라오지 않음 강제로 '구성 관리자'에서 시작 하려하였으나 올라오지 않음



3. 해결 과정 


㉠ Windows Evnet 로그 확인

- Windows Event에서 '응용 프로그램' 탭에서 발생한 로그 입니다.

원본 : MSSQLSERVER 

이벤트 ID : 17120

내용 : SQL Server에서 FRunCommunicationsManager 스레드를 생성할 수 없습니다. SQL Server 오류 로그 및 Windows 이벤트 로그에서 가능한 관련 문제에 

대한 내용을 확인하십시오.


원본 : MSSQLSERVER

이벤트 ID : 17826

내용 : 네트워크 라이브러리에 내부 오류가 있으므로 네트워크 라이브러리를 시작할 수 없습니다. 원인을 파악하려면 오류 로그에서 이 오류 바로 앞에 나오는 

오류를 검토하십시오.


원본 : MSSQLSERVER

이벤트 ID : 17182

내용 : 오류 0xd, 상태 코드 0x1(으)로 인해 TDSSNIClient 초기화에 실패했습니다. 원인: Initialization failed with an infrastructure error. Check for previous errors. 

The data is invalid. 


- Windows Event 로그에서 '시스템' 탭에서 발생 한 로그 입니다.

원본 : FailoverClustering

이벤트 ID : 1069

내용 : 클러스터된 'SQL Server (MSSQLSERVER)' 역할에서 'SQL Server' 유형의 클러스터 리소스 'SQL Server'이(가) 실패했습니다.

리소스 및 역할에 대한 오류 정책을 기반으로 클러스터 서비스에서 이 노드의 리소스를 온라인으로 전환하거나 그룹을 클러스터의 다른 노드로 이동한 다음 다시 

시작할 수 있습니다. 장애 조치(Failover) 클러스터 관리자 또는 Get-ClusterResource Windows PowerShell cmdlet을 사용하여 리소스 및 그룹 상태를 확인하십시오.


원본 : Service Control Manager

이벤트 ID : 7024

내용 : SQL Server (MSSQLSERVER) 서비스가 서비스 특정 오류 데이터가 올바르지 않습니다. 때문에 종료되었습니다.



㉡ 로그 확인 중 '이벤트 ID : 17182'  확인 

원인: An error occurred while obtaining or using the certificate for SSL. Check settings in Configuration Manager. The data is invalid. 

- 서버가 올라오지 않는 원인은 인증서가 문제되어 올라오지 않고 있었습니다. 하여, 인증서를 제거하여, SQL Server를 올리기로 하였습니다.

- 차후에 알았지만 얼마전에 SQL Server 보안 관련하여, 업체에서 인증서를 세팅 하였다고 합니다. 하여, 우선 인증서를 제거하고 업체에서 인증서를 확인 하기로

  하고, 우선적으로 인증서를 제거하였습니다. 


㉢ 인증서 삭제 (이 과정은 1,2번 Node 2개 모두 해줍니다.)

- 윈도우 레지스트 편집기를 엽니다.


- 다음의 경로로 이동하여, 인증서를 삭제합니다. 

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.x\MSSQLServer\SuperSocketNetLib\Certificate

- MSSQL.X는 버전마다 이름이 다릅니다.

- 삭제 하기 전에 인증서 내보내기를 통해서 인증서를 백업 한 뒤 작업을 진행하였습니다.

- 인증서가 현재는 지워져서 없지만 원래 '값 데이터(V):' 부분에 문자열이 존재합니다. 그 값을 제거하면 인증서가 제거 됩니다.


㉣ SQL SERVER 재 시작

- SQL Server를 재시작하고, 클러스터링이 정상적으로 넘어가는 지 테스트 하였습니다.

- 다행히 정상적으로 클러스터링이 동작하고 SQL Server도 정상적으로 올라왔습니다.



4. 사후 조치


㉠인증서를 설치 한 DB 보안관련 업체에 전화하여, 인증서를 재확인 할 수 있도록 조치를 부탁하였습니다.

㉡인증서를 설치하고 클러스터링 테스트를 하지 못하였기에 (LIVE 증이므로...) 차후에 점검 때 같은 문제가 발생하지 않도록 점검 시 테스트를 업체와 같이 진행 

하기로 하였습니다.




감사합니다. 


반응형