이 영역을 누르면 첫 페이지로 이동
butter_shower 블로그의 첫 페이지로 이동

butter_shower

페이지 맨 위로 올라가기

butter_shower

[병렬 처리] 클러스터 미들웨어와 SSI

  • 2019.06.20 06:02
  • Computer Engineering/병렬 처리(Parallel Processing)
글 작성자: _rian
여러 개의 컴퓨터들을 상호 연결하여 구성되는 컴퓨터 클러스터가 하나의 통합된 자원(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. 사용자들로 하여금 자신의 응용 프로그램이 실제 어느 노드에서 실행되고 있는지 알 필요가 없도록 해준다.
  2. 시스템 운영자 혹은 사용자로 하여금 특정 자원(프로세서, 기억장치, 디스크 등)이 실제 어디에 위치하고 있는지 알 필요가 없도록 해준다. 또한 필요한 경우에는 시스템 운영자가 자원들의 위치를 파악할 수 있도록 지원한다.
  3. 시스템 관리가 중앙집중식 혹은 분산식 중의 어느 것으로든 가능하다.
  4. 시스템 관리를 단순화시켜준다. 여러 자원들에 영향을 미치는 동작들이 하나의 명령에 의해 수행될 수 있다.
  5. 시스템 운영자 및 시스템 프로그래머의 작업 영역을 제한하지 않는다. 즉, 어느 노드에서든 시스템 관리 및 시스템 프로그래밍이 가능해진다.

미들웨어의 설계 목표

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

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [병렬 처리] 슈퍼스칼라 프로세서 - 명령어 발송 정책과 레지스터 재명명

    [병렬 처리] 슈퍼스칼라 프로세서 - 명령어 발송 정책과 레지스터 재명명

    2019.06.20
  • [병렬 처리] 클러스터 컴퓨터의 구조 및 분류

    [병렬 처리] 클러스터 컴퓨터의 구조 및 분류

    2019.06.20
  • [병렬 처리] 고성능 입출력 시스템 구조

    [병렬 처리] 고성능 입출력 시스템 구조

    2019.06.20
  • [병렬처리] 상호 연결망 구조 - 정적 상호 연결망의 종류

    [병렬처리] 상호 연결망 구조 - 정적 상호 연결망의 종류

    2019.06.20
다른 글 더 둘러보기

정보

butter_shower 블로그의 첫 페이지로 이동

butter_shower

  • butter_shower의 첫 페이지로 이동

검색

메뉴

  • All Categories
  • About Me
  • Guest Book

카테고리

  • 전체보기 (223)
    • 💫 주인장 이야기 (17)
    • 🌱 와글와글뻘글 (27)
    • IT Trends (11)
    • 주인장 일상 (0)
    • 📒 내 마음대로 독서 서평 (12)
    • 머신러닝 꿈나무 (30)
      • 기본 개념 (6)
      • Hands-on! (5)
      • Paper Review (5)
      • 캐린이의 Kaggle (1)
    • 알고리즘 Algorithm (33)
      • PS (8)
    • Computer Engineering (75)
      • Python (8)
      • Cloud Computing (9)
      • C (9)
      • C++ (0)
      • Java (6)
      • Django 장고 (4)
      • 임베디드 시스템 (10)
      • 병렬 처리(Parallel Processing) (9)
      • 데이터 통신 Data communication (4)
      • 유닉스 시스템 (Unix System) (3)
      • GitHub (1)
      • 마이크로 프로세서 (micro processor) (1)
      • 데이터 마이닝 (1)
    • Error Note 🚨 (3)
    • 영어 공부 (6)
      • Live Academy (6)
    • HOBBY (2)
      • Film Log (2)

최근 글

정보

_rian의 butter_shower

butter_shower

_rian

나의 외부 링크

  • Github
  • Facebook
  • Instagram
  • LinkedIn
  • Twitter

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © _rian. Designed by Fraccino.

티스토리툴바