제목을 어떻게 적어야 할지 모르겠습니다. 내용은 그냥 혼잣말 내지 질문 정도가 되겠는데...

일단 제가 테스트로 VM을 3대 생성했습니다. 스펙은 전부 동일하고 서버 2008 R2입니다.

ADDC - snoopy.com 도메인 컨트롤러
MSCS01 - DB서버 1번
MSCS02 - DB서버 2번

그런데 Failover 클러스터를 구성한 다음 MS-SQL 2008 R2를 설치하는데, 계정을 넣는 부분이 있습니다. 거기에 제가 로컬 시스템 (NT AUTHORITY\SYSTEM) 계정을 넣으면 오류가 발생하더군요. 도메인 계정을 넣어야 한다고 문구가 나와서 어쩔 수 없이 도메인 Administrator 계정을 넣고 SQL 설치를 진행하긴 했습니다만...

그래서 일단 구성은 이렇게 되었습니다. 아래 녀석이 MSCS01 - DB서버 1번이고 현재 Active 상태입니다.


서비스에 들어가보면 위에서 말씀드린대로 설치시 도메인 Administrator 계정을 넣었기 때문에 이렇게 되어 있습니다.


Standby 서버의 경우도 마찬가지로 이렇게 도메인 Administrator 계정으로 SQL 서버가 돌아가도록 되어 있는데...



제가 이 실험을 하게된 이유는 바로... 서비스가 특정 계정에 Depend 하는게 싫기 때문입니다. 왜냐하면... 그 특정 계정의 패스워드가 변경된 경우 서비스가 올라가지 않기 때문입니다. 또한 예전에 얼핏 서버 2008부터는 Failover 클러스터 구성시 서비스를 도메인 계정으로 돌리지 않아도 된다고 들었기 때문에 직접 실험을 해보았습니다.

실험 내용은 별거 없고, 위 상태에서 Standby 서버의 SQL 서비스들을 전부 로컬 시스템으로 변경한 후, Active 서버를 재부팅 시켜버렸을 때 정상적으로 Standby 서버가 클러스터 디스크와 SQL 서비스 소유권을 가져오냐는 것입니다. 즉 장애발생시 정상적으로 Failover가 되는지 테스트해본 것입니다.

결론부터 말씀드리자면 Failover 잘 됩니다.

Standby 서버의 SQL 서비스들을 전부 로컬 시스템 계정으로 돌려놨구요


1번 서버를 재부팅하니 2번 서버가 Active 상태로 잘 올라온 모습입니다.


물론 이상태로 1번 서버의 SQL 서비스 계정도 전부 로컬 시스템으로 변경하고, 2번 서버를 재부팅 했을 때 역시나 정상적으로 Failover가 잘 되었습니다. 몇번 반복해서 재부팅을 해봤는데도 서로 넘겨주기를 잘 하더군요.

아무튼 일반적으로 Failover 클러스터 구성시 SQL 서비스는 도메인 계정으로 돌아야 한다고들 알고 계실 것인데, 위 실험 내용처럼 2008 이상에서는 로컬 시스템 계정으로 돌려도 클러스터 구성에 문제가 없는지 (위 실험에선 문제가 없었는데) 혹시 여기에 대해 잘 알고 계신 분이 있다면 의견 부탁드립니다.

그리고 사족인데 2008부터는 Failover 클러스터 구성시 Heartbeat 네트웍이 필요 없더군요. 위 실험에서도 실제로 따로 Private 네트웍을 구성해주지 않았고, VM이니까 당연히 뭐 Cross Cable 같은 것도 없었습니다. 아래 MS 문서를 보시면 이런 내용이 있습니다.

http://support.microsoft.com/kb/258750

이 문서의 정보는 Windows Server 2008 또는 Windows Server 2008 R2 장애 조치 클러스터에는 적용되지 않습니다. 이 버전의 장애 조치 클러스터링에서 이러한 권장 지침을 구현할 경우 부정적인 동작이 유발될 수 있습니다. Windows Server 2008 및 Windows Server 2008 R2 장애 조치 클러스터는 개인 하트비트 네트워크가 필요하지 않으므로 이 문서에 제시된 네트워킹 설정이 필요하지 않으며 원치 않은 동작을 유발할 수 있습니다.


필드에 계신 분들이 주로 2003 기반의 클러스터를 많이 다루시다보니 2008에서 달라진 부분들에 대해서는 조금 약하신 것 같더군요. 그래서 2003에서 구성하던 습관대로 2008에서도 Heartbeat 케이블링 작업하고, 서비스를 무조건 도메인 계정으로 로그온 시키시던데, 적어도 위 실험에선 잘 되었습니다.

혹시 제가 잘못 알고 있는 부분이 있거나, 위 실험에 문제되는 부분이 있다면 댓글로 알려주시기 바랍니다.
신고

  1. null2me
    2011.12.15 11:58 신고

    heartbeat 네트웤이 필수는 아니라면 클러스터 네트워크에 물려도 상관이 없다는 말로 해석해도 될까요?
    현재 상기 내용과 비슷한 시스템 테스트 중인데.... heartbeat(프로그램)동작은 이상이 없지만
    실제 테스트 솔루션 프로그램의 failover 동작이 제대로 되지 않아서 어러가지를 고민 중입니다.

    계정권한 문제인지 네트워크 설정문제 인지 말이죠.
    관련 자료는 나름 찾아봤지만 리눅스용이 대부분이어서. 셀프(?) 스터디가 어렵네요 ㅜ_ㅜ
    (*혹시 heartbeat, failover 관련하여 추천하실만한 링크는 없으신지...)

    • BlogIcon snpbox
      2011.12.16 00:48 신고
      수정 및 삭제

      음... 얼마전에 MS 엔지니어분께서 Failover 강의를 해주셨는데, 그분 블로그에 한번 가보세요. 아마 도움될만한 자료가 있지 않을까 싶습니다.

      http://maystyle.tistory.com/

  2. 분당둥이아빠
    2011.12.19 17:04 신고

    최근에 고객사에서 Windows 2003 클러스터 서버를 OS 업그레이드를 위해 DR서버(Windows 2008 R2)로 전환해서 SQL2008 서버를 시작하는데 decryption 에러가 SQL Errorlog에 기록된 경우가 있었습니다.
    서비스 시작 계정이나 컴퓨터 이름을 암호화해서 사용하는 SMK(System Master Key)가 틀린 경우에 발생하는 것으로 서버 구성을 암호화해서 사용하는 부분(Linked Server구성등)에 문제가 발생할 수 있다고 합니다.
    컴퓨터 이름도 기존 서버가 운영되고 있어서 변경할 수 없었고, 클러스트에서 사용하는 도메인 계정을 단일 DB 서버로 이전하면서 로컬 시스템 계정을 사용했더니 발생한 경우였습니다.

    • BlogIcon snpbox
      2011.12.19 13:09 신고
      수정 및 삭제

      서비스를 도메인 계정이 아닌 Local System으로 했을 때 그런 문제가 발생할 수 있다는 말씀이시죠? 참고하겠습니다. 감사합니다.


  3. 2012.06.04 15:29 신고

    heartbeat 는 2003에서 부터 없어도 구성이 가능했습니다.
    하지만 안정성?? 이중화?? 등의 이유로 안하는 것보다는 하는게 좋다는 의견 입니다.
    실제로 heartbeat 통신에 문제가 생겨도 클러스터는 failover를 실해하지 않습니다.
    그때 서비스네트워크로 heartbeat를 체크합니다.!!!