다음 이전 차례

4. Cluster 설계

이 문서의 목적이 Beowulf 클러스터의 설치와 관리를 다루고 있지만, 설치하기 전에 클러스터 설계와 관계된 몇가지 점들을 살펴보고 몇몇 설계에 관한 결정을 하는 것이 중요하다. 여러분은 CPU의 선택과 속도 서버와 클라이언트 노드들을 위한 메모리 크기, 디스크 크기 등을 살펴보아야 할 것이다. 본 저자는 저자가 생각하고 있는 것이 최상이라고 여기는 것을 상세히 서술할 것이고 변형된 설계에 대해서도 간략히 살펴볼 것이다.

4.1 디스크

Beowulf 클러스터에서 디스크 공간의 설정방법에는 적어도 네가지가 있다. 이러한 설정들은 가격과 성능, 관리면에서 차이를 보이고 있다. 이 문서는 저자가 선호하는 disk-less 클라이언트 설정을 다룰것이다.

Diskl-less Clients

이러한 disk-less 클라이언트 설정에서는 서버가 모든 파일들을 disk-less 클라이언트들에게 제공한다. disk-less 클라이언트 시스템의 가장 큰 장점은 새로운 노드를 추가하고 클러스터를 관리하는데 편하다는 점이다. 클라이언트 노드들이 어떠한 정보들도 갖고 있지 않기 때문에 새로운 노드를 추가할 경우, 여러분은 서버에서 몇몇 파일들을 변형시키고 이러한 것들이 작동되게 하면 될 것이다. 여러분은 클라이언트 노드들에 운영체제나 그밖의 다른 소프트웨어도 설치할 필요가 없다. disk-less 시스템의 단점이라고 말할 수 있는 것은 증가된 NFS traffic을 자동적으로 처리하게 하는 스크립트를 만든다 하더라도 초기 셋업을 더욱 복잡하게 만든다는 것이다. 만일 여러분이 disk-less 클라이언트 시스템을 선택한다면 여러분은 플로피 디스크나 부트롬(boot-ROM) 이더넷카드가 필요할 것이다. 이번 절에서 기술되는 다른 관리설정으로부터 이 disk-less 클라이언트 설정은 Beowulf HOWTO에서 정의된 Beowulf 구조에 가장 가까운 것이다. 만일 여러분이 여분의 돈이 있고 각 클라이언트 노드를 위한 디스크를 구입하길 원하다면, 여러분은 기존의 disk-less 클라이언트 디스크 저장 설정을 사용할 수 있지만, 클라이언트 노드의 디스크에 운영체제를 복사하는데 필요한 스크립를 사용해야한다. 이는 disk-less 클라이언트 설정에 유연성을 줌과 동시에 NFS traffic과 지역 스왑영역을 줄일 수 있다.

어떻게 disk-less 클라이언트 노드가 부팅되는가?

disk-less 클라이언트 설정에서 클라이언트 노드들은 자기자신에 대해서 어떠한 것도 알지 못한다. 그러면 클라이언트 노드가 작동을 하고 무엇을 해야하는지 어떻게 인식을 하는가? 그럼 여기서 Beowulf 클러스터에서 작동되는 새로운 노드를 가지고 예를 들어보자. 먼저 전원을 켰을 때, 클라이언트 노드는 플로피 디스크나 이더넷 카드의 EPROM에서 구동된다. 그리고나서 자신의 누구인지를 말하는 IP주소를 요청할 때 필요한 RARP (Reverse Address Resolution Protocol)를 보낸다. 그러면 서버노드는 IP 주소를 알려주거나 "당신의 이름은 node64이고 주소는 10.0.0.64입니다."라고 알려준다. 그 새로운 노드는 계속해서 부팅과정을 실행하고 자신의 이더넷 인터페이스 설정을 하며 서버에서 제공되는 경로를 통해 NFS 파일시스템을 마운트한다. 루트의 파일시스템은 RAM 디스크에 마운트될 수 있지만, 대부분의 경우 NFS 파일시스템으로 마운트된다. 클라이언트 노드가 부팅과정에서 해야할 마지막 작업들중에 하나는 서버노드에게 자신이 작동을 할 수 있다는 것을 알려주는 것이다. 서버노드는 이러한 정보를 기록하고 새로운 클라이언트를 계산에 사용할 수 있게된다. 이때부터는 클라이언트 노드가 서버에 의해 제어되며 실행해야할 것을 시행한다.

Fully local install

또다른 극단적인 방법은 각 클라이언트에 모든 것을 저장하는 것이다. 이러한 설치의 장점은 어떠한 NFS traffic도 일어나지 않는다는 것이고, 단점은 매우 복잡한 설치와 유지가 필요하다. 이러한 설정의 유지는 복잡한 쉘 스크립트와 모든 파일 시스템을 향상시킬 수 있는 rsync와 같은 유틸리티를 사용하면 좀더 쉽게 할 수 있다.

표준 NFS 설정

세번째 방법은 disk-less 클라이언트와 fully local install 설정의 중간이라고 할 수 있는데 클라이언트는 자기자신의 운영체제를 갖는 하드디스크를 갖고 있으며 스왑또한 설정 되어있고 단지 서버노드에 /home/usr/local/를 마운트 시키면 된다. 클라이언트 노드에 운영체제를 설치하는 방법은 여러가지가 있다. 이것에 관해서는 나중에 상세히 설명할 것이다.

분산 파일 시스템

분산 파일 시스템은 많은 노드에 존재하는 파일 시스템이다. 여러형태의 분산 파일 시스템이 있으며 몇몇은 리눅스로 포팅되어있다. 이러한 파일 시스템에서의 작업은 매우 실험적이어서 나는 여기서 이것에 관해 상세히 다루지 않겠다. 만일 여러분이 여러분의 Beowulf 시스템에서 분산 파일 시스템을 사용하고자 한다면 Implementation and Performance of a Parallel File System for High Performance Distributed Applications http://ece.clemson.edu/parl/pvfs/pvfshpdc.ps의 자료를 읽어보고 해보면 될 것이다. (역자주: Parallel Virtual File System에 관한 내용은 http://www.beowulf-underground.org에서도 확인할 수 있다.)

4.2 메모리

Amount

적절한 메모리 용량의 선택은 Beowulf 시스템의 설계에 있어서 가장 중요한 작업중의 하나이다. 만일 여러분이 여러분이 실행할 작업들을 저장할 공간이 충분히 없다면, 여러분은 확장된 스왑핑으로 인해 여러분 시스템의 성능을 저하시킬 것이다. 스왑핑은 여러분이 원하는 것이 아니다. 하드디스크에서 읽히는 모든 페이지는 여러분에게 상당한 실행시간을 요구할 것이다. 하드디스크에서 읽어들이는 것은 RAM으로 부터 읽어드리는 것에 비해 상당히 느리다. Sparc 서버에서 돌아가는 아주 커다란 작업을 본 적이 있는데 wall clock time의 99.5%가 하드디스크에서 읽고 저장하는데 사용되고 나머지 0.5%만이 실제 계산에 사용되었다. 이상적으로는 여러분이 스왑핑을 원하지 않지만, 여러분은 계획보다 큰 작업을 실행할 경우를 대비하여 어느 정도의 스왑 공간을 마련하여 두는 것이 나을 것이다.

속도

여러분의 메모리 속도는 매우 중요하다. 만일 빠른 버스에서 작동하는 빠른 CPU를 선택했다면, 노드간에 메모리 병목현상의 가능성이 아주 많다. 여기서 16ns SDRAM 쓰기를 권장한다.

4.3 CPU

Type

CPU의 선택은 두가지 부류중에서 이루어져야한다: Intel x86 호환과 DEC Alpha 시스템. 다른 CPU들도 리눅스가 지원을 하지만 인텔과 알파 시스템을 제외한 다른 시스템을 이용, Beowulf 시스템을 만드는 것은 나로서는 알지 못한다. 일반적으로, Intel기반의 시스템들은 확장시스템으로 여겨지는데 이는 다양한 소스(Intel, AMD, Cyrix)가 있고 쉽게 구할 수 있기 때문이다. 이와는 달리 DEC Alpha는 성능면에서는 탁월하지만 한정된 소스(DEC)여서 경제적인 가격으로 구하기가 조금 힘들다.

Intel의 "slot 기반" 시스템들이 제한된 소스라는 말이 나오긴 하지만, 아직 시장에서 이 시스템에 관한 것은 아직 결정된 것이 없다.

Intel 기반의 시스템들중에서, Pentium Pro와 PII는 최상의 부동소수 연산능력을 보이고 있고 SMP motherboard를 지원하는 유일한 것이다. 어떤 CPU를 사용할 것인지에 관한 논쟁(1998년 말경에 끝난)-PII는 최상의 클럭 스피드의 반으로 작동을 하고 Pentium Pro는 최상의 클럭 스피드로 작동-이 있다. 대개는 SDRAM를 갖는 PII가 Pentium Pro와 동일한 클럭 스피드로 동작한다고 알려졌다. 여러분의 평가는 달라질 수 있지만, PII의 클럭 스피드가 333MHz로 다가감에 따라 대부분이 PII를 택하였다. 여기에 따른 논쟁은 다음 사이트에서 확인할 수 있다: http://www.tomshardware.com/iroadmap.html http://www.compaq.com/support/techpubs/whitepapaers/436a0597.html

SMP (역자주: Symmetric MultiProcessing)

대칭 다중프로세서 보드는 Beowulf 클러스터에서 일반적으로 많이 쓰인다. 주된 장점으로는 가격 대 성능면에서 앞서고 동일한 보드에서 두 프로세서간의 빠른 통신이 이루어진다. 만일 여러분이 아주 큰 클러스터를 제작하고 싶다면 이는 매우 중요한 점이다. 전체 클러스터에서 이중 CPU를 사용함으로써 여러분은 네트웍 카드와 케이스, 전력공급기, 보드의 수를 반으로 줄일 수 있다. 유일하게 비싼것은 SMP 보드인데 다른 비용의 절감이 이를 극복한다.

만일 여러분이 보드당 한개의 CPU만을 사용한고자 결정한다 하더라도, SMP 서버를 구입하는 것이 가치있는 일일 것이다. 우리의 Topcat 시스템은 세사람이 사용한는데 주노드(master node)에서 사용자들이 그들이 만든 코드를 편집하고 컴파일하고 시험해본다. 주노드의 두개의 CPU를 이용하여 로드평균이 2이상에서 작동하는 것이 일반적이다. (역자주: top명령을 이용하면 로드평균이 나온다.) 주노드는 클라이언트 노드들에게 파일 시스템을 제공해야하기 때문에, NFS 서버는 충분한 CPU 주기를 가지고 그 작업을 수행하는 것이 중요하다. 만일 여러분이 여러분 서버노드가 사용자들에의해 부하가 걸린다면, 여러분은 빠른 SMP의 선택을 고려해야한다.

4.4 Network

Hypercube

Hypercube는 노드와 그 경계를 연결한 네트워크 위상(topology)이다. 100Mbps 네트워크 스위치의 가격하락으로 인해 hypercube는 더이상 경제적인 네트워크 위상이 아니라고 할 수 있다.

10/100 Mbps Switched Ethernet

100 Mbps로 변경된 완전한 2중 이더넷은 Beowulf 시스템의 네트워크로 가장 일반적으로 사용되고, 완전한 망상조직의 네트워크와 거의 동일한 성능을 발휘한다. 네트워크에 연결된 모든 컴퓨터들이 외부와의 접속을 위해 경쟁하고 정보 패킷의 충돌을 일으키는 것과는 달리, 스위치 이더넷은 스위치에 연결된 어떠한 두개의 노드 사이에서도 충분한 대역폭을 제공한다. 여러분의 클러스터를 위해 빠른 이더넷 네트워크 카드를 구입하기 전에, 여러분은 먼저 리눅스 네트워크 드라이버를 다음 사이트에서 확인을 해보는 것이 좋을 것이다. http://www.alternic.net/nic/rfcs/1900/rfc1918.txt.html

간단한 예로, 다섯개의 노드로 이루어진 Beowulf 클러스터는 다음과 같이 나타낼 수 있다.

          Your LAN     |
                       |
                       |    eth0 123.45.67.89 
                       |
                    [node1]  
                       |
                       |
                       |    eth1 10.0.0.1 
         Cluster       |
                       |
                       |
                 -------------
  10.0.0.2     /               \    10.0.0.5
[node2]------ |      SWITCH     | ------[node5]
               \               /
                 -------------
                   |        |
                   |        |
                   |        |
        10.0.0.3   |        |  10.0.0.4
              [node3]      [node4] 

4.5 어떤 리눅스 배포판을 사용할 것인가?

Beowulf 시스템에서 많이 쓰이는 배포판은 레드햇 리눅스이다. 설치가 간단하고 레드햇 FTP 서버 ftp://ftp.redhat.com 이나 다른 미러사이트에서 쉽게 구할 수 있다. 현재의 이 문서는 레드햇 5.2 배포판에 기준하고 있다. 만일 여러분이 데비안이나 슬랙웨어 또는 다른 배포본을 사용하고 있다면 본 저자와 다른 방법으로 할 수 있다.

레드햇 리눅스의 중요한 장점중의 하나는 RPM (RedHat Package Manager)를 이용하여 모든 꾸러미를 설치하고 업그레이드하고 제거하는데 있어서 편리하게 사용할 수 있다는 점이다. PVM (역자주:Parallel Virtual Machine) 과 MPI ( 역자주: Message Passing Interface)와 같은 소프트웨어와 Beowulf 커널과 같은 것도 RPM 형태로 얻을 수 있다.

NOTE: Extreme 리눅스 CD의 원본은 매우 오래되었다. 그 CD에 들어있는 문서들을 제외한 RPM들은 사용해서는 안된다.

4.6 하드웨어의 구입

다음 내용은 어떠한 하드웨어의 구입에도 적용된다. Beowulf를 제작할 때에는 하드웨어 구입이 중복되지 않게 하여야 한다.

상용 하드웨어의 문제점:

비용을 절감하는 좋은 방법 - 166MHz CPU를 구입해서 233MHz로 표시를 바꾼 후, 몇백 달러를 더 받고 팔아라. 또는 낮은 품질의 DRAM을 좋은 품질의 DRAM으로 팔아라. 사업이 상업적 성격 때문에, 사용자들은 "plug and play" 구성을 기대한다. 불행하게도, 233MHz로 변경을 해서 벌 수 있는 돈은 부정직한 하드웨어 판매업자에게는 커다란 기회인 것이다. 돈을 벌 수 있는 또한가지 방법은 품질이 낮은 축전기를 포함하는 메인보드를 제작하는 것이다. 이름이 없는 보드들은 종종 이러한 부품들을 포함하고 있다. 제작은 보드 당 가격을 20-30 달러를 아낄 수 있지만 1, 2년 후면 이 보드는 쓸모없게 된다.

CPU를 오버클럭을 할 수 있고 싼 RAM으로 동작할 수 있고 싼 보드가 잠시동안 작동할 수 있지만, 이 부품들은 작동하지 않을 수 없고 문제를 일으킬 수 있다. 이러한 종류의 부품들의 구입은 여러분이 제품을 다시 하드웨어 판매업자에게 되돌려 주었을 때 판매업자가 유지해야하는 전체 비용의 15%가 여러분에게 할당될 수도 있으며 하드웨어 중복되는 하드웨어 문제를 야기시킬 수 있다.

해결책:

우선 타당한 하드웨어 가격인지를 살펴본다. 소규모 하드웨어 판매업자들이 수년동안 사업을 하지 않았고 다른 모든 요구사항들을 만족시키지 않는 다면 그러한 제품들을 구입하지 않는 것이 좋다. 둘째로, 하드웨어 판매업자에게 적어도 다음 세가지의 사항을 강조하라.

1. CPU와 DRAM에 대해서 3-4년의 품질보증을 확인받으라. 영원한 품질보증이 더욱 좋지만 실제로는 3-4년 후엔, 부품이 생산될지도 모르거나 여러분이 신경을 쓰지 않을지도 모르기 때문에 3-4년이 적당하다. 좋은 품질의 제품을 판매하는 업자라면 품질보증을 할 것이다.

2.만일 하드웨어에 문제가 발생하였을 때 수리비용의 15%를 여러분이 부담해야하는 품질이 나쁜 하드웨어를 판매하는 판매상과 거래하지 마라.

3.하드웨어에 어떠한 문제가 발생하였을 때 그 문제를 해결할 수 있는 기술자가 있는지 판매업자에게 물어봐라. (권위있는 Intel 기술자는 각각의 개인번호를 갖고 있다.) 만일 그렇지 않다면 판매상들은 부품의 정확한 출처를 모르는 것을 판매하게 될 것이다.

마지막으로, 이름없는 메인보드나 비디오카드 네트워크 제어기등의 복제품들을 구입하지 마라. 몇푼의 돈을 아끼면 나중에 수리비가 더 들어갈 것이다. 사실, Beowulf 클러스터의 경우 비용을 절약할 수 있기 때문에 굉장한 매력을 갖고 있다.(즉, 이름없는 NIC 카드를 55달러에 구입할 것인가? 아니면 이름있는 NIC카드를 75달러에 구입할 것인가?)

하드웨어를 구입하는 경우 고려해야할 몇가지 것들이 있다. PC 시장은 표준화된 제품을 생산하고 경쟁을 하지만, 이는 또한 질낮은 부품들이 잘못 알려지고 팔리게 할 수 있다. 구입자여 현명해져라


다음 이전 차례