본문 바로가기

IT n Linux

클러스터 시스템 만들기 #2 클러스터의 필요성과 하드웨어의 선택




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

클러스터 시스템을 만드는 글에서 이런 주제를 다루는 것이 조금 이상한 것 같지만, 꼭 생각해봐야 할 문제입니다. 클러스터가 필요하니까 여기서 이 글을 읽고 있는것 아닙니까! 라고 말씀하실 분들이 계실 지 모르지만, 여러분에게 필요한게 사실은 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 같은 것들은 모두 내장된 걸로 사세요. 그게 마음 편합니다. 그리고 하드웨어를 구입할때 최신 제품은 피하는게 좋습니다. 최신 제품은 대부분 드라이버들이 불안정 해서 클러스터가 이유없이 죽는 경우가 있습니다. 이런 경우도 정말 대책없습니다.


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

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