-
1990년대 초반 이후에 컴퓨터 시스템 분야에서는 고가의 고성능 서버나 슈퍼컴퓨터 대신에 네트워크에 접속된 다수의 컴퓨터들(PC, 워크스테이션, 다중프로세서 시스템)을 통합하여 거대한 병렬 컴퓨팅 환경을 구축하는 연구들이 활발히 진행되었습니다. 이러한 시스템 설계 개념의 도입 배경은 다음과 같습니다.
- 대부분의 컴퓨터들에서는 프로세서들이 유휴 사이클(idle cycle)을 많이 보내며 작업을 수행하지 않습니다.
- 고속 네트워크의 개발로 인해 컴퓨터들 간의 통신 시간이 크게 단축되었습니다.
- 컴퓨터의 주요 구성 요소(프로세서, 기억장치 등)의 고속화와 집적화로 인해 PC 및 워크스테이션의 성능이 대폭 향상되었습니다.
- 슈퍼컴퓨터 및 고성능 서버의 가격이 여전히 매우 높은 상태입니다.
개인이나 조직이 소유한 컴퓨터들은 실제 작업을 수행하는 시간보다도 유휴 상태로 보내는 시간이 훨씬 더 많다는 사실이 알려져 있습니다. 다시 말해, 프로세서의 이용률은 낮은 편입니다. 이에 따라 컴퓨터들을 네트워크로 연결하여 병렬 처리 시스템의 노드로 활용하여 유휴 사이클을 유용하게 활용하고자 하는 아이디어가 클러스터 컴퓨터의 개발 동기가 되었습니다.
클러스터 컴퓨터의 기본 구조
클러스터 컴퓨터는 독립적인 컴퓨터들이 네트워크를 통해 상호 연결되어 하나의 통합된 컴퓨팅 자원으로 작동하는 병렬 처리나 분산 처리 시스템의 형태입니다. 클러스터 컴퓨터의 각 노드는 단일 프로세서 시스템이나 다중 프로세서 시스템으로 구성될 수 있으며, 각각은 기억장치, I/O 장치 및 운영체제(OS)를 가지고 있습니다. 이러한 컴퓨터들은 하나의 캐비닛에 통합되어 있을 수도 있고, 분리된 상태로 LAN을 통해 연결될 수도 있습니다. 클러스터 컴퓨터는 여러 독립적인 컴퓨터들이 상호 연결되어 구성되지만, 사용자에게는 하나의 시스템으로 보이도록 설계되어야 합니다.
클러스터 컴퓨터는 다음과 같은 구성 요소로 이루어집니다.
- 노드 컴퓨터(PC, 워크스테이션, SMP)
- 운영체제(OS)
- 고속 네트워크
- 네트워크 인터페이스 하드웨어
- 통신 소프트웨어
- 클러스터 미들웨어(단일 시스템 이미지 및 시스템 가용성 지원)
- 병렬 프로그래밍 환경 및 도구(병렬 컴파일러, PVM, MPI 등)
- 직렬, 병렬 또는 분산 응용 프로그램들
클러스터 노드들은 통합된 컴퓨팅 자원으로 작동할 수도 있고, 각각 독립적인 컴퓨터로 사용될 수도 있습니다. 네트워크 인터페이스 하드웨어는 클러스터 노드들 간에 데이터 패킷을 송수신하기 위한 기능을 수행합니다. 통신 소프트웨어는 클러스터 노드들 간 또는 외부와의 빠르고 신뢰성 있는 통신 메커니즘을 제공합니다.
클러스터 컴퓨터의 분류
클러스터 컴퓨터의 분류에는 다양한 형태가 있습니다. 첫 번째로, 노드의 하드웨어 구성에 따라 클러스터 컴퓨터를 분류할 수 있습니다. 이에는 PC 클러스터(COPs), 워크스테이션 클러스터(COWs), 그리고 다중프로세서 클러스터(CLUMPS)가 있습니다. 이 중 CLUMPS는 가장 큰 규모의 클러스터를 구성하는 방법으로 알려져 있습니다.
두 번째로, 클러스터 컴퓨터는 노드의 내부 하드웨어 및 운영체제(OS)의 동일성 여부에 따라 분류됩니다. 동일형 클러스터는 모든 노드가 유사한 하드웨어 구조와 동일한 OS를 가지고 있는 반면, 혼합형 클러스터는 노드들이 서로 다른 구조와 하드웨어 부품, 그리고 OS를 가지고 구성됩니다. 혼합형 클러스터는 미들웨어 및 통신 인터페이스 구현이 더 복잡해지는 특징을 가지고 있습니다.
동일형 클러스터는 Linux 클러스터, Solaris 클러스터, NT 클러스터, AIX 클러스터, Digital VMS 클러스터, HP-UX 클러스터, Microsoft Wolfpack 클러스터 등의 이름으로 불립니다.
클러스터 컴퓨터는 인터넷과 같은 공공 네트워크나 Myrinet과 같은 사설 네트워크를 통해 노드들을 연결할 수 있습니다. 공공 네트워크를 사용하는 개방형 클러스터는 외부 사용자도 접속하고 이용할 수 있는 반면, 사설 네트워크를 사용하는 폐쇄형 클러스터는 외부와 차단되어 있습니다.
개방형 클러스터는 메시지 기반 통신을 사용해야 하며, 다양한 통신 환경을 지원해야 하기 때문에 통신 오버헤드가 높을 수 있습니다. 또한 통신 채널이 안전하지 않고 보안이 보장되지 않으므로 클러스터 내부 통신의 보안을 위해 추가 작업이 필요합니다. 그러나 구축은 용이하며 하드웨어 추가가 거의 필요하지 않고 클러스터링을 위한 소프트웨어만 설치하면 됩니다.
반면, 폐쇄형 클러스터는 외부 네트워크와 분리된 통신 설비를 사용하여 구성됩니다. 이 방식은 다양한 통신 기술을 사용하여 통신 대역폭과 보안성을 높일 수 있습니다. 노드 간 통신은 공유 기억장치, 공유 디스크, 메시지 등 다양한 수단으로 이루어질 수 있으며, 통신 보안이 보장되어 데이터 전송이 안전하게 이루어질 수 있습니다. 또한 외부 트래픽에 영향을 받지 않아 통신 지연이 줄어들며, 구현 비용이 많이 드는 편이지만 외부 통신망과의 접속은 특정 노드를 통해서만 가능합니다.
마지막으로, 클러스터는 각 노드의 소유권에 따라 전용 클러스터와 비전용 클러스터로 분류될 수 있습니다. 전용 클러스터는 특정 사용자가 노드 컴퓨터를 별도로 소유할 수 없으며, 모든 자원이 공유되어 전체 클러스터를 통해 병렬 컴퓨팅이 수행됩니다. 반면에 비전용 클러스터는 각 사용자가 특정 노드 컴퓨터에 대한 소유권을 가지고 사용할 수 있으며, 큰 응용을 병렬로 처리하기 위해 클러스터 전체 또는 일부 노드를 사용합니다. 이 경우 프로세서를 사이클 스틸링 방식으로 이용하게 됩니다. 비전용 클러스터는 사용자와 원격 사용자 사이에 공유 자원에 대한 경합이 있을 수 있지만, 컴퓨터의 유휴 사이클을 이용하기 때문에 가능합니다.
'IT와 인터넷' 카테고리의 다른 글
전자기기의 구성에 대해 알아보기 (0) 2023.07.05 디지털 신호에 대해 알아보기 (0) 2023.07.05 병렬처리에 대해 알아보기 (0) 2023.07.04 I/O 장치의 접속에 대해 알아보기 (0) 2023.07.03 시스템 버스에 대해 알아보기 (0) 2023.07.02