[SQL 서버 특강] ② MS SQL 서버 클러스터 셋업

일반입력 :2004/04/23 00:00

Mark Strawmeyer

[SQL 서버 특강] ① 성능 향상을 위한 인덱싱 기법[SQL 서버 특강] ② MS SQL 서버 클러스터 셋업[SQL 서버 특강] ③ 합리적인 DTS 실행 비법MS 클러스터 서비스(MSCS)를 사용해 SQL 서버 클러스터를 셋업해 보자.클러스터링은 웹, 이메일, 데이터베이스(DB) 서버와 같은 인프라에 높은 가용성과 범위성(scalability)을 제공하는 기술이다. 이번 강좌에서는 클러스터의 종류를 살펴보고 MS 기반 클러스터링 솔루션 구축방법을 중점적으로 알아본다. 또 하드웨어 컴포넌트, 클러스터 동작 원리, 그리고 클러스터 솔루션에 SQL 서버를 설치하는 방법도 알아본다.클러스터의 종류클러스터에는 로드 밸런싱(load balancing)과 페일오버(failover) 두가지 타입이 있다. 로드 밸런싱 클러스터는 서버의 부하를 클러스터링된 리소스로 분산시킨다. 네트워크 트래픽을 다수의 프론트 엔드 서버로 분산시키는 것이 여기에 포함된다. 로드 밸런싱은 부하를 모든 가용한 서버에 고루 분산시킴으로써 성능 및 범위성을 향상시켜 준다. 웹 및 COM+ 애플리케이션이 이 방법을 사용한다. 로드 밸런싱은 클러스터에서 두 개 이상의 노드를 지원한다.페일오버 클러스터는 하드웨어 및 소프트웨어의 사용불가 상황(계획적인 것이든 사고든)이 닥쳤을 때 고가용성을 제공한다. 페일오버 클러스터는 리소스를 모니터링하면서 언제 페일오버 상황을 발동시킬지 결정한 후 (해당 상황이 발생하면) 리소스를 클러스터 내의 다른 서버로 옮기는 방식으로 고가용성을 제공한다.무정지형(fault-tolerant) 페일오버 클러스터는 하드웨어와 소프트웨어에 대해 리얼타임 페일오버를 제공한다. 무정지형에는 필요한 하드웨어도 많고 애플리케이션 상태(state)를 확인할 수 있는 특수 소프트웨어도 필요하다. 고가용성 클러스터 역시 무정지형 클러스터라고 할 수도 있지만 페일오버 기능에 차이가 있다. 고가용성 클러스터는 하드웨어와 소프트웨어에 대한 페일오버는 되지만 애플리케이션 상태는 대부분의 경우 잃게 된다.MSCS는 무정지형 클러스터 보다는 고가용성 클러스터에 가깝다. 즉 무정지형 클러스터보다 필요한 하드웨어 규모도 작고, 전문적인 무정지형 솔루션보다 더 많은 종류의 애플리케이션에서 동작한다. 또 하드웨어, 소프트웨어에 대한 페일오버는 되지만 페일오버 시점의 정확한 상태는 유지하지 못할 확률이 크다. MSCS 고가용성 솔루션은 클러스터당 총 2개의 서버(노드)를 지원한다.기본적인 하드웨어, 소프트웨어 컴포넌트클러스터는 독립적인 공통 하드웨어를 통해 함께 동작하는 독립적인 서버 노드로 구성된다. 클러스터내의 각 서버는 자체 운영체제 인스턴스와 네트워크 연결을 가지며, 외부 디스크 및 서버간 프라이빗(private) 네트워크 접속을 통해 서로 연결된다. 공유 디스크는 드라이브 컨트롤러(SCSI, SAN 등)를 통해 각 노드와 연결되는데, 드라이브 컨트롤러는 운영체제 드라이브 연결 컨트롤러와는 다른 것이다.MSCS는 액티브/패시브 모드로 운영된다. 즉 클러스터에서 항상 하나의 노드만 액티브 상태로 동작한다. 액티브 서버는 가용한 모든 클러스터 자원을 소유하며, 액티브 노드는 쿼럼 드라이브에 지속적으로 데이터를 기록한다. 쿼럼 드라이브는 클러스터가 페일오버할때 다른 노드와 상태 정보를 공유하기 위해 사용된다. 패시브 상태의 서버는 프라이빗 연결을 통해 리소스 소유가 더이상 불가능하다는 '신호'가 오면 클러스터 리소스 소유권을 넘겨받고 쿼럼 드라이브에 저장된 상태 정보를 읽게 된다.클러스터에 SQL 서버 설치하기클러스터내에 SQL 서버를 설치하기 위해서는 먼저 다음 순서에 따라 클러스터를 셋업해야 한다.

  • 각 서버에서 MSCS를 지원하는 윈도우 서버 운영체제를 설치한다.
  • 각 서버간 퍼블릭 네트워크 연결을 구축한다. 퍼블릭 연결은 요청을 수신하는 인터페이스다.
  • 클러스터내의 두 노드를 프라이빗 네트워크로 연결한다. 이 연결은 리소스 상태를 확인하기 위한 신호를 보내는데 사용된다.
  • 도메인에 사용자 계정을 생성한다. 이 계정은 클러스터의 서비스 계정으로 사용된다. 이렇게 생성한 계정은 각 서버에서 관리자(어드민) 그룹으로 지정한다.
  • 두 서버의 전원을 내리고 디스크 리소스에 공유 디스크 드라이브와 전원을 연결한다. 한 노드의 전원을 켜고 쿼럼 드라이브 및 원하는 논리 파티션을 포함하도록 해서 논리적 드라이브 공간을 설정한다.
  • 제어판 > 프로그램 추가/제거 > 윈도우 구성요소로 들어가 MSCS를 설치하고 구성한다. 클러스터에 가상 명칭(virtual name), IP 주소, 공유 디스크 리소스를 부여하는 작업도 여기에 포함된다.
  • 나머지 노드의 전원을 켠다. 두번째 노드가 온라인 상태가 되면 첫번째 노드로 돌아가 클러스터 관리자 기능을 이용, 노드를 추가한다. 클러스터에서 두번째 노드 설치작업은 첫번째 노드 설치의 구성을 따오기 때문에 훨씬 간단하다.
  • 클러스터 구성이 완료되면 다음과 같이 SQL 서버를 설치한다.
  • SQL 서버 엔터프라이즈 에디션 CD를 넣는다. 자동실행이 되지 않으면 setup.exe를 직접 실행시킨다.
  • 컴퓨터 이름(Computer Name) 화면에서 가상 서버(Virtual Server)를 선택하고 클러스터 인스턴스를 식별할 가상 명칭을 입력한다.
  • 운영할 SQL 서버에서 서비스 계정을 생성한다. 클러스터의 각 노드에서 이 계정에 관리자 권한을 부여한다.
  • 나머지 셋업 과정에서 SQL 서버 인스턴스에 IP 주소, 서비스 계정, 공유 디스크 자원 들을 할당한다.
  • 셋업 프로그램은 클러스터의 각 노드에 SQL 서버를 설치하고 클러스터의 모든 가상 세팅을 구성한다. 이제 클러스터 관리자를 통해 SQL 서버 서비스를 통제할 수 있게 된다. @