안정성을 위한 기술

0

network

목록 보기
36/39

네트워크 안정성을 위한 기술 (High Availability & Load Balancing)


1. 가용성(Availability) 개념

1.1 가용성이란?

가용성(Availability)은 컴퓨터 시스템이 정상적으로 동작할 수 있는 시간의 비율을 의미하며, 업타임(Uptime)과 다운타임(Downtime)으로 계산됩니다.

  • 가용성 수식:

  • 업타임(Uptime): 시스템이 정상적으로 동작하는 시간

  • 다운타임(Downtime): 시스템이 정상적으로 동작하지 않는 시간

1.2 고가용성(High Availability, HA)

  • 고가용성(HA, High Availability)이란 서비스 중단 시간을 최소화하는 것을 목표로 함.
  • 일반적으로 99.999% 이상의 가용성을 유지하는 시스템을 고가용성 시스템이라고 함.
  • "Five Nines(99.999%)"이라고 부르며, 1년 기준 5.25분 이하의 다운타임을 허용.
가용성 (%)연간 다운타임
99.9% (Three Nines)8.76시간
99.99% (Four Nines)52.56분
99.999% (Five Nines)5.25분

고가용성을 목표로 한다면 다운타임을 최소화하는 것이 핵심!


2. 다운타임 원인 및 해결 방법

2.1 다운타임의 원인

  1. 과도한 트래픽 → 서버 과부하
  2. 소프트웨어 오류 → 애플리케이션 버그
  3. 하드웨어 장애 → 서버, 네트워크 장비 고장
  4. 보안 공격 → DDoS, 해킹 등
  5. 자연재해 → 지진, 홍수, 정전 등

2.2 해결 방법: 결함 감내(Fault Tolerance)

  • 모든 장애를 사전에 방지하는 것은 불가능하기 때문에, 장애 발생 시에도 서비스를 유지할 수 있도록 설계해야 함.
  • 이를 가능하게 하는 핵심 기술:
    1. 이중화(Redundancy)
    2. 다중화(Multiplexing)
    3. 로드 밸런싱(Load Balancing)

3. 이중화(Redundancy)

3.1 이중화 개념

  • 시스템이 중단되지 않도록 동일한 구성 요소를 백업(예비) 시스템으로 준비하는 방법.
  • 장애 발생 시 즉시 예비 시스템이 활성화되어 서비스 지속 가능.

3.2 이중화의 대상 (Single Point of Failure, SPOF)

  • 싱글 포인트 오브 페일리어(SPOF): 하나라도 장애가 발생하면 시스템 전체가 중단될 수 있는 요소.
  • 대표적인 SPOF 예시:
    • 서버 (Server)
    • 네트워크 인터페이스 (NIC)
    • 라우터, 스위치 (Network Devices)
    • 데이터베이스 (Database)

SPOF를 제거하기 위해 이중화가 필수!

3.3 이중화 방식

(1) 액티브-스탠바이 (Active-Standby)

  • 하나의 시스템이 실제로 동작(Active)하고, 다른 하나는 대기(Standby) 상태.
  • 장애 발생 시 스탠바이 시스템이 즉시 활성화됨.
  • 안정적이지만, 리소스 활용도가 낮음.

(2) 액티브-액티브 (Active-Active)

  • 여러 시스템이 동시에 동작하며 부하를 나눠 가짐.
  • 장애 발생 시에도 나머지 시스템이 계속 작동.
  • 성능이 향상되지만, 관리가 더 복잡해짐.

4. 다중화(Multiplexing)

4.1 다중화 개념

  • 이중화보다 더 나아가 3개 이상의 시스템을 구성하여 더 높은 안정성과 확장성 확보.
  • 다중화된 구성 요소 예시:
    • 서버 다중화
    • 네트워크 장비 다중화
    • 데이터 센터 다중화

4.2 네트워크 인터페이스 다중화: 티밍(Teaming) & 본딩(Bonding)

  • 여러 개의 네트워크 인터페이스를 하나로 묶어 사용하여 대역폭을 증가시키고, 장애 발생 시 자동으로 다른 인터페이스를 사용.
  • Windows에서는 "Teaming", Linux에서는 "Bonding"이라고 부름.
  • 더 높은 네트워크 안정성과 성능 제공.

5. 로드 밸런싱(Load Balancing)

5.1 로드 밸런싱 개념

  • 이중화/다중화된 서버에 트래픽을 균등하게 분산하여 특정 서버에 과부하가 발생하는 것을 방지하는 기술.

5.2 로드 밸런서의 역할

  1. 클라이언트의 요청을 받아 서버로 전달.
  2. 서버의 부하를 균등하게 분산.
  3. 장애가 발생한 서버를 감지하고 트래픽을 차단 (헬스 체크).
  4. 부하 분산 알고리즘을 적용하여 최적의 서버 선택.

5.3 로드 밸런서 종류

  • 하드웨어 기반: L4/L7 스위치 (전용 장비)
    • L4 스위치: 전송 계층(TCP/UDP 포트 기반)에서 트래픽 분산
    • L7 스위치: 응용 계층(URI, HTTP 헤더 등)에서 트래픽 분산
  • 소프트웨어 기반: Nginx, HAProxy 등
    • 설정이 유연하며 저렴한 비용으로 운영 가능.

5.4 헬스 체크(Health Check) & 하트비트(Heartbeat)

  • 헬스 체크(Health Check):
    • 로드 밸런서가 서버의 정상 상태를 확인.
    • HTTP, ICMP Ping 등의 방법 사용.
  • 하트비트(Heartbeat):
    • 서버 간 상태 정보를 주기적으로 교환하여, 장애 발생 여부 확인.

6. 로드 밸런싱 알고리즘

로드 밸런서는 다양한 부하 분산 알고리즘을 사용하여 서버를 선택함.

알고리즘설명
라운드 로빈 (Round Robin)서버를 순서대로 선택하여 트래픽 분배
최소 연결 (Least Connection)현재 연결 수가 가장 적은 서버로 트래픽 전달
랜덤(Random)무작위로 서버 선택
최소 응답 시간 (Least Response Time)응답 속도가 가장 빠른 서버 선택
해시 기반 (IP Hash, URL Hash)특정 값(예: IP 주소)에 따라 특정 서버로 연결

6.1 가중치 기반 로드 밸런싱

  • 서버 성능에 따라 트래픽을 비례적으로 분배.
  • 가중치 라운드 로빈(Weighted Round Robin):
    • 성능이 더 좋은 서버에 더 많은 요청을 할당.

7. 결론

  • 네트워크의 안정성을 높이기 위해 가용성을 고려해야 함.
  • 이중화(Redundancy) 및 다중화(Multiplexing)를 통해 장애를 감내(Fault Tolerance)해야 함.
  • 로드 밸런싱(Load Balancing)을 활용하여 트래픽을 균등하게 분배하고 서버 부하를 최소화해야 함.

🚀 이제 네트워크 설계 시, 고가용성을 고려하여 효율적인 인프라를 구축해보자!

0개의 댓글