미니 프로젝트 도전기/raspberry pi cluster project

라즈베리파이 클러스터 프로젝트 _ PART1(정의)

박재완 2022. 10. 13. 09:30
728x90
반응형

우연하게 지인에게 라즈베리파이 4 (8GB)를 좀 받게되면서 쓸만한 프로젝트를 구상하던중 이전부터 봐왔던 클러스터링 프로젝트를 제작 해보기로 정했다.

 

우선 클러스터를 구축하기 전에 클러스터가 무엇인지 정의 해보고자 한다.

 

클러스터 컴퓨터

클러스터 컴퓨터(CLUSTER COMPUTER)는 여러 대의 컴퓨터를 서로 연결하여 하나의 시스템으로 동작하는 컴퓨터의 집합체를 말한다.

서로 연결된 컴퓨터는 고속의 근거리 통신망으로 연결되며 여기에 속한 각각의 컴퓨터를 노드라고 표현한다,

노드는 클러스터 미들웨어라는 소프트웨어 계층에서 관리한다.

 

클러스터 컴퓨터 특징

1. 작업 부하 분산(LOAD-BALANCING) 클러스터

시스템의 전반적인 성능을 향상시키기 위해 연산 부하량을 여러 노드에서 분담하여 병렬 처리하도록 구성하는 방식이다.

웹 서버 클러스터의 예를 들면, 각기 다른 종류의 요구를 각기 다른 노드에서 처리하도록 할당함으로써 전반적인 응답시간을 단축할 수 있다.

그렇지만 애플리케이션에 따라 작업 부하를 분산하는 방법은 크게 다를 수 있다.

단순히 라운드 로빈 방식을 사용하는 웹 서버와 과학 연산을 하는 클러스터 시스템은 연산 부하를 처리하는 방식이 다르긴 하다.

 

2. 높은 가용성(HIGH-AVAILABILITY, HA) 클러스터

시스템의 가용성을 높이기 위한 방법으로 하나의 노드에 장애가 생겼을 때 연결된 다른 노드가 서비스를 이어받아 계속해서 서비스되도록 하는 것을 말한다.

 

클러스터 컴퓨터 설계 및 구성

클러스터 컴퓨터를 설계하는 데 있어서 가장 중요한 것은 노드 간에 통신이 빈번하게 이루어지기 때문에 ‘어떻게 하면 각각의 노드를 밀접하게 연결을 할 것인가?’.

이것은 독립된 네트워크를 사용하여 동일 아키텍처와 동일 기종의 노드가 밀도 있게 설치되어야 한다는 것을 의미한다.

보통의 베어울프 클러스터 컴퓨터는 주 서버와 종속 서버로 구성되어 있고 주 서버는 컴퓨터의 일을 나누고 관리하며 종속 서버는 컴퓨터 일을 처리하고 연산을 하는 서버를 지칭한다.

베오울프 클러스터 컴퓨터 구성도

 

애플리케이션은 주 서버와 통신을 할 뿐 종속 서버와는 통신을 하지 않기 때문에 주 서버는 두 개의 네트워크 인터페이스를 가지게 된다.

그중에 하나는 종속 서버와의 통신을 위한 내부용 네트워크이고 다른 하나는 외부 통신을 위한 범용 네트워크입니다.

종속 서버는 일반적으로 자체의 운영 체제와 메모리 그리고 저장 장치를 가지고 있으나  내부용 네트워크는 대용량 공유 파일 서버와 연결하는 경우가 빈번합니다.

클러스터 컴퓨터는 동일 운영 체제하에서 물리적으로 분리된 컴퓨터의 집합이라고 생각하시면 됩니다.

요즘처럼 웹을 기반으로 하는 서비스가 많아지면서 동시에 수만에서 수백만의 클라이언트를 처리할 수 있는 서버가 필요하게 되었습니다.

이렇게 많은 클라이언트의 요청을 동시에 처리하기 위해서 많은 서버를 네트워크로 연결하여 클러스터 형태로 구성하는 것이 비용과 성능을 잘 절충한 해결책이라 볼 수 있습니다.

클러스터 컴퓨터 데이터 공유 및 통신

1. 데이터 공유

1980년대에 클러스터 컴퓨터가 나오면서 슈퍼컴퓨터도 등장하였다.

그 당시 초기 슈퍼컴퓨터는 공유 메모리를 많이 사용하였지만 지금의 클러스터 컴퓨터는 공유 메모리를 사용하지 않으며 대부분의 슈퍼컴퓨터도 마찬가지.

그렇지만 클러스터 공유 파일 시스템은 지금도 중요하게 사용되는데 공개 소프트웨어인 러스터 파일 시스템이 가장 많이 사용되는 병렬 분산 공유 파일 시스템의 대표적인 사례라고 볼 수 있다.

2. 통신

클러스터 컴퓨터에서는 메시지 전달 인터페이스(이하 MPI)와 병렬 가상 머신(이하 PVM)이 가장 널리 사용되는 대표적인 통신 방법이다.

PVM은 오크리지 국립 연구소에서 1989년도에 MPI가 사용되기 전에 개발되었으며 반드시 각각의 노드에 설치되어야 하며 노드를 “병렬 가상 머신”으로 규정하는 소프트웨어 라이브러리의 집합 제공.

PVM은 메시지 전달과 테스크 그리고 자원 관리 및 오류 알림을 위한 실시간 환경을 제공하는데 프로그래밍 언어인 C, C++ 또는 포트란으로 작성됩니다.

MPI는 1990년대 초에 40개 조직의 모임에 의해 탄생되었으며 초기에는 ARPA 및 미국 국립과학재단(NSF)에 의해 주도 되었습니다.

MPI는 일반적으로 TCP/IP 와 소켓 연결을 사용하는 광범위하게 사용되는 통신 모델이며 C, 포트란, 파이썬과 같은 프로그래밍 언어를 사용하여 병렬 프로그래밍을 구현합니다.

따라서 PVM 과는 다르게 MPI는 MPICH 와 Open MPI와 같은 시스템에서 구현이 가능합니다.

 

관리

클러스터 컴퓨터를 사용하는 데 있어서 가장 어려운 것 중의 하나는 시스템을 관리하는 것입니다.

만약 n 개의 노드로 구성된 클러스터가 있다고 한다면 관리 비용은 n 개의 독립된 컴퓨터를 관리하는 것과 비슷하게 소요됩니다.

어떤 경우에는 공유 메모리 아키텍처가 비용 측면에서 클러스터 시스템 대비 유리하고 관리의 편리성 측면에서는 가상 머신을 활용하는 것이 더 현명할 수도 있습니다.

클러스터의 한 노드에서 장애가 발생하였을 때 나머지의 모든 시스템이 계속해서 동작하도록 하기 위해 클러스터는 펜싱(FENCING)이라는 동작을 취하게 됩니다.

펜싱은 노드가 오동작을 일으켰을 때 공유된 자원을 보호하고 그 노드를 격리시키는 동작을 의미합니다.

펜싱에는 두 가지가 있는데 하나는 노드 자체를 비활성화(노드의 격리) 시키는 것이고 다른 하나는 공유 디스크와 같은 공유 자원에 대한 접근을 차단(자원의 접근 차단) 하는 것입니다.

노드의 격리는 장애로 의심되는 노드를 비활성화하거나 전원을 끈다는 의미이고 자원의 접근 차단은 노드의 전원을 끄지 않고 자원에 대한 접근을 막는 동작을 말합니다.

 

소프트웨어 개발

웹 서버와 같이 작업 부하를 조절해 주는 클러스터는 많은 사용자들을 지원하기 위해 각 사용자의 요구를 특정 노드에 연결을 해주는 구조를 취하게 됩니다.

이 방법은 여러 노드 간에 상호 협력 없이 사용자가 공유 데이터에 빠르게 접근할 수 있게 작업 병렬화를 구현하는 것입니다.

그렇지만 적은 수의 사용자가 아주 복잡한 연산을 수행해야 하는 클러스터 컴퓨터는 클러스터의 병렬 처리 능력이 발휘되어야 하므로 프로그램을 자동으로 병렬화해주는 소프트웨어 개발이 필수적입니다.

각기 다른 프로세서에서 프로그램을 동시에 수행함으로써 더 높은 수준의 병렬화를 수행하기 위해서 병렬 프로그래밍 모델이 사용되어야 합니다.

 

라즈베리파이 클러스터

리눅스는 근거리 통신망에 강점이 있고 미들웨어에 MPI가 있으며 프로그래밍 언어로 파이썬을 사용할 수 있기 때문에 이를 충족하는 라즈베리파이는 클러스터에 특화되었다고 볼 수 있습니다.

과거 구형 라즈베리파이 클러스터링 시스템

다만, 기가비트 이더넷을 지원하지 못한다는 것이 아쉬웠으나 이마저도 2019년에 출시된 라즈베리파이 4 모델 B로 극복하였습니다.

라즈베리파이 클러스터 하에서 MPICH를 설치하여 MPI 환경을 만든 후 파이썬을 이용하여 병렬 프로그래밍이 가능하도록 하는 것은 매우 쉬운 과정입니다.

아직 라즈베리파이의 하드웨어 성능이 충분치 않아 대규모 클러스터 컴퓨터 환경을 경험하지는 못합니다.

하지만 18개의 라즈베리파이 4 모델 B를 가지고 라즈베리파이 재단의 블로그 서버를 운영하고 있다는 소식을 접하면서 하드웨어의 불리함도 곧 극복되리라 미루어 짐작이 가는 대목이기도 합니다.

2020년에 개발된 일본 이화학연구소의 후카쿠 슈퍼컴퓨터의 경우 개발에 소요된 프로세서가 ARM 기반이라는 것만 봐도 전성비를 고려하여 점차 x86 프로세서를 배제할 수밖에 없을 것입니다.

일본 이화학연구소의 슈퍼컴퓨터 후카쿠

이러한 요인이 라즈베리파이 기반의 클러스터 컴퓨터를 구성하는데 긍정적인 작용을 하고 있기도 합니다.

선행연구 목적이나 학술용으로 클러스터 컴퓨터 하드웨어 동작을 연구하기 위해 라즈베리파이를 이용한 클러스터 구성 시 저비용으로 빠르게 구축할 수 있으므로 대학이나 기업, 연구소에서 수요가 발생할 수밖에 없을 것입니다.

이러한 움직임은 이미 여러 논문에서도 발견되었고 최근에는 오라클과 같은 기업 차원에서도 그 움직임이 확인되고 있습니다.

 

이런 특징을 이용해서 다양한 산업 전반에서는 다양한 클러스터링 컴퓨팅을 이용해 연구 및 학습 데이터 관리등에 활용 하고 있다. 

특히 최근에는 칩설계 단에서 병렬 처리를 할 수 있도록 구현된 m1 ultra도 스케일은 다르다고 볼 수 있지만 클러스터링과 비슷한 궤를 달린다고 볼 수 있다.

 

이런 자료들을 토대로 이번 프로젝트에서는 라즈베리파이 4를 이용한 클러스터링 프로젝트를 진행하고자 한다.

728x90
반응형