본문 바로가기

IT n Linux

클러스터 시스템 만들기 #1 클러스터 시스템 소개와 이해


이 글은 [공부] - 클러스터 시스템 만들기 글을 다시 수정하면서 적은 글입니다. 지난번 글을 쓴 이후 시간이 많이 지났고, 추가해야할 부분들이 보여서 새로 작성합니다.

연구실 클러스터


자연과학이나 공학 분야에서 공부를하고 연구를 하시는 사람들이 가장 많이 접하는 것이 클러스터 시스템일 겁니다. 어느 연구실에서는 돈을 주고 학교 전산원이나 KISTI 같은 곳의 슈퍼컴퓨터에 계정을 사서 사용하기도 하고, 각자 연구실에서 컴퓨터를 묶어서 클러스터 시스템을 직접 만들어 사용하기도 하죠. 제가 전공하고 있는 생물정보학 분야역시 클러스터 시스템이 없으면 연구가 불가능합니다.

저는 전산원의 슈퍼 컴퓨터보다 연구실의 클러스터 시스템을 사용하는 것을 선호합니다. 항상 그렇듯 관리자가 내 맘같지 않고, 하드디스크 용량에 제한이 있으니까요. 생물정보학 연구하는데 용량이 1~2G 필요한 것도 아니고 연구를 하다보면 쌓이는 자료가 1TB를 넘길때도 있는데 항상 용량 체크하고, 자료 백업한다는게 쉬운일이 아니니까요.

먼저 첫번째 글의 제목은 클러스터 시스템의 소개와 이해 입니다. 의외로 클러스터 시스템을 구성하거나 사용하시는 분 중에서도 기본 개념을 잘 모르고 시작하시는 분들이 있습니다. 이러면 구성하기 정말 어렵습니다. 여기서는 클러스터 시스템이 어떤 것인지 부터 다루겠습니다.

먼저 용어 몇가지를 정의 하고 넘어가겠습니다.(이 용어는 제가 이글에서 사용할 용어지 표준 용어는 아닙니다.) 클러스터 시스템은 크게 3부분으로 나눌 수 있습니다.

  • Cluster Master : 클러스터의 중심이 되는 컴퓨터 입니다. 클러스터가 구동되는 모든 프로그램이 설치되고, Node 컴퓨터들을 작동시키는데 사용되는 Node 의 OS 이미지를 가지고 있습니다. 그리고 사용자는 이 컴퓨터에 접속해서 모든 작업을 합니다. 소규모모의 클러스터 시스템이라면 Master는 보통 1대 입니다.
  • Cluster Node : 클러스터에서 계산을 담당 하는 컴퓨터입니다. 보통 디스크를 가지고 있지 않고, 부팅시에 Master 에서 OS 이미지를 가져와서 램에 로딩한 뒤에 작동하게 됩니다. Node 의 댓수 제한은 없지만, Master 와 Network 에 걸리는 부하를 고려해서 댓수를 한정해야 합니다.
  • Network : Cluster 와 Node 를 연결시켜 주는 시스템입니다. 랜선과 랜카드, 스위칭 허브 등으로 이루어져 있습니다. 클러스터 전체의 성능을 결정하는 아주 중요한 장비 입니다.

흔히 클러스터를 구성한다고 하면 크게 2가지 일을 해야 합니다. Master 와 Node 에 OS를 설치하고 설정하는게 첫번째고, 계산 프로그램을 각 Node 에 분산시켜줄 Queueing 시스템 구성이 두번째 입니다. 사실 Queueing 시스템의 구축은 클러스터 시스템과 분리해서 이야기 해야 하지만, 클러스터중에 Queueing 시스템 없는 경우는 없기 때문에 하나의 시스템이라고 생각해도 될 것 같습니다. 여기서 만들 시스템을 의 경우 다음과 같은 구성을 가집니다.

  • OS : CentOS (RedHat Enterprise Linux Clone) 5.3
  • Node 구성
    • Perceus 를 이용한 Diskless 방식
    • OS : CentOS 5.3
  •  Queueing System : Sun Microsystems N1 Grid Engine
    • Perceus를 이용한 Diskless 시스템 

입니다. OS 와 Node 를 운영할 시스템, Queueing 시스템의 선택은 당연히 구축하는 목적과 편리성에 맞도록 선택해야 합니다. 하지만, 제 생각에는 소규모 클러스터링 시스템에서 대부분 위의 구성이 가장 편리하다고 생각됩니다.

위의 구성중에 Diskless 라는 말이 있습니다. 이것은  Master에만 하드디스크를 두고 Node는 하드디스크 없이 Network File System (NFS) 를 이용해서 Master의 특정 디렉토리를 자신의 하드디스크 처럼 이용하는 방식입니다. 모든 Node 가 하나의 이미지를 사용하므로 시스템의 수정이나 Update 가 편리하다는 장점이 있습니다.

OS는 CentOS로 결정하였습니다. Gentoo, Ubuntu, SuSE, RedHat Enterprise Linux(RHEL), Fedora Core 등 정말 많은 배포본이 있습니다. 하지만 현재 대부분의 계산용 프로그램들이 RHEL을 기준만들어지고, 안전성 면에서도 뛰어나기 때문에 여기서는 RHEL의 Clone 인 CentOS를 선택했습니다.

Queueing System 으로는 Mosix, OpenPBS, Torque, SunGrid Engine 등이 있는데, 관리하기에 가장 편하다고 생각되는 Sun Microsystems Grid Engine 을 사용하겠습니다.

현재 CentOS 5.3, Perceus 1.5.2, SunGridEngine 6.2 update 3  가 가장 최신 버젼입니다. 여기서 문제가 되는것이  Perceus 1.5.2 입니다. 제가 두 곳의 시스템을 구축했을때 한 곳에서는 1.5.0 이 정상적으로 작동하지 않았습니다. 문제가 되었던 시스템이 Dell 이라는 세계에서 가장 많은 컴퓨터를 파는 밴더 제품이었습니다. 그래서 저는 아직 1.4.4 버젼을 이용하고 있습니다.

리눅스 클러스터를 만드는 방법은 정말 많습니다. 이 중에서 제가 주변 사람들에게 배우고 판단하기기에 가장 편리하고 빠르게 구축할 수 있는 방법을 선택했습니다. 실제 구축 이야기는 다음 글에 계속 됩니다.