[클러스터] 당신에게 적합한 클러스터는 무엇인가
당신에게 적합한 클러스터는 무엇인가?
Rawn Shah
LinuxWorld 칼럼니스트
2000년 5월
Rawn Shah는 오늘날 Linux에서 사용 가능한 오픈 또는 폐쇄 클러스터링 솔루션의 미로를 안내하는 전문가이다.
Linux 클러스터링 프로젝트의 수를 세는 것은 실리콘밸리의 창업 회사의 수를 세는 것이나 마찬가지이다. 폐쇄적 환경의 Windows NT와는 달리, Linux에서는 여러 용도와 필요에 따른 클러스터링 시스템의 선택의 폭이 넓다. 그러나 어떤 클러스터링 시스템을 사용해야 하는지 결정하는 것은 쉽지 않다.
한 가지 문제는 클러스터링이라는 용어가 여러 문맥으로 사용된다는 사실이다. IT 관리자가 서버의 사용 가능 시간을 최대화하거나 애플리케이션의 신속한 실행 속도에 중점을 둔다면, 수학자는 서버의 방대한 수치 계산 수행에 더 관심을 둘 것이다. 양 자 모두 클러스터를 필요로 하나 각자는 특성이 다른 클러스터를 원한다.
이 글은 클러스터링의 여러 상이한 형태와 상업적으로 또는 프리웨어로 사용할 수 있는 많은 소프트웨어 중 일부를 다루고 있다. 여기에 열거하는 솔루션이 모두 오픈 소스는 아니라 할지라도, 다수의 소프트웨어는 Linux 소스 코드를 배포하는 공통적인 관례를 따르고 있다. 왜냐하면 클러스터링을 구축하려는 사람들은 시스템 성능을 그들의 필요에 맞게 변경하는 일이 흔하기 때문이다.
하드웨어
클러스터링은 언제나 시스템 간에 하드웨어적으로 연결되어 있는 것을 전제로 한다. 오늘날 가장 많이 사용되는 것은 고속 이더넷 카드와 허브이다. 그러나 고도로 과학적인 것으로 클러스터링을 위해 특수 설계된 다양한 네트워크 인터페이스 카드가 있다.
그런 종류로는 Myricom의 Myrinet, Giganet의 cLAN 그리고 IEEE 1956 standard Scalable Coherent interface(SCI)등이 있다. 이 카드들은 클러스터의 노드 간 대역폭을 높일 뿐만 아니라 지연시간(메시지 전송에 소요되는 시간)을 단축시킨다. 운영의 동기성을 유지하기 위해서 지연시간은 노드 사이의 상태 정보 교환에 매우 중요하다.
Myricom
Myricom은 각 방향으로 1.28 Gbps까지 상호 연결할 수 있는 스위치와 카드를 제공한다. 카드에는 구리와 광 형태의 두 가지가 있다. 구리로 된 LAN 카드는 10 피트의 거리에서 최고 속도로 통신할 수 있으나 60 피트의 거리에서는 속도가 반으로 감소한다. Myrinet은 point to point, 허브 기반 또는 스위치 기반의 네트워크 구성만을 제공하나, 함께 접속되는 스위치 fabric의 수에는 제한이 없다. 스위치 fabric을 추가하기만 해도 노드 사이의 지연시간이 늘어난다. 직접 연결된 두 노드 사이의 평균 지연시간은 5 내지 18 마이크로 초로 이더넷 보다 훨씬 빠르다.
클러스터링의 종류
클러스터의 가장 보편적인 세 가지 유형으로는 고성능의 과학적 클러스터, 로드 밸런싱 클러스터 그리고 고가용성 클러스터가 있다.
과학적 클러스터
첫번째 유형으로는 복잡한 과학적 문제를 해결하기 위한 클러스터를 위해 개발 중에 있는 병렬 프로그래밍 응용프로그램이 있다. 비록 내부적으로 수십만의 별개 프로세서로 구성된 특정한 병렬 슈퍼컴퓨터를 사용하지 않아도, 이는 병렬 연산의 본질이다. 대신에 일군의 단일 혹은 이중 프로세서 PC들을 고속으로 연결하여 사용하는데, 공통 메시지 계층을 사용하여 병렬 애플리케이션을 실행시킨다. 그래서 종종, 또 다른 염가의 Linux 슈퍼컴퓨터의 출현 소식을 듣게 된다. 그러나 사실은 진짜 슈퍼컴퓨터와 동등한 프로세싱 능력을 지닌 컴퓨터의 클러스터로, 양호한 클러스터 구성에 $100,000 이상이 소요된다. 일반 사용자에는 고가일 수 있으나 수 백만 불의 특정 슈퍼컴퓨터에 비하면 저렴한 편이다.
로드 밸런싱 클러스터
로드 밸런싱 클러스터는 비즈니스에 필요한 보다 실용적인 시스템을 제공한다. 이름이 의미하는 것처럼, 이 시스템은 컴퓨터의 클러스터에 가능한 균등하게 프로세싱 로드를 공유한다. 이 로드는 응용프로그램 프로세싱 로드나 균형이 필요한 네트워크 트래픽의 로드일 수도 있다. 네트웍 서버 애플리케이션이 신속히 처리할 수 없을 만큼의 과도한 트래픽을 받는 경우 다른 노드에 있는 서버 애플리케이션으로 트래픽을 전달한다. 이는 또한 각 노드에서 사용할 수 있는 자원의 차이 또는 특정한 네트웍 환경에 따라 최적화되어야 한다.
고가용성 클러스터
고가용성 클러스터는 하드웨어와 소프트웨어의 오류 가능성을 고려하여 클러스터의 가능한 모든 서비스를 유지할 수 있도록 고안되었다. 고가용성 클러스터의 1차 노드에 오류가 발생하면, 기다리고 있던 2차 노드로 대체된다. 2차 노드는 통상 1차 노드의 미러 이미지를 가진다. 그래서 1차 노드를 대체한 2차 노드는 1차 노드와 동일하기 때문에, 사용자의 눈에는 시스템 환경이 일관성을 유지하는 것으로 나타난다.
이 세가지 유형의 클러스터를 잡종 또는 이종으로 섞을 수 있다. 그래서 노드 전반에 사용자의 로드를 균등하게 하는 고가용 클러스터를 만들 수 있다. 마찬가지로, 프로그램된 응용프로그램과는 별도로 노드 사이에서 로드 밸런싱을 수행하는 병렬 클러스터를 만들 수도 있다. 클러스터링 시스템 자체는 사용 중인 소프트웨어나 하드웨어의 종류에 독립된 것이지만, 시스템을 효율적으로 운영한다는 측면에서 하드웨어 연결은 중추적인 역할을 한다.
Giganet
Giganet은 그들의 cLAN 카드와 스위치에, Linux 플랫폼을 위해 Virtual Interface(VI) 아키텍처 카드를 제공한 최초의 벤더이다. VI 아키텍처는 클러스터를 생성을 위하여 인텔이 추진해 온 플랫폼 중립적인 소프트웨어와 하드웨어 시스템이다. 그것은 서버 사이에 데이터를 직접 교환하기 위하여 IP 대신에 자체 네트워크 통신 프로토콜을 사용하며, 원래부터 WAN 라우팅을 위한 시스템이 아니다. VI의 미래는 시스템 I/O 그룹에서 진행 중인 작업에 달려 있다. 이 시스템 I/O 그룹은 인텔이 주도하는 Next-Generation I/O 그룹과 IBM과 Compaq이 이끄는 Future I/O 그룹이 합병한 것이다. 현재 Giganet 제품은 노드 간에 1 Gbps의 단일 방향 통신을 제공하며, 최소 지연시간은 7 마이크로 초이다.
IEEE SCI
IEEE 표준 SCI는 지연시간이 훨씬 짧으며(2.5 마이크로 초 미만) 각 방향에서 초 당 400MB(3.2 Gbps)의 속도로 실행된다. SCI는 이더넷의 스타 토폴로지와 달리 링 토폴로지 기반의 네트워킹 시스템이다. 노드 사이에 상당량의 통신을 빠르게 할 수 있는 것은 이 때문이다. 노드 사이에 많은 링을 보유하는 토러스 토폴로지 네트워크는 한층 더 유용하다. 2차원 토러스는 모든 열과 행의 링 네트워크를 m x n 그리드로 나타낼 수 있다. 3차원 토러스도 이와 유사해서 모든 레벨에 링을 보유하고 있는 노드의 3D 입방 그리드라고 할 수 있다. 병렬 시스템의 대량 슈퍼컴퓨팅에 이것을 사용함으로써 수십만 개의 노드 사이에 상대적으로 가장 빠른 경로를 제공한다.
이들 시스템이 대부분 지니고 있는 제한 요소는 운영 체제나 네트워크 시스템이 아니라 서버의 내부 PCI 버스 시스템이다. 거의 모든 데스크탑 PC와 대개의 저가형 서버에 공통적으로 사용되는 기본 32 비트, 33 MHZ PCI는 초 당 133 MB(1 Gbps)만을 제공하며 카드의 기능을 방해한다. Compaq Proliant 6500과 IBM Netfinity 7000 시리즈 같은 일부 값 비싼 고급 서버는 4 배나 빠른 속도로 실행되는 64 비트, 66 MHZ 카드를 가지고 있다. 불행하게도 많은 조직체에서 저가형 시스템을 사용하기 때문에 대부분의 벤더들이 더 많이 저가형 PCI 카드를 만들고 판매하는 모순이 발생한다. 64 비트, 66 MHz PCI의 특별한 네트워크 카드도 있지만 훨씬 고가로 판매된다. 예를 들면 인텔은 그와 같은 종류의 고속 이더넷 카드를 $400 내지 $500에 제공하는데 이는 보통 PCI 카드의 거의 5 배에 해당되는 가격이다.
과학적 클러스터
일부 병렬 클러스터의 대역폭이 높고 지연시간이 짧은 것은 이 클러스터들이 주로 TCP/IP 같은 네트워크 프로토콜을 사용하지 않기 때문이다. 비록 인터넷 프로토콜이 광범위한 지역의 네트워킹에 적합해도, 노드가 서로에게 알려진 폐쇄 네트워크 클러스터에 불필요한 오버헤드를 포함하고 있다. 대신에 이들 시스템 일부는 노드 사이에 direct memory access(DMA)를 사용하는데, 이것은 단일 시스템 내에서 그래픽 카드와 주변 장치가 작동하는 방식과 유사하다. 따라서 어떤 노드의 어떤 프로세서도 클러스터를 가로질러 분산된 공유 메모리에 직접 접근할 수 있다. 또한 노드 간 통신을 위하여 로우 오버헤드 메시징 시스템(low-overhead massaging system)을 사용할 수 있다.
Message Passing Interface(MPI)는 병렬 클러스터 시스템 중에서 메시지 계층을 구현한 가장 보편적인 것이다. MPI에는 여러 가지 변형된 종류가 있다. 그러나 어떤 종류라 하더라도, 노드를 통해 코드 세그먼트를 할당하는 방식을 수작업으로 하지 않고 병렬 애플리케이션을 개발할 수 있도록 공통 프로그래밍 인터페이스를 제공한다. 예를 들면 Beowulf 시스템은 공통 프로그래밍 인터페이스로 MPI를 사용한다.
어떤 고성능의 클러스터링 패키지의 사용 여부 결정이 어렵다. 패키지는 대부분 유사한 서비스를 제공한다. 따라서 원하는 컴퓨터의 특성이 결정 요인이 된다. 그러나 아직은 이 시스템에 대한 연구 작업이 사용자의 필요를 만족시키기에는 미흡하다. 따라서 소프트웨어 사용에는 특별한 도움과 클러스터링 패키지 개발자의 협력이 필요하다.
Beowulf
Linux 클러스터링에 대하여 질문 했을 때, 많은 사람들이 가장 먼저 대답하는 것이 Beowulf이다. Beowulf는 가장 많이 알려진 Linux의 과학적인 소프트웨어 클러스터링 시스템이다. 사실 Beowulf라 부르는 단일 패키지는 없다. 대신에 Beowulf는 Linux 커널에서 실행되는 일련의 공통 소프트웨어 도구에 적용되는 용어이다. Beowulf는 Message Passing Interface(MPI) 또는 Parallel Virtual Machine(PVM)와 같은 잘 알려진 소프트웨어 메시징 API를 Linux 커널에 맞게 조정한 것이다. 그래서 여러 이더넷 인터페이스, 고성능 네트워크 드라이버를 접합하여 가상 메모리 관리 프로그램과 Distributed interprocess communication(DIPC)로 변경한 것이다. 공통의 글로벌 프로세스 식별자 공간을 이용하면 DIPC 매커니즘 사용이 어느 노드에서도 프로세스에 접속할 수 있다. Beowulf는 또 노드 사이에 광범위한 하드웨어 커넥티비티 옵션을 제공한다.
Beowulf는 Linux 제품 중 최고 성능의 클러스터링이라 할 수 있는데, 이는 Beowulf의 광범위한 사용과 지원 때문이다. 이 주제에 관한 많은 문서와 책자가 나와 있다. Beowulf와 일부 클러스터링 시스템 사이의 차이는 실질적인 차이일 수도 있고 단지 제품명의 차이에 불과할 수도 있다. 예를 들면 Alta Technologies의 AltaCluster는 이름만 다를 뿐 Beowulf 시스템이다. 독일 기업인 ParTec AG 같은 일부 벤더는 Beowulf의 변형 모델에 다른 매니지먼트 인터페이스와 통신 프로토콜을 포함한 것이다.
Giganet cLAN
Giganet은 사용자 하드웨어 기반의 솔루션을 제공하며 과학적 클러스터의 노드 간 통신을 위하여 IP 이외의 프로토콜을 사용한다. 앞에서 언급한 것처럼 Virtual interface 프로토콜은 IP와 같은 프로토콜의 오버헤드 상당 부분을 제거하여 서버 사이에 보다 빠른 통신을 지원한다. 게다가 하드웨어 시스템은 기가비트 속도로 작동하여 지연 시간 짧으며, 256 노드까지의 과학적 클러스터의 구성에 적합하다. 벤더는 MPI와 Beowulf와 유사한 시스템에서 실행되는 많은 병렬 응용프로그램을 지원한다.
Giganet은 Beowulf와 동일한 핸디캡을 지니고 있다. 다시 말해서 서버 사이에 네트워크 패킷을 모니터하고 할당하는 응용프로그램을 작성하지 않는 한, 네트워크 부하 분할 시스템으로 사용할 수 없다.
Legion
Legion은 진정한 마이크로컴퓨터 시스템을 구성하려는 시도이다. Legion은 각 노드가 독립적인 시스템으로 되어 있는 클러스터이다. 그러나 시스템 전체는 사용자에게 단일한 컴퓨터로 보여진다. Legion은 수 백만의 호스트와 수 조의 소프트웨어의 객체로 구성된 세계적인 단일 컴퓨터를 지원하도록 설계되었다. Legion 안에서 사용자들은 공동 연구 그룹을 만들 수 있다.
Legion은 고성능의 병렬 작업, 로드 밸런싱, 분산 데이터 관리 및 에러에 견디는 능력을 제공한다. Legion은 에러에 견디는 능력 관리 및 멤버 노드 전반에 걸친 동적 구성을 통해 고가용성을 지원한다. Legion은 또 새로운 발전이나 개발이 있을 때마다 몇 번이고 대체하거나 갱신할 수 있는 확장 가능한 코어를 가지고 있다. 이 시스템은 단일한 모놀리식 제어를 받지 않기 때문에 어떤 수의 조직체라도 관리할 수 있으며, 각자 자율적인 부분을 지원할 수 있다. Legion API는 내장 병렬 작업을 통해 고성능의 연산을 제공한다.
Legion은 자신의 API 라이브러리를 사용할 수 있도록 특별히 작성된 소프트웨어를 필요로 한다. Legion은 사용자 컴퓨터의 운영 체제 상단에 앉아 지역 리소스와 분산 리소스를 처리한다. Legion은 자동으로 리소스 스케줄링과 보안을 처리한다. 또한 시스템 내에서 실현 가능한 수 많은 객체의 기술과 연결을 위하여 컨텍스트 공간을 관리한다. 그러나 각 노드에 대해 특권을 가진 시스템 관리자만 Legion을 실행시킬 수 있는 것은 아니고 특별한 권한이 없는 사용자 계정의 범위 내에서도 실행될 수 있다. 이렇게 해서 Legion 사용자와 노드의 융통성이 증가된다.
Cplant
Sandia National Labs의 Computational Plant는 TeraFLOP(수 조의 부동 소수점 운영) 계산을 목적으로 하는 대규모의 병렬 클러스터이며 상용 컴포넌트 위에 구축된 것이다. 전체 시스템은 여러 가지 목적(계산, 디스크 I/O, 네트워크 I/O, 서비스 관리)을 위해 파티션된 Scalable Units로 구성되어 있다. 클러스터의 각 노드는 파티션 서비스를 제공하는 사용자 개발의 커널 레벨 모듈을 지닌 Linux 박스이다. 각 파티션의 기능은 커널 레벨 모듈을 로드하고 업로드하여 수정할 수 있다.
프로젝트는 3 단계로 진행되며, 128 433-MHZ Alpha 21164 기반의 시스템 프로토타입에서 출발한다. 각 단계는 192 MB의 RAM과 2 GB 드라이브에서 시작하며 Myrinet 카드 및 8 포트의 SAN 스위치와 상호 연결된다. 1 단계에서는 이것이 500 MHZ에서 실행되는 400 21164 기반의 워크스테이션으로 확대되었다. 또한 192 MB의 RAM은 기억장치 없이 1 입방의 하이퍼큐브 속의 16 포트 SAN 스위칭에 연결되었으며, 현재는 Red Hat 5.1에서 운영되고 있다. 현행의 2 단계는 500 MHZ에서 실행되는 592 DEC 21264 기반의 시스템으로, 256 MB의 RAM을 보유하며 드라이브는 없다. 각 노드는 64 비트로 33 MHZ Myrinet 카드는 하이퍼큐브 입방체 속의 16 포트 스위치와 연결되어 있다.
Cplant에서 실행되는 응용프로그램에는 스파스 선형 시스템의 해결, 유체 역학과 구조 역학에서의 연산 시스템 최적화, 분자 역학의 시뮬레이션, 선형 구조 역학을 위한 유한 요소 양상 분석 그리고 병렬 응용프로그램을 위한 동적인 로드 밸런싱 라이브러리가 포함되어 있다.
JESSICA 2
홍콩대학의 시스템 연구 그룹은 Java-Enabled Single System Image Computing Architecture(JESSICA)라 불리는 자바 기반의 클러스터를 가지고 있다. 이 JESSICA는 단일 시스템 이미지의 환영을 획득하기 위한 미들 웨어 계층으로 활동한다. 이 계층은 distributed shared memory(DSM) 시스템을 통해 각 노드에서 실행되는 모든 스레드 중 단일한 글로벌 스레드 스페이스이다. 이 프로젝트에는 ThreadMark DSM이 이용되고 있으나 결국 그들 자신이 만든 것으로 대체될 것으로 보이며, 그것은 JiaJia Using Migrating-home Protocol(JUMP)로 알려져 있다. 그들은 클러스터의 노드 50개를 관리하기 위하여 사용자 정의된 자바 기반의 ClusterProbe를 사용한다.
PARIS
프랑스 IRISA 연구소의 Programming pArallel distRibuted systems for large scale numerical simulation applicationS(PARIS)에서는 Linux 서버의 클러스터 구성을 여러 도구를 제공한다. 이 프로젝트는 다음과 같은 세 개의 구성 요소로 되어 있다. 즉 클러스터를 위한 리소스 관리 소프트웨어, 병렬 프로그래밍 언어를 위한 런타임 환경 그리고 분산 수치 시뮬레이션의 구성 요소이다.
리소스 관리 소프트웨어에는 메모리, 디스크 및 프로세서 공유를 위한 Globelins 분산 시스템과 Duplex & Mome 분산 메모리 공유 시스템이 들어 있다.
로드 밸런싱 클러스터
로드 밸런싱 클러스터는 네트워크를 분산하거나 또는 다중 노드 전반의 프로세싱 로드를 계산한다. 노드에서 실행되는 단일한 병렬 프로그램의 존재 여부에 따라 양자가 구별된다. 대부분의 경우, 이 유형의 클러스터의 각 노드 서버는 별도 소프트웨어를 실행하는 독립된 시스템이다. 그러나 노드 사이에는 공통의 관계가 존재하는데, 그 관계는 노드 사이의 직접 통신의 형식으로 존재하거나 각 노드의 로드를 제어하는 중앙 로드 밸런싱 서버를 통해서 존재한다. 보통은 로드를 분산하기위한 특정 알고리즘이 사용된다.
네트워크 트래픽 로드 밸런싱은 클러스터에 트래픽 유입을 검사하고 이 트래픽을 각 노드에 배분하여 적절히 처리하도록 하는 프로세스이다. 이것은 Web이나 FTP 서버 같은 강력한 네트워크 응용프로그램에는 최선이라 할 수 있다. 로드 밸런싱 네트워크 애플리케이션 서비스는 각 노드의 현재 로드를 검사하여 어떤 노드가 이 로드를 맡을 수 있는지 판단할 수 있는 클러스터 소프트웨어를 필요로 한다. 데이터 분석과 같은 직렬 프로세싱 작업이나 배치 프로세싱 작업에는 이것이 최선이다. 이런 시스템은 하드웨어나 특정 노드의 운영 체제 특징을 고려해서 구성된다. 다시 말해 클러스터에서 균일한 노드는 불필요하다.
Linux Virtual Server
Linux Virtual Server 프로젝트는 유입되는 TCP/IP 트래픽을 위한 로드 밸런싱 시스템을 구축하는 다수의 커널 패치를 구현했다. LVS 소프트웨어는 트래픽의 유입을 검사하고, 로드 밸런싱 알고리즘에 입각해서 그 트래픽을 클러스터 역할을 하는 일련의 서버로 보낸다. 이렇게 해서 웹 서버와 같은 네트워크 응용프로그램이 많은 사용자를 지원하는 노드의 클러스터에서 실행될 수 있다.
LVS는 로드 밸런싱 서버와 동일한 LAN에 직접 부가된 클러스터 노드를 지원한다. 또한 IP 패킷을 터널링하여 원격지 서버와 연결할 수도 있다. 후자의 방법에서는 IP 패킷 내의 평형 요청을 요약하여 로드 밸런싱 서버에서 원격지 클러스터 노드로의 직접 전송이 필요하다. LVS가 원격지 웹 사이트로 로드 밸런싱을 지원한다 하더라도, LVS가 사용하는 로드 밸런싱 알고리즘은 가상 클러스터에서 널리 쓰이고 있는 웹 서버에는 비효율적이다. 따라서 웹 서버가 로드 밸런싱 서버와 동일한 LAN에 있을 때 LVS는 최고의 기능을 발휘한다.
로드 밸런싱을 위해 하드웨어 수준에서 구현한 시스템을 이용하면 Linux와 같은 일반 목적의 운영 체제에서보다 실행 속도가 훨씬 빨라진다. 여기에는 Alteon과 Foundry의 하드웨어가 포함된다. 그리고 이들 하드웨어에는 순수 소프트웨어보다 훨씬 빠른 속도로 하드웨어에서 트래픽 관리를 수행하는 최소 운영 체제와 하드웨어 로직이 있다. 그것들은 보통 $10,000 이상이나 가격은 여러 가지이다. 간단하고 저렴한 솔루션을 원한다면, 메모리 용량이 높은(256 MB) 중간 정도의 Linux 머신이면 훌륭한 로드 밸런싱 시스템이라 할 수 있다.
TurboLinux TurboCluster와 enFuzion
TurboLinux는 원래 Linux Virtual Server 프로젝트에서 개발된 커널 패치에 기반을 둔 TurboCluster라 불리는 제품을 가지고 있다. 따라서 TurboLinux에는 원래의 프로젝트가 지녔던 것과 동일한 이득과 단점이 있다. 또한 TurboLinux는 클러스터의 활동을 모니터링하는 도구를 개발하여 제품의 유용성을 더해준다. 선도적인 벤더의 상업적 지원도 많은 사이트에게는 큰 매력이다.
EnFuzion은 로드 밸런싱의 자동화와 노드 사이의 리소스 공유를 지원하며, 작업이 실패하면 자동적으로 스케줄을 재작성 한다.
EnFusion은 TurboLinux에서 곧 출시할 과학적 클러스터링 제품으로서 Beowulf에 기반한 것이 아니다. 그러나 enFusion은 수 백의 노드와 Linux 이외의 다른 플랫폼을 지원하는데, 여기에는 Solaris, windows NT, HP-UX, IBM AIX, SGI lrix 그리고 Tru64가 포함된다. EnFusion은 기존의 어느 소프트웨어에서도 실행시킬 수 있기 때문에 흥미롭다 할 수 있으며 또한 사용자 병렬 응용프로그램을 환경에 맞추어 작성할 필요도 없다.
Platform Computing의 LSF Batch
클러스터 컴퓨팅 분야의 베테랑인 Platform Computing은 자신의 Load-Sharing Facility(LSF)를 Linux 플랫폼에 제공하고 있다. LSF Batch를 이용하면 중앙 제어 장치가 클러스터의 어느 노드 수에서도 작업이 실행되도록 스케쥴한다. 이는 TurboLinux enFusion 소프트웨어와 유사한 개념으로 어떤 유형의 응용프로그램도 노드에서 실행이 가능하도록 지원한다.
이 방법으로 클러스터 크기를 탄력적으로 조절할 수 있다. 왜냐하면 노드 수나 또는 응용프로그램을 실행하는 노드 자체를 특별히 선택할 수 있기 때문이다. 따라서 64 노드의 클러스터를 보다 적은 논리적 클러스터로 분리할 수 있으며, 각각은 자신의 배치 응용프로그램을 실행한다. 게다가 그것은 응용프로그램이나 노드에 이상이 발생하면 다른 서버에서 작업할 수 있도록 스케줄링 할 수 있다.
Platform의 제품은 Windows NT는 물론이고 주요 Unix 시스템에서 실행된다. 현 시점에서는 오직 LSF Batch 제품만 Linux에 포팅되어 있다. 하지만 결국에는 LSF Suite 컴포넌트의 나머지들도 포팅될 것이다.
Resonate Dispatch 시리즈
Resonate는 Linux Virtual Server와 유사한 소프트웨어 기반의 로드 밸런싱 접근법을 가진다. 그러나 Resonate는 보다 많은 특징과 보다 나은 로드 밸런싱 알고리즘을 지원한다. 예를 들면 Resonate를 이용해서 해당 노드에 대한 현재의 시스템 로드를 파악하는 에이전트를 각각의 노드에서 로드 할 수 있다. 그러면 로드 밸런싱 서버가 노드 각각의 에이전트를 검사하여 어느 노드가 가장 적게 로드 되었는지 파악하여 새로운 트래픽을 그 곳으로 보낸다. 추가로, Resonate는 또한 지역적으로 분산된 서버를 itsr Global Dispatch 제품과 함께 보다 효율적으로 지원할 수 있다.
Resonate는 Red Hat Linux에서 소프트웨어를 철저히 테스트했다. 그러나 다른 배포판이라 실행이 불가능한 이유는 없다. Resonate 소프트웨어는 Solaris, AIX, Windows NT를 포함한 다른 여러 플랫폼에서 실행될 수 있으며, 마찬가지로 혼합 환경에서 로드 밸런스 할 수 있다.
MOSIX
MOSIX는 프로세쌍는데, 이는 대칭 멀티프로세서 시스템이 여러 프로세서 사이에서 응용프로그램을 교환하는 방식과 유사하다.
MOSIX는 응용프로그램 레벨에서는 완전히 투명하기 때문에 다시 컴파일하거나 새로운 라이브러리에 다시 링크할 필요가 없다. 왜냐하면 모든 것은 커널 레벨에서 이루어지기 때문이다. 여러 가지 방법으로 다중 사용자 공유 클러스터로 구성할 수 있다. 클러스터의 일부와 모든 서버를 합쳐 하나의 풀을 만들 수 있다. 혹은 MOSIX는 여러 서브 클러스터로 파티션되어 각각은 다르게 사용될 수 있다. Linux 워크스테이션은 전 시간이나 부분 시간 베이스로 클러스터의 일부이거나 혹은 단지 배치 작업 재출자일 수도 있다. 부분 시간 클러스터 노드로서의 워크스테이션은 휴식 중인 클러스터의 프로세싱 능력을 증가하기 위하여 사용되기도 한다. 클러스터는 또한 큐를 통해 배치 프로세싱이 수용되는 배치 모드에서만 사용되기도 한다. 그렇게 되면 데몬이 작업을 인수하여 클러스터 노드로 전송하여 처리되도록 한다.
MOSIX는 Linux 커널의 핵심 부분을 변경하였기 때문에, 시스템 수준의 프로그램 실행이 불가할 수도 있다는 부정적인 면이 있다.
MOSIX는 기업에 맞는 클러스터링 환경 조성의 옵션을 제공하며, 추가로 고성능의 과학적 연산을 제공한다. 서버와 워크스테이션의 놀고 있는 리소스를 이용해서 MOSIX가 신속하고 효율적인 응용프로그램을 작성하여 실행할 수 있다. MOSIX는 멀티플 서버에 접속하여 동적으로 클러스터의 크기를 조정하고 로드 밸런싱 규칙을 변경할 수 있기 때문에, 고도의 서버 가용성을 제공한다. MOSIX는 Linux 커널의 핵심 부분을 변경하였기 때문에, 시스템 수준의 프로그램 실행이 불가할 수도 있다는 부정적인 면이 있다. MOSIX는 또 단일 서버 주소에 의지하는 소켓 접속을 사용하는 네트워크 응용프로그램의 경우, 제한 사항이 많다. 이것은 네트워크 응용프로그램이 서버 노드에서 실행하기 시작하면, IP 주소가 소켓에 묶여 있는 한 그 노드에서 실행을 계속해야 한다는 것을 의미한다. 그러나 MOSIX가 이송 소켓에서도 작동한다는 것은 분명하다. 따라서 이것이 하나의 논쟁 거리가 될 수도 있다.
고가용성 클러스터
High-availability(HA) 클러스터는 가능한 한 오래 서버 시스템이 작동하는데 중점을 둔다. 이 클러스터는 멀티플 시스템에서 실행되는 노드와 서비스를 중복하여 가지고 있어서 서로가 서로를 추적할 수 있다. 한 노드가 고장 나면 둘째 노드가 몇 초 이내에 고장 난 노드의 임무를 떠맡는다. 따라서 사용자 측에서 보면 시스템이 다운이 되지 않는다.
일부 HA 클러스터에서는 노드 전반에 걸쳐 응용프로그램을 중복하여 유지한다. 따라서 한 노드가 고장 날 경우에도 사용자의 응용프로그램은 계속 실행된다. 실행 중인 응용프로그램은 수 초 내에 다른 노드로 이송되기 때문에 사용자는 응답이 지연된다. 그러나 이와 같이 응용프로그램이 중복되는 경우에는 소프트웨어가 클러스터를 인식하고 노드 고장 시에의 대처방안을 계획해야 한다. 그러나 현재 Linux에서는 불가능하다. 이유는 Linux 시스템에 HA 클러스터링이 표준화되어 있지 않고, 응용프로그램 개발자들이 클러스터를 인식하는 소프트웨어를 구성하기 위하여 사용할 수 있는 공통 API가 없기 때문이다.
HA 클러스터는 로드 밸런싱을 수행할 수는 있으나, 1차 서버가 작업할 때 2차 서버는 쉬게 한다. 하드웨어가 조금 다르다 하더라도, 2차 서버는 보통 운영 체제 준비 당시의 1차 서버의 미러이다. 2차 노드는 1 차 노드가 계속 작동 중인지 알기 위하여 모니터링과 경계를 게을리하지 않는다. 1 차 노드가 응답이 없어 타이머가 멈춰 서면, 2차 노드가 네트워크와 시스템을 인수한다(Linux의 경우는 IP 호스트 명과 주소).
불행하게도 이 분야에 있어서 Linux는 아직 완벽하지 못하다. 다행히도 유명한 벤더들이 가능한 한 빨리 고가용성 클러스터를 만들기 위하여 최선을 다하고 있다. 기업체에서 사용하는 서버에는 고가용성이 공통적으로 요구되는 특징이기 때문이다.
Linux-HA 프로젝트
Linux의 High-Availability 프로젝트는 공동 개발 노력을 통해 Linux가 신뢰성, 이용 가능성 그리고 유용성을 촉진하도록 고가용성 솔루션을 제공하는 것을 목적으로 하고 있다. 이것은 고가용성 클러스터라는 문제에 있어 Solaris, AIX 그리고 HP/UX 같은 선도적인 Unix 시스템으로서의 Linux가 경쟁력을 갖추고자 하는 시도이다. 따라서 이 프로젝트의 목표는 2001 년까지 애널리스트 그룹의 D.H. BROWN이 Unix 클러스터링 비교 보고서(http://www-106.ibm.com/developworks/linux/library/)에서 명시한 수준의 기능을 확보하는 것이다.
이 프로젝트는 노드 사이의 동계와 고장 난 노드의 IP 주소를 인수할 수 있는 소프트웨어를 가지고 있다. 노드가 고장 나면, Fake Redundant IP 소프트웨어 패키지를 사용, 고장 난 노드의 주소를 활동 중인 노드에 부가하여 임무가 계속될 수 있도록 한다. 따라서 고장 난 노드는 밀리초 내에 자동적으로 교체된다. 노드 사이에 전용 네트워크 링크가 없는 한, 실제 사용의 편이를 위하여 동계는 보통 수 초 동안만 유지된다. 그 점에서 고장 난 시스템에서 실행중인 사용자 응용프로그램은 새 노드에서 다시 시작해야 한다.
클러스터링은 어디에나 있다
Linux에 사용할 수 있는 클러스터링은 광범위하게 선택할 수 있다. 동시에 이 프로젝트의 몇몇은 비상업적이고 실험적이라고까지 말할 수 있다. 이 프로젝트가 학계나 조직체를 위해 문제를 제기하지 않는다 하더라도, 대기업은 전형적으로 유명한 벤더에서 상업적으로 지원하는 플랫폼을 선호한다. IBM, SGI, HP 그리고 SUN과 같은 벤더는 Linux에 과학적 클러스터를 구성할 수 있는 제품이나 서비스를 제공하는데, 이것은 대중성과 다량의 서버 장비를 팔 수 있는 가능성 때문이다. 일단 기업체에서 다른 형태의 클러스터링을 신뢰하게 되면, 동일한 서버 벤더는 오픈 소스 클러스터링 솔루션 중심의 자사 제품을 생산할 것이다.
서버 플랫폼으로서의 Linux의 중요성은 대형 서버와 서버의 클러스터를 지원할 수 있는 능력에 달려 있다. 그것이 보다 높은 수준에서 Linux가 SUN, HP, IBM의 Unix 서버나 다른 서버와 경쟁할 수 있는 지렛목이다. 비록 Windows NT와 2000 이 Linux만큼 클러스터를 지원하지는 못한다 하더라도, HA 클러스터링과 클러스터를 인식하는 응용프로그램을 구축할 수 있는 API가 공식적으로 이용 가능하기 때문에 Windows NT와 2000은 여전히 승산이 있다.
클러스터를 구성하고자 하면 반드시 이들 가능성을 검토하고 자신의 필요와 비교해보아야 한다. 그러면 여러분이 완성하고자 하는 것이 완전히 해결되지 않고 있거나 또는 이미 해결되어 있음을 알게 될 것이다. 어느 쪽이든 많은 기업체들은 어려운 계산 능력이 있고 다수의 웹 페이지에 이용할 수 있는 Linux 시스템의 클러스터에서 응용프로그램을 실행하기를 원한다. 클러스터링은 Linux에서 성공리에 테스트를 완료한 기업용 시스템이다. 새로운 클러스터가 출현해도 다양한 선택을 제공한다는 점이 Linux가 Windows NT와 같은 다른 시스템에 대항할 수 있는 강점이다.
필자소개
Rawn Shah는 아리조나 턱손에서 프리랜스 컨설턴트로 일하고 있다.