본문 바로가기

IT n Linux

클러스터 시스템 만들기 #3 클러스터 시스템의 구성



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


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

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

가장 단순한 클러스터 구성

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


구성은 아주 간단합니다. 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 까지 적어서 기록해 두는 것이 설정하는데 많이 편합니다. 클러스터 구성작업이 단순 반복 작업이라 헷갈리기 시작하면 대책 없습니다.

이제 하드웨어 선택도 다했고, 구성도 다했습니다. 이제 다음 글부터 본격적인 클러스터 시스템 구성을 해보겠습니다.