알아볼 내용

  1. 가용성
  2. 이중화
  3. 로드 밸런싱

가용성 (Availability) : 컴퓨터 시스템이 특정 기능을 실제로 수행할 수 있는 시간의 비율

  • 안정성 : 특정 기능을 언제든 균일한 성능으로 수행할 수 있는 특성
  • 가용성은 안정성의 정도를 나타내는 용어로 다음과 같이 정의됨
    • uptime : 정상적인 사용 시간
    • downtime : 정상적인 사용이 불가능한 시간
  • 일반적으로 고가용성 (High Availability, HA), 즉 안정적이라고 평가받으려면 99.999% 이상이 목표
    • downtime이 1개월에 26.3초, 1년에 5.26분 정도
  • downtime의 원인
    • 과도한 트래픽으로 인한 서비스 다운
    • 예기지 못한 SW 오류, HW 장애
    • 보안 공격
    • 자연재해 등…
  • 문제가 발생하더라도 계속 기능할 수 있는 능력인 ‘결함 감내 (fault tolerance)‘를 키워야 함

이중화 (Network Duplication) : 결함 감내를 통해 가용성을 높이기 위해 예비를 마련하는 방법

  • 문제가 발생할 경우 시스템 전체가 중단될 수 있는 대상, 즉 단일 장애점 (Single Point Of Failure, SPOF) 을 이중화
    • 다중화 : 이중화의 일반화된 개념
  • 이중화 구성 방식
    • 액티브/스탠바이 : 한 시스템은 가동, 한 시스템은 백업으로 대기
      • 액티브 시스템에 문제 생기면 failover를 통해 스탠바이 시스템이 동작
      • 안전한 방식이지만 성능상 큰 변화는 없음
    • 액티브/액티브 : 두 시스템 모두를 가동
      • 부하 분산 및 성능상 이점 누릴 수 있음
      • 한 시스템에 문제 발생하면 다른 시스템에 부하 급증에 문제 생길 수 있음
  • 이중화/다중화 사례 : 티밍 (teaming)과 본딩 (bonding)
    • 여러 개의 NIC를 이중화/다중화하여 더 뛰어나고 성능 안정적인 하나의 인터페이스처럼 보이게 하는 기술
    • 티밍은 주로 윈도우, 본딩은 주로 리눅스에서 사용하는 용어

로드 밸런싱 : 트래픽의 고른 분배를 위해 사용되는 기술

  • 일반적으로 서버에서 고가용성이 중요한데 트래픽을 어떻게 분배해야할지는 또 다른 문제
  • 로드 밸런서에 의해 수행
    • ‘L4 스위치’, ‘L7 스위치’ 같은 네트워크 장비로도 수행 가능
    • 로드 밸런싱 기능을 제공하는 소프트웨어 (HAProxy, Envoy, Nginx) 설치하면 일반 호스트도 사용 가능

L4 스위치, L7 스위치

L4 스위치 : OSI 7계층의 전송 계층(L4, Transport Layer)에서 작동하는 스위치

  • IP 주소 및 포트 번호(소스 및 목적지)를 기반으로 패킷 전달 결정
  • TCP/UDP 헤더 정보 사용하여 부하 분산 및 트래픽 관리
  • 빠른 처리 속도 및 높은 성능 보장
  • 네트워크 부하 분산 및 서버 이중화 역할 수행

대표 프로토콜 : TCP, UDP
주요 기능 : 로드 밸런싱, 세션 관리, 연결 유지


L7 스위치 : OSI 7계층의 응용 계층(L7, Application Layer)에서 작동하는 스위치

  • 패킷 내의 응용 계층 데이터를 분석하여 정밀한 라우팅 및 전달 결정
  • HTTP/HTTPS 프로토콜 분석 및 콘텐츠 기반 라우팅 가능
  • 세부적인 정책 적용 (URL 필터링, 보안 검사 등)
  • SSL 종료 및 관리 수행 가능
  • 지능적이고 유연한 트래픽 관리 가능하지만 상대적으로 성능 저하 발생 가능

대표 프로토콜 : HTTP, HTTPS, FTP, SMTP
주요 기능 : 콘텐츠 기반 로드 밸런싱, 보안 검사, URL 기반 라우팅

  • 일반적으로 이중화나 다중화된 서버와 클라이언트 사이에 위치
  • 로드 밸런싱 알고리즘
    • 라운드 로빈 : 서버를 돌아가며 부하 전달
    • 최소 연결 : 연결이 적은 서버부터 우선적으로 부하 전달
    • 서버 간 성능이 다른 경우는 가중치를 고려한 가중치 라운드 로빈, 가중치 최소 연결 알고리즘을 활용

실제로 클라이언트와 서버 사이에는 수많은 서버 존재

  • 오리진 서버 : 최종적으로 클라이언트와 메시지를 주고 받는 대상, 즉 자원을 생성하고 클라이언트에게 권한 있는 응답을 보낼 수 있는 HTTP 서버
    • 인바운드 메시지 : 오리진 서버를 향하는 메시지
    • 아웃바운드 메시지 : 클라이언트를 향하는 메시지
  • 대표적인 HTTP 중간 서버 : 프록시 (포워드 프록시), 게이트웨이 (리버스 프록시)

프록시 (proxy) : 클라이언트가 선택한 메시지 전달 대리자

  • 클라이언트와 가까이 위치
  • 캐시 저장, 클라이언트 암호화 및 접근 제한 등의 기능 제공

게이트웨이 (gateway, 리버스-프록시) : 아웃바운드 연결에 대해 오리진 서버 역할을 하지만 수신된 요청을 변환하여 다른 인바운드 서버들로 전달하는 중개자

  • 네트워크 외부에서 보면 오리진 서버처럼 보이지만 요청을 보내면 다른 오리진 서버에게 요청 전달
  • 오리진 서버들에 더 가까이 위치
  • 캐시 저장, 로드 밸런서 역할