SQL Server/SQL Server Tip

SQL Server Failover 클러스터 설치 트러블슈팅

SungWookKang 2015. 7. 22. 10:45
반응형

SQL Server Failover 클러스터 설치 트러블슈팅

 

  • Version : SQL Server 2005, 2008, 2008R2, 2012

 

SQL Server를 운영할 때 성능 및 안정성을 확보하기 위하여 고가용성을 구성하는 경우가 많다. 고가용성에는 클러스터링, 복제, 미러링, 로그전달, AG(2012) 등이 있다. (자세한 내용은 SQL Server 운영과 튜닝(영진출판사)을 참고하길 바란다.)

 

이번 사례는 CSS SQL Server Engineer 팀 블로그에 게시된 내용으로 현업 엔지니어들이 겪는 SQL Server Failover 클러스터 구성 시 자주 발생하는 이슈를 다루어 본다. 필자가 읽고 이해한 내용을 바탕으로 정리 하였으며 번역의 오류나 기술적 오류가 있음을 미리 알려둔다. 자세한 내용은 원문을 참고하길 바란다.

 

SQL Server Failover(장애조치) 클러스터(FIC) 설치를 하는 동안 공통적으로 가장 많이 겪는 문제는 네트워크 이름의 실패이다. 이 문제에 대해서 일반적인 해결 방법을 알아 보자.

 

SQL Server 데이터베이스 엔진 서비스는 네트워크 이름에 독립적이다. 네트워크 이름에 따른 실패는 SQL Server 리소스가 온라인으로 전달되지 않아 발생 한다.

 

윈도우 장애조치 클러스터(WFC)를 구성 할 때 클러스터 이름 개체(Cluster Name Object, CNO)가 생성된다. CNO는 컴퓨터 객체로 사용자 Directory 및 스냅인(dsa.msc)으로 활동 한다. 기본적으로 CNO는 컴퓨터에 포함된 특정 권한으로 생성된다.

 

 

성공적으로 FCI 설치 후 SQL Server 네트워크 이름은 가상 컴퓨터 개체(Virtual Computer Object, VCO)를 참조한다.

 

 

참고적으로 CNO는 네트워크 이름 리소스를 만든 후 클러스터 가상 컴퓨터 개체로 간주 된다. 추가. VCO 는 단순한 컴퓨터 개체로 CNO의 속성을 변경하거나 암호를 재설정 할 수 있는 권한을 가진 개체이다.

 

 

[문제]

CNO가 컴퓨터 개체를 만드는데 필요한 권한을 가지고 있지 않는 경우는? 우리는 일반적으로 FCI구성시 다음과 같은 오류를 볼 수 있다.

 

The following error has occurred:

The cluster resource 'SQL Server (SQL2012)' could not be brought online due to an error bringing the dependency resource 'SQL Network Name(VSQL2012)' online. Refer to the Cluster Events in the Failover Cluster Manager for more information.

 

 

SQL Server 2012를 설치하는 동안 동일한 문제를 볼 수 있다.

The cluster resource 'SQL Server (MSSQLSERVER)' could not be brought online. Error: The resource failed to come online due to the failure of one or more provider resources. (Exception from HRESULT: 0x80071736)

 

시스템 로그

Cluster network name resource 'SQL Network Name (VSQL2012)' failed to create its associated computer object in domain 'motox.com' during: Resource online.

The text for the associated error code is: A constraint violation occurred.

Please work with your domain administrator to ensure that:

- The cluster identity 'CLUS2012$' has Create Computer Objects permissions. By default all computer objects are created in the same container as the cluster identity 'CLUS2012$'.

- The quota for computer objects has not been reached.

- If there is an existing computer object, verify the Cluster Identity 'CLUS2012$' has 'Full Control' permission to that computer object using the Active Directory Users and Computers tool.

 

클러스터 로그

[RES] Network Name: [NNLIB] Creating object VSQL2012 using ADSI in OU OU=SQL,DC=motox,DC=com on DC: \\MOTOXDC.motox.com, result: 8239

[RES] Network Name: [NNLIB] Failed to create Computer Object VSQL2012 in the Active Directory, error 8239

 

 

[원인]

대부분 이러한 문제의 원인은 네트워크 이름 리소스 오류로 권한이 부족한 경우이다. 구체적으로 컴퓨터 개체 만들기에 클러스터 이름 개체(CNO)에 부여되지 않았다.

다음 링크를 참고 한다.

Failover Cluster Step-by-Step Guide: Configuring Accounts in Active Directory :

http://technet.microsoft.com/en-us/library/cc731002(v=ws.10).aspx

 

"…when you create a failover cluster and configure clustered services or applications, the failover cluster wizards create the necessary Active Directory computer accounts (also called computer objects) and give them specific permissions. The wizards create a computer account for the cluster itself (this account is also called the cluster name object or CNO) and a computer account for most types of clustered services and applications"

 

SQL Server 네트워크 이름은 처음 FCI 설치 프로세스 중에서 온라인 상태가 되면 CNO는 VCO를 생성하는데 사용된다. 필요한 권한이 CNO에 부여되지 않은 경우 VCO의 생성이 실패하고 FCI 설치가 실패 된다.

 

[해결 방법 1]

해결 방법으로는 권한을 부여한다.

  1. Active Directory 사용자 및 컴퓨터 스냅인(dsa.msc)를 연다.
  2. [Computer]을 선택 한다.

     

  3. [고급 기능]이 선택되어 있는지 확인 한다.

     

  4. 속성 창에서 [보안]탭을 클릭하여 CNO를 추가한다.

     

  5. 개체 유형에서 [컴퓨터]를 선택 한다.

     

  6. 고급을 클릭하여 CNO를 선택하여 편집을 선택 한다.

     

  7. 읽기 속성에 [Created Computer Objects]가 선택되어 있는지 확인 한다.

     

  8. 설치 실패한 위치에서 [다시 시도] 버튼을 클릭하여 다시 시도한다.

 

 

 

[해결방법 2]

사전 진단 단계에서 도메인 관리자가 CNO 권한에 모든 속성 읽기 및 컴퓨터 개채 생성 권한이허용되어 있는지 확인 한다.

 

  1. 도메인 컴퓨터 개체를 만들 수 있는 권한을 가진 사용자로 로그인 되어 있는지 확인한다.
  2. Active Directory 사용자 및 스냅인(dsa.msc)을 연다.
  3. 보기 – 고급기능 을 선택 한다.
  4. [Computer]에서 마우스 오른쪽을 클릭하여 [new] – [computer]을 선택 한다.

 

  1. 개체 이름(SQL Server 네트워크 이름)을 작성하고 OK 버튼을 클릭 한다.

 

 

  1. 보안탭을 클릭한 다음 추가 버튼을 클릭한다.

 

  1. CNO를 입력한다. (Computer)을 클릭하여 선택 한다.

     

 

  1. 다음의 CNO 권한을 확인하고 OK를 클릭 한다.

Read

Allowed To Authenticate

Change Password

Receive As

Reset Password

Send As

Validate write To DNS Host Name

Validate Write To Service Principle Name

Read Account Restrictions

Write Account Restrictions

Read DNS Host Name Attributes

Read MS-TS-GatewayAccess

Read Personal Information

Read Public Information

 

 

  1. SQL Server를 설치하고 네트워크 이름 리소스가 문제없이 시작해야 한다.

 

 

[참고자료]

http://technet.microsoft.com/en-us/library/cc731002(WS.10).aspx

  • Before Installing Failover Clustering

http://msdn.microsoft.com/en-us/library/ms189910.aspx/html

  • Add workstations to domain

http://technet.microsoft.com/en-us/library/cc780195(v=WS.10).aspx

 

 

 

2013-10-01 / 강성욱 / http://sqlmvp.kr

 

 

반응형