[병렬 처리] 클러스터 미들웨어와 SSI
여러 개의 컴퓨터들을 상호 연결하여 구성되는 컴퓨터 클러스터가 하나의 통합된 자원(unified resource)으로서 사용될 수 있다면, 그 시스템은 "단일 시스템 이미지(single system image : SSI)를 가지고 있다."라고 말한다.
SSI는 OS와 프로그래밍 환경(도구) / 응용프로그램 사이에 위치하는 미들웨어 계층(middleware layer)에 의해 지원된다.
미들웨어 S/W 하부 구조
1. SSI 인프라 (single system image infra)
OS와 접착되어(glue) 있으며, 모든 노드들로 하여금 시스템 자원들을 통합적으로 액세스 할 수 있게 해준다.
2. SA 인프라 (system availability infa)
클러스터 내의 모든 노드들에게
- 체크 포인팅 (checkpointing : 결함 발생에 대비하여 중간 결과들을 저장)
- 자동 페일오버 (automatic failover : 어느 노드에 결함이 발생하면 다른 노드가 그 작업을 대신 수행)
- 페일백 (failback : 원래 노드로 작업 수행 복원)
등의 기능을 가지도록 함으로써, 부분적인 결함 발생 시에도 클러스터가 계속하여 응용들을 처리할 수 있도록 해준다.
SSI 지원에 따른 이점들
- 사용자들로 하여금 자신의 응용 프로그램이 실제 어느 노드에서 실행되고 있는지 알 필요가 없도록 해준다.
- 시스템 운영자 혹은 사용자로 하여금 특정 자원(프로세서, 기억장치, 디스크 등)이 실제 어디에 위치하고 있는지 알 필요가 없도록 해준다. 또한 필요한 경우에는 시스템 운영자가 자원들의 위치를 파악할 수 있도록 지원한다.
- 시스템 관리가 중앙집중식 혹은 분산식 중의 어느 것으로든 가능하다.
- 시스템 관리를 단순화시켜준다. 여러 자원들에 영향을 미치는 동작들이 하나의 명령에 의해 수행될 수 있다.
- 시스템 운영자 및 시스템 프로그래머의 작업 영역을 제한하지 않는다. 즉, 어느 노드에서든 시스템 관리 및 시스템 프로그래밍이 가능해진다.
미들웨어의 설계 목표
1. 투명한 자원 관리 (transparent resource management)
- 사용자들로 하여금 하부 시스템 구조를 알지 못하는 상태에서도 클러스터를 쉽고 효과적으로 이용할 수 있게 해주어야 한다.
- 자원의 할당(allocation), 해제(de-allocation) 및 복제(replication)와 같은 자원 관리에 완전한 투명성을 제공하기 위해서는 그들의 구현에 관한 세부적인 사항들이 사용자 프로세스에게 보이지 않아야 한다.
-> 사용자는 프로세서나 기억장치 혹은 디스크와 같은 자원들이 어디에 위치하든 쉽게 이용하거나 액세스 할 수 있게 된다.
2. 선형적 성능 (scalable performance)
- 시스템 크기와 작업 부하 패턴이 제한되지 않아야 한다. 즉, 새로운 노드(컴퓨터)를 네트워크에 접속하고 필요한 소프트웨어를 탑재하면 시스템을 확장시킬 수 있고 , 반대로 축소시킬 수도 있어야 한다.
- 시스템 크기를 변경시켰을 때, 시스템의 성능도 그에 비례하여 (uniformly) 높아지거나 낮아져야 한다.
- 노드를 추가하더라도 프로토콜이나 API를 변경할 필요가 없어야 한다.
- 어떤 형태의 작업 부하들에 대해서도 균등한 작업 분배 및 병렬 처리를 지원할 수 있는 기능을 포함하고 있어야 한다.
- 클러스터의 효율을 높이기 위하여, SSI 서비스들에 의한 오버헤드가 낮아야 한다.
3. 보강된 가용성 (enhanced availability)
미들웨어 서비스들은 시스템에 어떠한 결함이 발생하더라도 항상 지원될 수 있어야 한다. 즉, 그러한 시스템 결함이 사용자 응용 처리에는 영향을 주지 않는 상태에서 복구될 수 있어야 한다. 이것은 체크 포인팅과 결함 허용 기술들(hot standby, mirroring, failover 및 failback 기능)에 의해 이루어질 수 있다.
미들웨어에 의해 제공되는 서비스들
1. 단일 엔트리 지점 (single entry point)
분산 시스템에서 사용자가 각 노드에 로그-인(예: telnet node1.cluster.myuniv.ac.kr)하는 방식과 달리, 클러스터에서는 단일 시스템과 같은 방식으로 로그-인(예: telnet cluser.myuniv.ac.kr) 할 수 있게 해 준다.
2. 단일 파일 계층 (single file hierarchy)
시스템에 로그-인한 사용자가 클러스터의 여러 노드들에 분산 저장되어 있는 파일 시스템을 동일한 루트 디렉토리 밑에 있는 한 계층의 파일 및 디렉토리들로 볼 수 있게 해 준다.
3. 단일 관리/제어 지점 (single management/control point)
하나의 윈도우를 통하여 클러스터 전체를 모니터하고 제어할 수 있게 해 준다.
4. 단일 가상 네트워킹 (single virtual networking)
클러스터 내에 모든 노드들이 외부 네트워크에 물리적으로 연결되어 있지 않더라도 클러스터 도메인(cluster domain)에서 제공되는 가상 네트워크를 통하여 외부 네트워크에 연결할 수 있다.
예를 들어, 클러스터 내의 하나의 노드만 외부 네트워크에 물리적으로 연결되어 있는 경우에도, 다른 노드들은 이 노드가 제공하는 가상 네트워크를 통하여 외부 네트워크와 접속할 수 있다.
5. 단일 기억장치 공간 (single memory space)
노드들에 분산되어 있는 모든 기억장치들을 공유시킴으로써 하나의 거대한 주기억장치 공간을 형성해준다.
6. 단일 작업 관리 시스템 (single job management system)
사용자는 어느 노드에서든 작업을 제출(submit) 할 수 있으며, 그 작업이 어느 노드에 의해 처리될지는 알 수 없다. 작업들은 작업 스케줄러 (job scheduler)에 의해 부하가 적은 노드에 배정되며, 아래의 모드들 중 하나로 처리된다.
- 배치 모드 (batch mode) : 클러스터의 모든 자원들이 하나의 사용자 작업을 위해 전용으로 사용되는 모드
- 인터액티브 모드 (Interacitve mode) : 클러스터 자원들이 여러 개의 사용자 작업들에 의해 시분할 (time-sharing) 되는 모드
- 병렬 모드 (parallel mode) : 병렬 프로세서들이 MPI 및 PVM 환경에서 처리되는 모드
7. 단일 I/O 공간 (single I/O space : SIOS)
어느 노드에서든 지역 혹은 원격에 위치한 주변장치나 디스크 드라이버들에 대한 I/O 동작을 수행할 수 있게 해 준다. 즉, SIOS는 클러스터 노드들에 접속된 디스크들과 RAID 및 기타 주변장치들에 대하여 전체적으로 하나의 I/O 주소 공간을 형성한다.
8. 단일 사용자 인터페이스 (single user interface)
사용자가 클러스터를 하나의 GUI(Graphic User Interface)를 통하여 사용할 수 있게 해준다. 또한 GUI는 일반적인 컴퓨터에서 사용하는 것들과 동일한 형태와 느낌을 가질 수 있는 것을 지원한다.
[예] Solaris OpenWin 혹은 Windows NT GUI
9. 단일 프로세스 공간 (single process space)
프로세서들이 클러스터 전체적으로 유일한 프로세스 ID를 가지게 된다. 그렇게 되면, 어느 한 노드에 있는 프로세스가 같은 노드 혹은 원격 노드에 자식 프로세스 (child process)를 생성할 수 있고, 원격 노드에 있는 다른 프로세스들과 시그널 (signal) 혹은 파이프(pipes)와 같은 내부 프로세스 통신 방식들을 이용하여 통신도 할 수 있다.
10. 체크 포인팅 (checkpointing) 및 프로세스 이주 (process migration)
체크 포인팅은 결함 발생에 대비하여 주기적으로 프로세스들의 상태와 중간 계산 결과들을 저장해주는 것이다.
만약 어느 노드에 결함이 발생한다면, 그 노드에서 처리되던 프로세스들을 다른 노드로 이주시켜서 그동안 수행된 작업량의 손상 없이 계속 처리될 수 있게 해 준다.
또한 프로세스 이주는 클러스터 노드들 간에 동적 부하 균등화(dynamic load balancing)도 가능하도록 해준다.
미들웨어 패키지들의 SSI 및 SA 서비스 지원 여부
지원 서비스 | GLUnix | TreadMarks | CODINE | LSF |
단일 제어 지점 지원 | X | O | O | O |
단일 엔트리 지점 | O | X | X | X |
단일 파일 계층 지원 | O | O | O | O |
단일 기억장치 공간 | X | O | X | X |
단일 프로세스 공간 | O | X | X | X |
단일 I/O 공간 | X | X | X | X |
단일 네트워킹 | X | X | X | X |
단일 작업관리 | O | O | O | O |
체크포인팅 | X | X | O | O |
프로세스 이주 | X | X | O | O |
결함 허용 | O | X | O | O |
표를 보면 알 수 있지만, 모든 미들웨어 서비스를 제공하는 건 쉽지 않다.. 너무 복잡하고 비용도 많이 들기 때문.
클러스터 미들웨어 모듈들 간의 기능적 상관관계
'Computer Engineering > 병렬 처리(Parallel Processing)' 카테고리의 다른 글
[병렬 처리] 슈퍼스칼라 프로세서 - 명령어 발송 정책과 레지스터 재명명 (0) | 2019.06.20 |
---|---|
[병렬 처리] 클러스터 컴퓨터의 구조 및 분류 (0) | 2019.06.20 |
[병렬 처리] 고성능 입출력 시스템 구조 (0) | 2019.06.20 |
[병렬처리] 상호 연결망 구조 - 정적 상호 연결망의 종류 (0) | 2019.06.20 |
그래픽 처리 유니트 (GPU) - GPU의 개념과 CUDA 프로그래밍 (0) | 2019.06.20 |
댓글
이 글 공유하기
다른 글
-
[병렬 처리] 슈퍼스칼라 프로세서 - 명령어 발송 정책과 레지스터 재명명
[병렬 처리] 슈퍼스칼라 프로세서 - 명령어 발송 정책과 레지스터 재명명
2019.06.20 -
[병렬 처리] 클러스터 컴퓨터의 구조 및 분류
[병렬 처리] 클러스터 컴퓨터의 구조 및 분류
2019.06.20 -
[병렬 처리] 고성능 입출력 시스템 구조
[병렬 처리] 고성능 입출력 시스템 구조
2019.06.20 -
[병렬처리] 상호 연결망 구조 - 정적 상호 연결망의 종류
[병렬처리] 상호 연결망 구조 - 정적 상호 연결망의 종류
2019.06.20