태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.


이전 글에서 클러스터 시스템의 개요와 하드웨어 선택 방법에 대해서 말씀 드렸습니다. 이번에는 본격적인 클러스터 구성의 시작인 시스템 구성 계획을 짜도록 하겠습니다.


클러스터 시스템의 최소 구성

클러스터 시스템의 구성에 대해서 생각해보겠습니다. 먼저 클러스터를 구성하는 최소한의 구성을 그려봤습니다. 이전까지 구축되어있는 대부분의 소규모 클러스터 시스템이 이런 모습을 가지고 있지 않을까 생각이 드네요.

가장 단순한 클러스터 구성

최소한으로 구성한 클러스터 시스템


구성은 아주 간단합니다. Master 1대와 Node 10 대, Switching Hub 1 개 가 전체 구성품입니다. Master 는 2개의 Lan 카드를 가지고 있습니다. 이전 글에도 적었지만, Harddisk 는 Master 에만 존재합니다. 그리고 모든 Node 는 Master 에 있는 OS 이미지를 읽어와서 자신의 메모리에 올려두고 하드디스크 처럼 사용합니다.

만약 지금 이런 시스템을 만든다면 어떤 문제가 발생할 수 있을까요? 가장 큰 문제는 네트웍 입니다. 지금 클러스터 시스템을 만든다면 아마 Quad Core CPU 를 사용해서 만들게 될 겁니다. 결국 1개의 랜선에 4대의 컴퓨터가 물려있는 것과 동일한 상황이 되는 거죠. 그래서 네트웍에 심한 부하가 걸리게 되고, 결국 CPU는 놀고 있지만, 클러스터는 성능을 발위하지 못하는 상황이 발생하게 됩니다. 제 경험상 네트웍 부하 문제는 클러스터 성능을 가장 크게 좌우 하는 문제입니다.

추천하는 소규모 클러스터 구성도

다음은 최근에 제가 구성해서 사용하던 클러스터의 구성도 입니다. 이 글에서 앞으로 설정할 시스템의 가상 구성도 이기도 합니다.

추천하는 클러스터 구성도

추천하는 클러스터 구성도. 2개의 Network 이 존재한다.


위의 구성도와 차이점은 Network 을 하나 더 추가한 것입니다. 각 Node 는 하드디스크 I/O 는 eth1 로 하게 되고, MPI 나 기타 통신은 eth0 로 하게 됩니다. 하나의 네트웍으로 전송되던 정보를 두 곳으로 분산해서 처리함으로써 클러스터가 더 효율적으로 작동하도록 했습니다.

사실이 정도 구성에서도 네트웍이 Quad Core 10대의 Node 를 완전하게 가동 시킬 수 있는지는 확실치 않습니다. 아마 사용하는 환경에 달려있을 것 같은데요. 클러스터 구성후 자신이 생각했던 것 만큼의 속도가 나오지 않으면  클러스터 구성에 생각지 못한 점이 있나 살펴봐야 합니다.

제가 있는 연구실의 클러스터는 위의 예보다 조금 더 규모가 큽니다. 모든 컴퓨터가 Quad Core CPU Dual (즉 컴퓨터당 8개의 Core 입니다.). Node 는 12대 입니다. 그래서 연구실 클러스터의 구성은 다음과 같이 되어있습니다.

연구실 클러스터 구성도

제가 있는 연구실의 클러스터 시스템 구성도


2번째 그림과 다른 점은 Node Image 를 관장하는 NodeMaster 를 별도로 두고, Storage 를 Master 에서 분리해서 따로 두었다는 것입니다. 여기서 Master 가 하는 역할은 사용자가 접속을 해서 작업하는 용도와 각 Node 에서 작동시키는 프로그램(OS가 아닙니다.)을 설치하는 것입니다. 사실 현재 대수에 비해서 조금 크게 구성한 감이 있지만, 앞으로 추가될 Node 들을 고려해서 이런 구성을 하였습니다. (참고로 위의 추천 구성으로도 별문제 없이 사용하였습니다.)

클러스터를 구성할 때 위의 그림을 백지 한장에 위의 그림을 그리고 IP 까지 적어서 기록해 두는 것이 설정하는데 많이 편합니다. 클러스터 구성작업이 단순 반복 작업이라 헷갈리기 시작하면 대책 없습니다.

이제 하드웨어 선택도 다했고, 구성도 다했습니다. 이제 다음 글부터 본격적인 클러스터 시스템 구성을 해보겠습니다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 네오스



클러스터 구축 과연 필요한가?

클러스터 시스템을 만드는 글에서 이런 주제를 다루는 것이 조금 이상한 것 같지만, 꼭 생각해봐야 할 문제입니다. 클러스터가 필요하니까 여기서 이 글을 읽고 있는것 아닙니까! 라고 말씀하실 분들이 계실 지 모르지만, 여러분에게 필요한게 사실은 Queueing 시스템을 설치한 Multi Core 서버 일수도 있습니다.

과거에는 Single Core CPU 여서 여러개의 CPU 를 묶어서 Cluster 를 구성하는 것이 당연한 작업이었습니다. 하지만 지금은 Quad Core CPU 가 대중화되어있습니다. 그래서 Quad Core CPU DUAL 인 서버급 컴퓨터를 250~300만원 정도면 구입할 수 있습니다. 이 시스템과 Quad Core 를 3대~4대 붙인 컴퓨터가 있다면, 어느 것이 빠를까요? 가격대 성능은?

다나와에서 비슷한 가격대의 두 시스템 견적을 뽑아봤습니다.

  • 인텔제온 E5420*2 / Super miccro MB / RAM 2G*4 / ODD / HDD 1TB*2 / Power + CASE = 약 250만원
  • (인텔 콜어2쿼드 Q9400 / G31 MB / Ram 2*2 / ODD / HDD 1TB*2 / Lan 2개 / Power+CASE) * 3대 + 스위치허브 *2개 = 약 230만원

이 두개의 시스템을 비교해 보겠습니다. 클러스터에서 가장 중요하다고 흔히 생각되는 CPU Core 갯수로 따지면, 위는 8개, 아래는 12개 입니다. 그러면 아래 제품이 1.5배더 빠를까요? 절대 그렇지 않습니다. 위에 시스템이 더 빠를 수도 있습니다. 이유가 뭘까요?

그건 어떤 자료를 컴퓨터 내부에서 다루는 것과 네트웍을 통해서 다루는 것의 속도 차이가 아주 크기 때문입니다. 병렬계산을 하는 한 프로그램이 있습니다. MPI 를 이용하고 있구요. 이 프로그램을 위에서 8개의 CPU 를 이용해서 돌린 것과 아래에서 12개를 이용해서 돌린 것을 비교하면, 아래의 시스템이 빠를 것 같지만, Disk I/O 문제만 없다면, 위에 8개를 이용한 것이 훨씬 빠릅 수 있습니다. 네트웍과 컴퓨터 내부의 속도차이는 하늘과 땅차이기 때문입니다. 그리고 계산화학에서 사용하는 많은 계산 프로그램들이 이런 MPI 방식을 이용해서 작동합니다.

그러면 MPI 보다는 하나의 프로그램을 여러번 돌리는 것을 주로하는 생물정보학 쪽에서는 어떨까요? 제 생각에는 아래 시스템이 아주 조금 앞서거나 비슷할 것 같습니다. 그 이유는 Disk I/O 에 있습니다. Disk I/O 의 경우도 NFS 를 통해서 공유하는 것과 Native 로 사용하는 것의 속도가 아주 크게 나타납니다. 생물정보학 쪽의 대부분의 프로그램들이 Disk I/O 가 많습니다. 만약 Disk I/O 가 없이 하나의 CPU로 조금 긴 시간의 계산이 필요한 프로그램을 여러번 돌려야 한다면, 아래 시스템이 당연히 빠릅니다.

두 시스템에는 큰 차이가 더 있는데요. 바로 관리의 문제입니다. 관리가 시스템의 성능과 직접적으로 관련이 없지만, 그게 그렇지 않습니다. 클러스터 설정하고 최적화 하는게 일이니까요(그게 쉬웠다면 이글을 읽고 계시지도 않겠죠?^^).

한가지 더 생각해봐야 할 문제는 앞으로의 상황입니다. 아마 클러스터를 만들게 되면, 당장은 몇개 안되더라도 컴퓨터를 더 추가할 수 있는 상황이 됩니다. 하지만 이때도 밑에서 이야기 하겠지만, Master 컴퓨터가 좋아야 더해지는 Node 의 부하를 해결할 수 있습니다.

결국 MPI 프로그램을 돌려야 하고 예산이 300만원 정도 있다면, Quad Core Dual 인 시스템으로 가는 것이 더 좋다는 결론이 나게 됩니다. 그리고 예산이 더 생긴다면 Node 를 붙이는 방식을 따르는 것이 좋습니다.


클러스터 시스템을 위한 하드웨어의 선택

위의 글을 읽고도 클러스터를 구성하기로 결정을 내리셨다면, 이제 어떤 구성을 할 것인지를 고민해 봐야합니다. 클러스터는 전체 시스템이 용도에 맞도록 적절한 균형을 유지하는 것이 중요합니다.

하드웨어를 선택할때 가장 크게 고려해야할 점은 이 클러스터에서 작동시킬 프로그램이 무엇인가 입니다. 계산화학분야에서 사용되는 Amber 같은 프로그램은 Disk I/O 가 거의 없으므로 좋은 CPU에 비중을 두게 될 것이고, 생물정보학의 경우 Blast 같은 프로그램들을 많이 사용하게 되면 Disk I/O 가 아주 많아서 Master 의 Disk 쪽에 중점을 두어야 합니다.

저는 클러스터 시스템을 구성할때 우선 Master 를 아주 좋은 사양으로 구입하도록 추천합니다. 위에 적은 것처럼 300만원 정도의 예산이라면 Master 만 구입하시는 것을 추천드립니다. Master 는 모든 Node 를 관리하고, 데이터를 주고, 기록을 하는 곳입니다. 따라서 Master 의 성능이 떨어지면, 클러스터가 정상적으로 작동하기 힘듭니다. Master 를 구성할 때, Disk 에 대해서 고민하게 되는데, 앞으로 확장 가능성이 1%라도 있으면, RAID 시스템을 도입하길 바랍니다.

RAID 시스템은 하드디스크 여러개를 하나의 하드처럼 묵어주는 방식을 지칭하는 말입니다. 위키피디아에 잘 설명이 되어 있네요. 하드디스크를 묶어 줌으로써 속도를 향상 시켜주고 안전성을 높여주죠. RAID 카드는 종류가 많은데요. 보통 10만원 이하인 제품들은 전부 Soft RAID 입니다. 이런건 제가 말씀드린 RAID 시스템이 아닙니다. 제가 주로 사용해본 제품은 AMCC 제품인데요(과거 3ware). 이 제품은 4포트(하드디스크 4개 장착가능) 한것이 지금 55만원 정도 하네요(Amazon 같은 곳에서 구입하면 40만원 정도면 구입할 수 있을겁니다.).  저는 8개, 12개 인 RAID 시스템을 사용했었지만, 요즘은 하드가 Tera Byte 단위로 나오니 4 port 만 되도 충분하지 않을까 생각합니다. 만일 예산이 충분치 않다면, Quad Core CPU 를 2개 장착할 수 있는 메인 보드들중에 괜찮은 Hybrid 방식의 RAID 가 기본으로 달려나오는 것들이 있습니다. 이런 제품으로 우선 사용하다가 다음에 AMCC 같은 곳의 제품을 구입해서 장착해서 이용하셔도 괜찮습니다.

Disk I/O 다음으로 중요한 것이 Network 입니다. 다음글인 클러스터 시스템 구성을 보시면 아시겠지만, 네트웍 부하 때문에 클러스터가 느려지는 것을 막기 위해서 시스템 1대 당 2개의 Lan 카드를 가지기를 추천합니다. . 네트웍 장비는 infinite-band 나 미리넷, 10G ethernet 등 좋은 것이 많지만, 저같은 학생에게는 그림의 떡이고, 1G ethernet 정도면 괜찮은 것 같습니다. Lan card 를 구입한다면, intel 같은 곳의 3~4 만원 대 1G Lan 카드를 구입해야 합니다. 1만원 내외 하는 Realtek 등등에서 나온 제품들은 안전성이 떨어져서 클러스터에 좋지 않습니다(PC급 메인보드에 내장되는 Lan 카드도 이 정도 수준이니 그럴 경우 별도로 장착하셔야 합니다.). 또 저가의 Lan 카드는 네트워크 부팅을 지원하지 않아서 클러스터 구성에 사용할 수 없습니다.

클러스터를 구성하는데 성능에 중요한 CPU 나 RAM 용량 등에 대한 이야기는 안하고, 다른 이야기만 했죠? 그건 CPU 나 RAM 은 굳이 언급하지 않아도 그 중요성을 대부분 알고 있기 때문입니다. 하지만, Disk 와 Network 은 대부분 쉽게 생각하시더군요. 클러스터의 성능은 Disk I/O 와 Network 이 좌우 하는 경우가 많습니다. 이 두 부분에서 문제가 생기면 정말 대책없습니다.

한가지 팁이라면, 구입하실때 VGA 같은 것들은 모두 내장된 걸로 사세요. 그게 마음 편합니다. 그리고 하드웨어를 구입할때 최신 제품은 피하는게 좋습니다. 최신 제품은 대부분 드라이버들이 불안정 해서 클러스터가 이유없이 죽는 경우가 있습니다. 이런 경우도 정말 대책없습니다.


이번 글의 내용은 이전의 글에 있지 않은 것입니다. 생각보다 중요한 부분인데, 많이 고민하지 않고, 구축을 하시더군요. 그래서 이번에 적습니다. 혹시 지나가시던 고수님이 보셨을때 위의 내용에서 잘못된 점이 있으면, 알려주세요. 바로 고치겠습니다.

다음에는 클러스터 구성에 대해서 알아보겠습니다.

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 네오스

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

연구실 클러스터
LG< | LG-LU6000 | 1/10sec | ISO-AUTO | Flash did not fire. | 2009:07:21 20:17:28


자연과학이나 공학 분야에서 공부를하고 연구를 하시는 사람들이 가장 많이 접하는 것이 클러스터 시스템일 겁니다. 어느 연구실에서는 돈을 주고 학교 전산원이나 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 버젼을 이용하고 있습니다.

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

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 네오스
이곳은 제가 적은 클러스터 만들기의 질문과 답을 하는 곳입니다. 댓글로 질문을 올려주시면, 답을 달아드리겠습니다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 네오스
Perceus 활용 2번째 시간입니다. 이번에는 Module 기능을 이용해서 passwd 와 group 설정을 해보겠습니다.

cluster 를 구축하면 가장 귀찮은 일이 사용자와 그룹을 동기화 하는 것입니다. NIS 같은 것들도 쓰고, 저 같은 경우 Perceus 를 처음 사용할 때는 passwd 파일과 group 파일을 노드 이미지에 넣어서 사용했었습니다.

하지만, 이 작업을 Perceus 에 있는 passwdfile, groupfile module 을 이용하면 간단하게 할 수 있습니다. 우선 이 두 모듈은 처음 활성화 할 때, master 의 /etc/passwd, /etc/group 파일을 이용합니다. 그래서 모듈 활성화 하기 전에 시스템의 설정을 해야 합니다.

module 을 activation 시키는 것은 지난번 ipaddr 과 같습니다.
# perceus module activate passwdfile init/all
# perceus module activate groupfile init/all
과 같이 하면 됩니다. Module 을 활성화 시키면 다음 두 파일이 생성됩니다.
/etc/perceus/modules/groupfile/all
/etc/perceus/modules/passwdfile/all
앞서 말씀 드린 것 처럼 이 파일은 /etc/passwd 와 /etc/group 파일을 복사해 놓은 것입니다. 이제 node 들을 다시 시작하면 group 과 passwd 가 적용됩니다. 생성된 디렉토리의 구조를 보신 분들은 눈치채셨겠지만, node 그룹별 vnfs 파일별 로 설정하는 것도 가능합니다. 더 자세한 내용은 perceus 메뉴얼을 보세요.
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 네오스
  1. 클러스터 이해하기
  2. 시스템 구성과 CentOS 설치하기
  3. Perceus 설치하기
  4. Perceus 설정하기
  5. Perseus Node 설정하기
  6. Sun Grid Engine 설치하기
생물정보학 분야에서 연구를 하다보면 가장 많이 필요한 장비가 자료를 저장할 좋은 Database 서버와 자료를 만드는대 사용되는 클러스터 같습니다. 슈퍼컴퓨터가 있으면 제일 좋겠지만, 그게 어디 한두푼 하나요. 국내에 있는 수퍼컴퓨터 센터를 이용하려고 해도 일게 석사한테 빌려주지도 않을 것 같고, 요즘은 개인용 데스크탑 CPU 도 정말 잘 나와서 이것들을 잘 묶으면 멋진 성능을 발위해주니 클러스터를 직접 구성해서 사용하는게 가장 속편하고 좋은것 같습니다.

최근에 회사의 리눅스 클러스터를 다시 구성했습니다. 원래 클러스터를 구성해주시던 분이 영국으로 유학을 가셔서 그냥 사용하고 있다가 문제가 생겨서 다시 구성을 하게 되었는데요. 자료를 찾다보니 딱히 잘 정리되 있는게 없더군요. 거기다 회사 클러스터가 서버는 64비트고 노드는 32비트여서 설치하는데 그나마 있는 자료들도 별로 소용이 없더군요. 그래서 클러스터 구성하는 글을 하나 써봅니다. 이기종간의 클러스터 설정을 성공을 했는데, 무지막지한 삽질이 들어가야 해서, 그냥 동일한 배포본을 이용하라고 권해드리지만, 제가 삽질하면서 얻은 이기종간의 클러스터 구성시의 주의할 점도 명시하겠습니다.

첫번째 글로 클러스터를 구성에 대한 대략적이야기와 OS, Queueing 프로그램에 대한 개념과 앞으로 어떤 것들을 선택해서 설치할 지를 정하겠습니다.

먼저 용어 몇가지를 정의 하고 넘어가겠습니다.(이 용어는 제가 이글에서 사용할 용어지 표준 용어는 아닙니다.)

  •  Job : 사용자가 클러스터에서 돌리기원하는 계산프로그램.
  •  Queue : 클러스터가 계산하을 하기 위한 Job이 쌓이는 저장소.
  •  Queueing System : Queue 를 관리하는 프로그램. Mosix, OpenPBS, SunGridEngine 등 다양한 방법이 있습니다.
  •  Cluster Master : 클러스터의 중심이 되는 컴퓨터 입니다. 사용자는 이 컴퓨터에 접속해서 Queue 에 Job 을 추가합니다.
  •  Cluster Node : 클러스터에서 계산을 하는 컴퓨터 입니다. Master 는 대부분 하나겠지만, Node 는 여러대겠죠?
클러스터를 구성한다고 하면 크게 2가지 일을 해야 합니다. Master 와 Node 에 OS를 설치&설정하는게 첫번재고, 계산 프로그램을 각 Node 에 분산시켜줄 Queueing 시스템 구성이 두번째 입니다. 결론을 부터 이야기 하자면
  • OS : CentOS (RedHat Enterprise Linux Clone)
  • Node 구성
    • Package : Perceus
    • Diskless :
  • Queueing System : Sun Microsystems N1 Grid Engine
  • MPI Library : OpenMPI
입니다.

OS 와 시스템 구성 방법의 선택은 당연히 "편리성" 입니다. 생물정보학의 대부분의 프로그램은 Linux 기반으로 작동이 되고, Cluster 로 가장 안정적으로 돌아가는 운영체제가 Linux 이니 당연히 Linux 를 선택해야 합니다. 전체 Cluster 를 구성하는 방법은 Diskless 방식 입니다. 이것은 Master 에만 하드디스크를 두고 Node 들은 하드디스크 없이 Network File System (NFS) 를 이용해서 Master 의 특정 디렉토리를 자신의 하드디스크 처럼 이용하는 방식입니다. 이 방식은 Node 를 관리할때 Master 에 있는  이미지만 수정하면 된다는 장점이 있습니다.

이제 수 많은 Linux 배포판 중에 어떤 것을 선택할 것인가가 문제입니다. GentooLinux, UbuntuLinux, SuSE Linux, RedHat Enterprise Linux(RHEL) , Fedora Core 등 정말 많은 배포본이 있습니다. 여기서는 RHEL 을 사용하기로 합니다. 하지만 RHEL 을 구입할 필요 없이 RHEL 의 clone 인 CentOS 를 이용합니다. RHEL 을 선택한 이유는 Diskless 시스템을 구성하는데 사용할 패키지인 Warewulf 가 CentOS 를 기준으로 만들어졋기 때문입니다.

Queueing System 으로는 Mosix, OpenPBS, SunGrid Engine 등이 있는데, 이 중에서 Sun Microsystems Grid Engine 을 사용하겠습니다.

2008. 4. 14일 현재 CentOS 는 5.1 이, Perceus 1.2.7이 , SunGridEngine 은 6 update 10 이 최신버져입니다.

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

다음 이야기 <시스템 구성과 CentOS 설치하기>

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 네오스
  1. 클러스터 이해하기
  2. 시스템 구성과 CentOS 설치하기
  3. Perceus 설치하기
  4. Perceus 설정하기
  5. Perseus Node 설정하기
  6. Sun Grid Engine 설치하기

Perceus 는 Infiscale 에서 만든 Diskless 클러스터 구축용 프로그램 패키지 입니다. 이런 프로그램이 나오기 전에는 복잡하고 어려운 과정을 거쳐야 했지만, 이제는 쉽게 구축할 수 있습니다. Diskless Cluster 를 구축하는데 사용되는 tftp, dhcp 서버를 별도로 설치할 필요도 없고, node 구성부터 등록까지 자동으로 처리해 줍니다.

CentOS 의 설치에 대한 내용은 별도로 언급하지 않겠습니다. 여기서 사용한 시스템은 CentOS 5.1 이며, 2008년 4월 10일자로 "# yum update" 명령을 통해서 갱신된 버젼입니다. CentOS 설치시에 SELinux 와 방화벽 설정을 끄시길 바랍니다. SELinux는 사용하지 않으셔야 하며, 방화벽은 Perceus 설치 끝내고 정상적으로 작동이 되는 것을 확인하고 다시 활성 시키는게 정신건강에 좋습니다.^^


Perceus 를 설치를 위한 Host 설정


Perceus 설치하기 전에 몇 가지 설정을 먼저 합니다. 우리가 구성하는 시스템은 랜카드를 2개 가지고 있습니다. 외부 인터넷과 연결되는 eth0 와 내부 클러스터 노드들과 연결되는 eth1 카드 입니다. 이중  eth1 카드를 설정해야 합니다.

CentOS 에서 eth1 카드에 대한 환경 설정 파일은 /etc/sysconfig/network-scripts/ifcfg-eth1 에 존재합니다. 이 파일을 열어서 다음과 같은 내용으로 바꿔 줍니다. 이때 HWADDR= 로 시작하는 라인이 있으면 그 라인을 다음 내용 뒤에 추가합니다.
DEVICE=eth1
BOOTPROTO=static
BROADCAST=10.0.255.255
IPADDR=10.0.0.1
NETMASK=255.255.0.0
NETWORK=10.0.0.0
ONBOOT=yes
TYPE=Ethernet
그리고 네트워크를 재시작 합니다.
# /etc/init.d/network restart

Perceus 설치를 위한 관련 라이브러리 설치

Perceus 가 동작하기 위한 관련 라이브러리들이 먼저 설치되어 있어야 합니다(너무 당연하가요?^^;). 먼저 yum 에서 제공되는 것들을 설치 합니다.
# yum -y groupinstall "Development Tools"
# yum -y install nasm
# yum -y install perl-DBI
이제 source rpm 파일을 building 하기 전에 다음 명령을 실행합니다.
echo "%debug_package %{nil}" > /root/.rpmmacros
이제 추가 패키지로
  • bash-completion
  • perl-IO-Interface
  • perl-Net-ARP
  • perl-Unix-Syslog
를 설치해야 합니다. 이 패키지는 Perceus 에서 제공되는 버젼을 설치 해야 합니다.

# wget http://www.perceus.org/downloads/perceus/v1.x/dependencies/bash-completion-20060301-1.caos.src.rpm
# wget http://www.perceus.org/downloads/perceus/v1.x/dependencies/perl-IO-Interface-0.98-1.caos.src.rpm
# wget http://www.perceus.org/downloads/perceus/v1.x/dependencies/perl-Net-ARP-1.0-2.caos.src.rpm
# wget http://www.perceus.org/downloads/perceus/v1.x/dependencies/perl-Unix-Syslog-0.99-1.caos.src.rpm
# rpmbuild --rebuild bash-completion*.src.rpm
# rpmbuild --rebuild perl-IO-Interface*.src.rpm
# rpmbuild --rebuild perl-Net-ARP*.src.rpm
# rpmbuild --rebuild perl-Unix-Syslog*.src.rpm
# cd /usr/src/redhat/RPMS/noarch/
# rpm -Uvh bash-completion*.src.rpm
# rpm -Uvh perl-IO-Interface*.src.rpm
# rpm -Uvh perl-Net-ARP*.src.rpm
# rpm -Uvh perl-Unix-Syslog*.src.rpm

Perceus 설치

Perceus 1.3.7 파일을 받습니다.

# cd /root/
# mkdir perceus/
# cd perceus/
# wget http://www.perceus.org/portal/files/perceus-1.3.7.tar.gz
# export TAR_OPTIONS=--wildcards
# rpmbuild -ta perceus-1.3.7.tar.gz

이 러면 이런 저런 메세지를 내뿜으면서 perceus  의 rpm 패키지가 만들어 집니다. 만들어진 패키지는 /usr/src/redhat/RPMS 의 어딘가(^^)에 존재합니다. 만들어진 rpm 파일은 총 2개 입니다. perceus-1.3.7.rpm 파일 입니다.
# rpm -Uvh /usr/src/redhat/RPMS/*/perceus-1.3.7.rpm

설치가 끝나게 됩니다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 네오스
  1. 클러스터 이해하기
  2. 시스템 구성과 CentOS 설치하기
  3. Perceus 설치하기
  4. Perceus 설정하기
  5. Perseus Node 설정하기
  6. Sun Grid Engine 설치하기

이번에는 클러스터를 작동시키는 기본이되는 CentOS 설치를 하겠습니다. Diskless 시스템을 구축할 예정이므로 Master Node 에만 설치하면 됩니다.

우리가 만들 클러스터는 Master 만 외부와 연결되어 있고, Master 와 Node 는 내부네트웍으로 구성되어 있습니다. 그래서 Master 에는 2개의 Lan card 가 필요합니다. 다음과 같은 형식 입니다.

<Internet> --- ( eth0 : Master : eth1 ) --- ( eth0 : Nodes )

여기서 master 의 eth0 는 실제 master 가 인터넷에 접근할때 사용되는 IP를 할당해 주시면 됩니다. 그리고 master 의 eth1 과 node 의 eth0 는 10.0.0.XXX 형식의 사설 IP를 사용하도록 하겠습니다. 사설 IP 할당은
  • master eth1 : 10.0.0.1
  • node : 10.0.0.101 ~ 254
으로 하시면 됩니다.

사실 CentOS 설치는 설명할 것이 없습니다. CentOS 홈페이지에 가서 CD 를 받고, 설치하시면 됩니다.

설치할 배포본은 가장 최신 버젼인 CentOS 5.1 입니다. (updated 2008. 4. 12)

CentOS 설치는 아주 간단합니다. ISO 로 배포되는 파일을 받아서 DVD 나 CD를 구워서 설치를 하시면됩니다. 설치과정에서 특별히 설치해야 될 부분은 없습니다. 단지, 차후에 Update 시에 쓸모없는 프로그램이 설치되어 있으면 오래 걸리니 "사무용 패키지, 출판, 배포, DNS서버, 메일서버, FTP서버 등"은 설치하지 않기를 바랍니다. 그리고 개발관련 패키지 는 설치를 해주시는 것이 좋습니다. 그리고 잊지 말고 eth0 와 eth1 에 적절한 IP 를 할당해 주시기 바랍니다.

만약 CentOS 를 설치하지 못한다면, 리눅스 클러스터 구축보다 리눅스 기본 사용법 부터 익히는  기를 추천합니다.

설치를 다 하고 재부팅되면 방화벽과 SELinux 설정이 나오게 됩니다. 이 옵션을 모두 비활성화 시키시기 바랍니다. SELinux 를 사용하면 안되고, 방화벽은 클러스터를 모두 구축하고 난뒤에 정상작동 되는 것을 확인하고 활성화시키는 것이 좋습니다.

CentOS 설치를 끝내고 부팅후 터미널로 들어가서 yum 을 이용해서 시스템을 최신버젼으로 update 합니다.

# yum -y update

그리고 필요없이 서비스들을 모두 중단시킵니다(bluetooth, ISDN, pcmcia, gpm 등등..). 터미널에서 "setup" 명령어 실행후 System Service 항목으로 들어가면 선택할 수 있습니다. 그리고 재부팅합니다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 네오스
Perceus 릴리즈 정보만 올리는 것 같군요. 그동안 적은 글은 꽤 되는데 공개할 만한 글이 없어서... 반성좀 해야겠습니다.^^

하여간 Perceus 1.3.7 이 릴리즈 됬답니다. 이런 저런 버그 수정이 있고, 바뀐 것 들이 있는데, 눈에 띄는건 SLURM 이라는 거네요. 뭔가 하고 찾아봤더니 SimplLinuxUtilityForResourceManagement 의 약자인 것 같더군요. Manual 도 1.3.7 용으로 Updated 라고 되어있는데, 아직 다운받을 수는 없어서 정확히 어떤 부분이 변경된 것인지는 잘 모르겠습니다.

그리고 1.4.0 에 대한 이야기도 조금 나오고 있네요. 이것도 1.4.2는 되야 쓸만하지 않을까 하는 조심스런 추측을 해봅니다. ;)

Perceus 1.3.7

Download: perceus-1.3.7.tar.gz
Size: 46.93 MB
md5_file hash: 50362795d53e747ebadd090657bef8ae
First released: Mon, 03/03/2008 - 9:50pm
Last updated: Mon, 03/03/2008 - 9:50pm

The Infiscale team is happy to announce the release of Perceus 1.3.7. This is a minor bugfix and feature release in the 1.3 tree and can be used to non-destructively update any of the previous 1.3 releases. Changes include:

  • Better integration with SLURM
  • Backported SLURM Perceus module from the 1.4 devel tree
  • Fixed bogus warnings
  • Updated DHCP and IB integration for better RFC compliance
  • Fixed some of the hw_unload debugging
  • Updated users guide
  • Updated chroot generation scripts
  • Fixed some bash_completion features
  • Enabled HIGH_MEM in the 32 bit kernel
  • Fixed minor hybridization bug

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 네오스
Perceus 1.3.6 나왔네요.

1.3.5 에서도 문제가 있어서 나온다 나온다 하더니 오늘 나왔습니다. 다운로드 주소는
perceus-1.3.6.tar.gz 이에요.

바뀐 내용은
  • Removed default hybridization for /usr/local as it is the default install location when compiling by hand.
  • Fixed a trivial DOS of the Perceus daemon.
  • Fixed VNFS export.
이정도?

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 네오스