none
windows 2003 Ent 2대를 MS SQL 2005 MSCS 구성시 오라클 RAC 와 같이 Active / Active 가능한가요? RRS feed

  • 질문

  • Windows 2003 Ent  2대를 MSSQL 클러스터를 구성하려고 합니다.

    양쪽 노드에서 외장 디스크에 있는 동일한 DB를 동시에 접근이 가능하도록

    Active / Active 모드로 구성하려고 하는데 가능한지 궁금합니다.

     

    그러니까  유닉스에서 제공하는 공유디스크에 대한 양쪽노드의

    Cuncurrent Access가  가능한지 궁금하네요.

     

    Windows 2000 Ent 에서는 동일한 서비스, 디스크에 대해서는 Active /Passive 모드만 가능 한걸로 알고 있었는데 Windows 2003 Ent 에서 구성되는 MSCS에 대해서는

    어떻게 되나요??

    2007년 5월 25일 금요일 오전 12:21

모든 응답

  • 1. Active/Active 구현을 이용하면 응용 프로그램이 양 노드에서 로드 분산을 통한 병렬 처리가 가능하다.

    아니다. 필자도 그게 가능했으면 좋겠다. ^^;
    가끔씩 다음과 같은 질문을 받곤 한다. "SQL Server를 Node A와 Node B에서 동시에 운영하기 위해서 MSCS를 Active/Active로 구현 했는데요. 외장 하드 디스크에 데이터베이스를 생성하고 이 데이터베이스를 양 노드에서 동작하는 SQL Server가 동시에 접근할 수 있도록 설정해서 양 노드의 SQL Server가 사용자의 로드를 분산해서 병렬 처리하게 할 수 있나요?" 이런 질문을 한다는 것은 MSCS가 Shared-Nothing 클러스터라는 사실과 가상 서버의 동작 원리에 대한 정확한 이해가 부족하기 때문이다.


    그림 1. 2-노드 서버 클러스터와 가상 서버

    그럼 먼저 Shared-Nothing 클러스터에 대해 알아보자. Shared-Nothing 클러스터는 어떠한 하드웨어나 소프트웨어 리소스도 양 노드에서 공유하지 않는 방식이다. <그림 1>에서 얼핏 보기에는 두 노드가 외장 저장 장치에 있는 외장 하드 디스크를 서로 공유하여 동시에 접근할 수 있는 것처럼 보이지만 내부 동작 원리는 물리적인 외장 하드 디스크별로 소유권을 가지고 있는 노드만이 접근할 수 있다. 따라서 특정 외장 하드 디스크에 소유권이 없는 다른 노드는 그 외장 하드 디스크에 접근할 수 없다. 따라서 이 Shared-Nothing 클러스터에서는 어떠한 리소스도 공유하는 것이 없는 방식으로 MSCS가 바로 이 Shared-Nothing 클러스터 방식으로 동작한다.
    그럼 MSCS의 동작을 이해 하는데 중요한 가상 서버가 무엇인지 알아보자. 일반적으로 Windows 2000 운영체제를 설치한 시스템을 서버라고 부른다. 서버라는 의미는 컴퓨터 시스템이 가지고 있는 리소스를 클라이언트들이 접근해서 사용할 수 있다는 의미이다.
    근데 왜 클러스터를 구성하는 컴퓨터 시스템은 서버라고 부르지 않고 노드라고 정의할까? 이유는 서버 클러스터 동작 원리와 깊은 관계가 있다. 사용자들은 서버 클러스터 환경하에서 노드의 컴퓨터 이름을 사용하지 않고 노드 안에서 동작하는 가상 서버의 컴퓨터 이름을 사용하게 된다. 노드는 직접적으로 사용자에게 리소스를 제공하는 서버의 역할을 수행하지 않고 가상 서버가 정상적으로 동작 할 수 있는 환경을 제공하는 Host OS 역할을 담당하게 되는 것이다. 가상 서버는 노드안에서 동작하는 Guest OS가 되며 이 가상 서버 안에서 실제 사용자에게 서비스를 제공하는 응용 프로그램이 동작하게 된다.


    그림 2. 실제 시스템과 그룹과의 연계성

    MSCS에서 가상 서버를 만드는 과정은 하나의 서버를 구매하고 운영체제를 설치하는 과정과 유사하다.
    일반 서버에 SQL Server를 운영할 계획이라 가정해 보자. 가장 먼저 해야 할 것은 적절한 성능을 갖춘 시스템을 구매하는 것이고 그 다음에는 Windows 2000 운영 체제를 시스템에 설치할 것이다. Windows 2000의 설치가 완료되고 네트워크가 정상적으로 설정되었다면 그 후 SQL Serve를 설치하게 된다.
    그럼 가상 서버를 만드는 과정과 비교해 보자. SQL Server를 운영할 가상 서버를 만들어야 한다면 가장 먼저 해야 할 일은 가상 서버가 동작하는데 필요한 리소스를 관리할 그룹을 생성해야 한다. 그리고 SQL Server가 사용하는 데이터베이스 파일을 저장할 외장 하드 디스크를 실제 디스크 리소스를 이용해서 추가한다. 그룹을 만들고 실제 디스크 리소스를 포함함으로써 <그림 2>의 1번 과정처럼 하나의 시스템을 구매한 것이 된다.
    시스템을 구매하면 그 다음에 해야 할 일은 운영 체제를 설치하는 것이고 이 과정을 MSCS에서는 <그림 2>의 2번 과정처럼 그룹에 IP 주소 리소스와 네트워크 이름 리소스를 추가해서 설정함으로써 대신할 수 있다. 여기까지 진행 하게 되면 마치 시스템에 운영체제만 설치된 것과 같은 상태가 되고 이 후 SQL Server를 설치하여 <그림 2>의 3번 과정처럼 관련 리소스를 추가하면 원하는 가상 시스템을 구축한 것이다.
    그럼 여기서 모든 끝난 것일까? 아니다. 그룹을 온라인을 시켜야 한다. 이는 마치 모든 서버에 필요한 모든 응용 프로그램과 설정을 마친 후 부팅하지 않은 것과 같은 것이다. 부팅되지 않은 서버를 클라이언트가 무슨 수로 접근 할 수 있겠는가!!!
    이렇게 일련의 과정이 끝나고 가상 서버가 운영되면 사용자들은 가상 서버가 동작하고 있는 노드의 컴퓨터 이름이 아닌 가상 서버의 컴퓨터 이름으로 접근하게 되는 것이다. 따라서 위의 내용들을 종합하면 MSCS는 Shared-Nothing 방식이기 때문에 양 노드에서 동작하는 가상 서버의 SQL Server가 동시에 같은 외장 하드 디스크에 접근할 수 없다. <그림 1>의 각 가상 서버에 추가된 물리적 하드 디스크 리소스를 보면 각기 다른 하드 디스크를 접근하도록 설정되어 있는 것을 볼 수 있을 것이다. 따라서 절대로 Active/Active 클러스터는 하나의 가상 서버를 생성해서 양 노드에서 동시에 실행 시키는 구성이 아니라 완전히 독립적으로 동작하는 두개의 가상 서버를 각 노드에서 운영하는 방식이다. 그렇기 때문에 질문과 같은 구성은 불가능하다.

    http://www.microsoft.com/korea/technet/resources/Technetcolumn/column_6.asp

    2007년 5월 25일 금요일 오전 5:23