CertNote/ 출퇴근 학습 노트
로드맵
KOEN
리눅스마스터 2급 · 2급리눅스마스터 2급
  • Week 1
    • 1.운영체제와 커널: 리눅스가 하는 일
    • 2.리눅스의 탄생: 유닉스에서 리누스까지
    • 3.자유 소프트웨어와 오픈소스: 라이선스가 정하는 것
    • 4.배포판: 커널과 도구를 하나로 묶어 파는 단위
    • 5.Week 1 종합 복습: 리눅스라는 이름의 정체
  • Week 2
  • Week 3
  • Week 4
  • Week 5
  • Week 6
  • Week 7
  • Week 8
  • Week 9
  • Week 10
  • Week 11
    • 1.클러스터링
    • 2.가상화
    • 3.임베디드와 기술 동향
    • 4.종합 모의 1: 리눅스 일반 + 운영 및 관리
    • 5.종합 모의 2: 리눅스 활용과 최종 정리
리눅스마스터 1급 · 1급리눅스마스터 1급
합격 후기

© CertNote · 주간랩스

  • 소개
  • 수정 기록
  • 문의
  • 이용약관
  • 개인정보처리방침
← 리눅스마스터 2급/Week 11/Day 1

기준: 리눅스마스터 2급 출제 기준·오류 제보

리눅스마스터 2급· AssociateWeek 11 · Day 1읽기 약 12분
핵심 정리
  • 클러스터는 여러 대의 컴퓨터를 묶어 한 대처럼 쓰는 구성이다.
  • 목적에 따라 셋으로 나뉜다 — 고계산용(HPC) · 고가용성(HA) · 부하분산(LB).
  • 고계산용은 빠르게 계산, 고가용성은 멈추지 않게, 부하분산은 나눠서 처리한다.
  • 실무의 웹 서비스는 대개 부하분산 + 고가용성을 함께 구성한다.
  • 리눅스로 만든 대표적인 고계산용 클러스터가 베어울프(Beowulf) 클러스터다.

Day 1 - 클러스터링

클러스터란

   [ 사용자 ]
        │
        ▼
   ┌─────────────────────────────┐
   │   여러 대의 컴퓨터(노드)를    │
   │   묶어 한 대처럼 보이게 한다  │
   │   ▢  ▢  ▢  ▢               │
   └─────────────────────────────┘
  • 한 대의 성능을 높이는 데는 한계가 있고 비용도 급격히 오른다. 여러 대를 묶는 편이 싸고 확장하기 쉽다.
  • 묶인 각 컴퓨터를 노드(node) 라 한다.
  • 노드들은 네트워크로 연결되고, 바깥에서는 하나의 시스템으로 보여야 한다. 서로 모르는 서버 열 대를 나란히 둔 것은 클러스터가 아니다.
구분스케일 업(scale-up)스케일 아웃(scale-out)
방법한 대를 더 좋은 부품으로 바꾼다대수를 늘린다
한계부품 성능에 천장이 있고 값이 급격히 오른다늘리는 만큼 관리할 대상이 는다
장애그 한 대가 멈추면 전부 멈춘다한 대가 멈춰도 나머지가 남는다
클러스터와의 관계—클러스터가 이 방식이다
  • "값싼 PC 여러 대"라는 표현이 지문에 보이면 스케일 아웃, 곧 클러스터 이야기다.

세 가지 클러스터

종류목적핵심어
고계산용 클러스터 (HPC)빠른 계산병렬 처리, 슈퍼컴퓨터
고가용성 클러스터 (HA)멈추지 않는 서비스이중화, 장애 극복
부하분산 클러스터 (LB)요청을 나눠 처리트래픽 분산

정의를 갈라 외우는 것이 이 단원의 전부다. 셋 중 무엇을 설명한 것인지 고르는 형태로 나온다.

셋을 가르는 가장 빠른 질문은 "여러 대가 무엇을 나누는가" 다.

질문고계산용(HPC)고가용성(HA)부하분산(LB)
무엇을 나누나하나의 큰 작업을 조각내어나누지 않는다. 같은 일을 대신할 준비만 한다서로 무관한 많은 요청을 한 건씩
노드끼리의 관계조각을 주고받으며 협력서로 감시서로 몰라도 된다
잘됐다는 기준계산이 빨리 끝났다서비스가 끊기지 않았다많은 요청을 받아냈다
한 대가 멈추면그 작업이 느려지거나 다시 돌려야 한다대기 노드가 이어받는다남은 노드가 요청을 나눠 받는다
대표 이름베어울프하트비트(heartbeat)LVS
  • 고계산용 · 고성능 · HPC · 병렬 · 슈퍼컴퓨터는 모두 같은 칸의 말이다. 보기에 "고성능 클러스터"라고 나와도 고계산용과 같은 것으로 읽는다.
  • "고성능"과 "고가용성"은 글자가 닮았을 뿐 반대편이다. 앞은 속도, 뒤는 무중단이다.

고계산용 클러스터 (HPC)

항목내용
풀네임High Performance Computing
목적하나의 큰 계산을 나눠 동시에 처리
쓰는 곳기상 예측, 유전자 분석, 시뮬레이션
대표베어울프(Beowulf) 클러스터
  • 여러 노드가 하나의 문제를 나눠 푼다. 그래서 병렬 컴퓨팅이라고도 한다.
  • 베어울프 클러스터는 값싼 PC들을 리눅스로 묶어 만든 고계산용 클러스터다. 이름을 그대로 묻는다.
   사용자 ──► 마스터 노드 ──┬── 계산 노드 1   조각 A 계산
             (작업을 쪼개   ├── 계산 노드 2   조각 B 계산
              나눠 주고     ├── 계산 노드 3   조각 C 계산
              결과를 모은다) └── 계산 노드 4   조각 D 계산
                    ▲                │
                    └── 결과를 합쳐 하나의 답 ──┘
  • 베어울프는 1994년 NASA 에서 일반 PC 여러 대를 이더넷으로 묶어 만든 것이 시작이다. 비싼 전용 슈퍼컴퓨터 대신 흔한 부품과 공개 소프트웨어로 같은 일을 해 보자는 발상이었다.
  • 구성은 마스터 노드 하나 + 계산 노드 여럿이다. 사용자는 마스터에만 접속하고, 계산 노드는 시키는 계산만 한다.
  • 노드끼리 조각과 결과를 주고받는 약속이 필요하다. 이때 쓰는 병렬 프로그래밍 라이브러리가 MPI(Message Passing Interface)와 PVM(Parallel Virtual Machine)이다.
  • 아무 프로그램이나 빨라지는 것은 아니다. 작업을 조각낼 수 있게 짜인 프로그램이어야 노드를 늘린 효과가 난다. 웹 서버처럼 요청 하나하나가 작은 서비스에는 맞지 않는 이유다.

고가용성 클러스터 (HA)

항목내용
풀네임High Availability
목적장애가 나도 서비스가 계속되게
방식평소엔 주 서버가 일하고, 죽으면 대기 서버가 이어받는다
핵심어이중화 · 장애 극복(failover) · 하트비트(heartbeat)
   주 서버 (Active) ──── 서비스 중
        │  하트비트로 서로 살아 있는지 확인
   대기 서버 (Standby) ── 대기
 
   주 서버가 죽으면  →  대기 서버가 즉시 이어받는다 (failover)
  • 가용성(availability) 은 "서비스가 살아 있는 시간의 비율"이다. 은행·병원처럼 멈추면 안 되는 시스템에 쓴다.
  • 성능을 높이는 것이 아니라 끊기지 않게 하는 것이 목적이다. 이 구분이 중요하다.

고가용성 구성에서 쓰는 말은 순서대로 이어진다.

용어뜻
단일 장애점(SPOF)그것 하나가 멈추면 전체가 멈추는 지점. 고가용성은 이것을 없애는 일이다
이중화같은 역할을 하는 장비를 둘 이상 두는 것
하트비트(heartbeat)노드끼리 주기적으로 주고받는 "나 살아 있다" 신호
장애 극복(failover)신호가 끊기면 대기 노드가 역할을 넘겨받는 동작
장애 복구(failback)고장 난 노드를 고친 뒤 원래대로 되돌리는 동작
  • 흐름으로 읽으면 하트비트가 끊긴다 → 장애 극복 → (수리) → 장애 복구 이다. 장애 극복과 장애 복구를 바꿔 놓은 보기가 함정이다.
  • 사용자는 서버가 바뀐 줄 모른다. 서비스용 주소를 대기 노드가 그대로 넘겨받기 때문이다.
구성평소장애가 나면특징
Active-Standby한 대만 일하고 한 대는 대기대기 서버가 이어받는다단순하다. 대기 장비가 평소엔 논다
Active-Active둘 다 일한다남은 한 대가 전부 떠맡는다자원을 다 쓰지만, 한 대로도 버틸 여유가 있어야 한다

가용성은 "살아 있는 시간의 비율"이라 숫자로 약속한다. 9가 하나 늘 때마다 허용되는 정지 시간이 10분의 1로 준다.

가용성1년 중 멈춰도 되는 시간
99%약 3.65일
99.9%약 8.76시간
99.99%약 53분
99.999%약 5분
  • 계산은 1년(8,760시간) × (1 − 가용성) 이다. 99.9%라면 8,760 × 0.001 = 8.76시간이다.
  • 리눅스에서는 Heartbeat, Pacemaker, Corosync 같은 공개 소프트웨어로 고가용성 클러스터를 꾸린다. 2급에서는 구축법이 아니라 "하트비트 = 고가용성 쪽 용어" 라는 연결만 묻는다.

부하분산 클러스터 (LB)

항목내용
풀네임Load Balancing
목적들어오는 요청을 여러 서버에 나눠 보낸다
쓰는 곳웹 서버, 쇼핑몰처럼 접속이 많은 서비스
대표LVS(Linux Virtual Server)
              요청
                │
          ┌─────┴─────┐
       부하분산기 (로드밸런서)
       ┌────┬────┬────┐
      웹1  웹2  웹3  웹4
  • 한 대가 감당할 수 없는 트래픽을 여러 대가 나눠 받는다.
  • 한 대가 죽어도 나머지가 받으므로 가용성도 함께 올라간다.

LVS(Linux Virtual Server)는 리눅스 커널의 기능으로 부하분산기를 만드는 프로젝트다.

이름역할
가상 IP(VIP)사용자가 접속하는 대표 주소 하나. 뒤에 서버가 몇 대인지 사용자는 모른다
디렉터(director)요청을 받아 뒤로 넘기는 부하분산기
리얼 서버(real server)실제로 요청을 처리하는 뒤쪽 서버들
ipvsadmLVS의 분배 규칙을 설정하는 관리 명령
  • 이름의 "Virtual"은 가상 머신이 아니라 여러 대가 한 대의 서버처럼 보인다는 뜻이다. 내일 배울 가상화와 섞지 않는다.
  • 요청을 넘기는 방식은 NAT · DR(Direct Routing) · TUN(IP 터널링) 세 가지가 알려져 있고, 누구에게 줄지는 스케줄링 방식으로 정한다.
스케줄링고르는 기준
라운드 로빈(Round Robin)차례대로 돌아가며 한 건씩
가중 라운드 로빈성능 좋은 서버에 더 자주
최소 연결(Least Connection)지금 연결이 가장 적은 서버에
가중 최소 연결연결 수에 서버 성능 가중치까지 고려
  • 2급에서 필요한 것은 "LVS = 부하분산" 이라는 짝이다. 방식과 스케줄링 이름은 지문을 읽을 때 낯설지 않을 정도면 된다.

실무에서는 함께 쓴다

웹 서비스는 대개 부하분산과 고가용성을 함께 구성한다. 요청을 여러 서버로 나누면서(부하분산), 한 대가 죽어도 나머지가 처리하니(고가용성) 두 목적이 자연스럽게 맞물리기 때문이다.

  • "부하분산 + 고가용성" 이라는 조합이 보기로 나오면 대개 정답이다. 반대로 고계산용은 웹 서비스와는 성격이 다르다.
                  사용자 요청
                      │
        ┌─────────────┴─────────────┐
   부하분산기 A (Active) ══하트비트══ 부하분산기 B (Standby)   ← 고가용성
        └─────────────┬─────────────┘
              ┌───────┼───────┐
             웹1     웹2     웹3                               ← 부하분산
  • 웹 서버만 여러 대로 늘리면 부하분산기 한 대가 단일 장애점으로 남는다. 그래서 부하분산기 자체를 Active-Standby로 이중화한다. 이 그림이 "부하분산 + 고가용성"의 실제 모습이다.
  • 조합 문제는 서비스의 성격부터 본다.
상황필요한 것조합
접속이 몰리는 쇼핑몰·포털요청 분산 + 무중단부하분산 + 고가용성
기상 예측·유전자 분석큰 계산을 빨리고계산용
요청은 많지 않지만 멈추면 안 되는 은행 원장 DB무중단고가용성

지문으로 가려내기

지문은 클러스터 이름 대신 핵심어를 흘린다. 단어를 보고 칸을 고르는 연습을 한다.

지문에 나온 표현답
"하나의 큰 연산을 여러 노드가 나누어 병렬로"고계산용
"슈퍼컴퓨터에 준하는 성능을 값싼 PC로"고계산용(베어울프)
"MPI·PVM 같은 병렬 라이브러리를 사용"고계산용
"장애가 나도 서비스가 중단되지 않도록"고가용성
"주 서버와 대기 서버, 하트비트로 상태 확인"고가용성
"이중화", "장애 극복(failover)"고가용성
"들어오는 요청을 여러 서버에 고르게"부하분산
"대량의 웹 트래픽", "라운드 로빈"부하분산
"LVS", "가상 IP 하나로 여러 서버를"부하분산
"지리적으로 떨어진 컴퓨터의 남는 자원을"클러스터가 아니라 그리드

자주 틀리는 지점

  1. 고가용성 클러스터는 성능을 높인다 → 아니다. 목적은 무중단이다. Active-Standby 구성의 대기 서버는 평소에 일하지 않는다.
  2. 부하분산과 고계산용은 같은 것이다 → 둘 다 "나눈다"지만 부하분산은 서로 다른 요청을, 고계산용은 한 작업의 조각을 나눈다.
  3. 베어울프가 부하분산 클러스터다 → 고계산용이다. 부하분산의 대표는 LVS.
  4. 하트비트는 부하분산 방식이다 → 고가용성에서 노드의 생존을 확인하는 신호다.
  5. 장애 복구(failback)가 대기 서버로 넘어가는 동작이다 → 그건 장애 극복(failover)이다. 장애 복구는 되돌리는 쪽이다.
  6. 임베디드 시스템·그리드도 클러스터의 한 종류다 → 아니다. 클러스터 종류는 셋뿐이다.
  7. 노드를 두 배로 늘리면 무엇이든 두 배 빨라진다 → 조각낼 수 있는 계산일 때만 효과가 있다.
  8. LVS는 가상 머신 기술이다 → 가상화가 아니라 부하분산이다.

비슷한 개념 구분

개념뜻
클러스터여러 컴퓨터를 묶어 한 대처럼 — 같은 장소, 긴밀히 연결
그리드 컴퓨팅흩어져 있는 컴퓨터의 남는 자원을 모아 쓴다
클라우드 컴퓨팅자원을 빌려 쓰는 서비스 형태
임베디드 시스템특정 기능을 위해 기기에 내장된 시스템
  • 임베디드 시스템은 클러스터가 아니다. "다음 중 클러스터의 종류가 아닌 것"이라는 문제에 이 이름이 섞여 나온다.

내일은 가상화 기술과 제품별 특징을 다룬다.

📖 용어

  • 클러스터 : 여러 대의 컴퓨터를 묶어 하나처럼 동작하게 하는 구성.
  • 노드 : 클러스터를 이루는 각각의 컴퓨터.
  • 고계산용 클러스터(HPC) : 하나의 큰 계산을 여러 노드가 나눠 처리하는 클러스터.
  • 베어울프 클러스터 : 값싼 PC를 리눅스로 묶어 만든 대표적인 고계산용 클러스터.
  • 고가용성 클러스터(HA) : 장애가 발생해도 서비스가 중단되지 않도록 구성한 클러스터.
  • 장애 극복(failover) : 주 서버가 멈추면 대기 서버가 역할을 이어받는 동작.
  • 하트비트(heartbeat) : 노드끼리 서로 살아 있는지 확인하려고 주기적으로 주고받는 신호.
  • 부하분산 클러스터(LB) : 요청을 여러 서버에 나눠 보내는 클러스터.
  • LVS : 리눅스로 부하분산기를 구성하는 Linux Virtual Server. 가상 머신과는 관계없다.
  • 그리드 컴퓨팅 : 지리적으로 흩어진 컴퓨터의 유휴 자원을 모아 사용하는 방식.

📝 연습 문제

선택지를 클릭하면 정답·해설이 펼쳐집니다.

문제 1

다음 중 시스템에 장애가 발생하더라도 서비스가 중단되지 않도록 구성하는 클러스터로 알맞은 것은?

문제 2

다음 중 클러스터의 종류로 보기 어려운 것으로 알맞은 것은?

문제 3

다음 중 값싼 PC들을 리눅스로 묶어 구성한 대표적인 고계산용 클러스터로 알맞은 것은?

문제 4

다음 중 들어오는 요청을 여러 서버에 나누어 보내 처리량을 높이는 클러스터로 알맞은 것은?

문제 5

다음 중 접속량이 많은 웹 서비스를 구성할 때 일반적으로 함께 적용하는 클러스터의 조합으로 알맞은 것은?

이전Week 10 종합 복습: 인터넷 서비스 한 장Week 10 · Day 5다음 가상화Week 11 · Day 2

참고 공식 자료

  • 리눅스마스터 2급 공식 출제 기준(새 탭에서 열림)

이 페이지

  • 클러스터란
  • 세 가지 클러스터
  • 고계산용 클러스터 (HPC)
  • 고가용성 클러스터 (HA)
  • 부하분산 클러스터 (LB)
  • 실무에서는 함께 쓴다
  • 지문으로 가려내기
  • 자주 틀리는 지점
  • 비슷한 개념 구분
  • 용어
  • 연습 문제