[혼자 공부하는 네트워크] 7-1 안정성을 위한 기술

술술·2024년 9월 20일
0

가용성

  • 안정성: 특정 기능을 언제든 균일한 성능으로 수행할 수 있는 특성
  • 가용성: 컴퓨터 시스템이 특정 기능을 실제로 수행할 수 있는 시간의 비율
    • 전체 사용 시간 중에서 정상적인 사용 시간을 의미
    • 업타임(uptime): 정상적인 사용 시간
    • 다운타임(downtime): 정상적인 사용이 불가능한 시간

  • 고가용성 = 가용성이 높다 = 수식의 결괏값이 크다 = 전체 사용 시간 중에서 대부분을 사용 가능하다
    • 일반적으로 안정적이라고 평가받는 시스템은 99.999% 이상을 목표로 함
  • 가용성을 높이려면 다운타임을 낮추어야 한다.
  • 서비스가 다운되는 원인
    • 과도한 트래픽
    • 예기치 못한 소프트웨어 상의 오류
    • 하드웨어 장애
    • 보안 공격이나 자연재해

  • 결함 감내(fault tolerance): 문제가 발생하더라도 기능할 수 있는 능력
    • 핵심은 문제가 발생하지 않도록 하는 것이 아니라, 문제가 발생하더라도 계속 기능할 수 있도록 설계하는 것




이중화

  • 무언가를 이중으로 두는 기술
  • 결함을 감내하여 가용성을 높이기 위한 가장 기본적이고 대표적인 방법 → 예비(백업)를 마련하는 방법
  • 단일 장애점(SPOF, Single Point Of Failure): 문제가 발생할 경우 시스템 전체가 중단될 수 있는 대상
  • 가용성을 높이기 위해 SPOF를 이중화하는 것이 좋다.


이중화 구성 방식

  • 액티브: 가동 상태
  • 스탠바이: 액티브의 백업으로서 대기하는 상태
  • 페일오버(failover): 액티브 시스템에 문제가 생겼을 경우 예비된 스탠바이 시스템으로 자동 전환되는 기능

  • 액티브/스탠바이(active-standby)
    • 한 시스템은 가동하고, 다른 시스템은 백업 용도로 대기 상태
    • 액티브 상태인 시스템에 문제가 발생할 경우 스탠바이 시스템이 자동으로 액티브 시스템을 대신하여 동작
    • 하나의 장비를 사용할 때에 비해 성능상의 큰 변화를 기대하기는 어렵다.
  • 액티브/액티브(active-active)
    • 두 시스템 모두를 가동 상태로 두는 구성 방식
    • 부하 분산, 성능상의 이점
    • 한 시스템에 문제가 발생하면 순간적으로 다른 시스템에 부하가 급증할 수 있어 추가적인 문제가 발생할 수 있음

  • 다중화: 무언가를 여러 개 두는 기술
    • 이중화 된 구성에 비해 더욱 안정적인 운영 가능
  • 이중화/다중화의 사례
    • 티밍(teaming)- 윈도우, 본딩(bonding) - 리눅스
    • 여러 개의 네트워크 인터페이스(NIC)를 이중화/다중화 하여 마치 더 뛰어나고 안정적인 성능을 보유한 하나의 인터페이스처럼 보이게 하는 기술
    • 티밍 시에 액티브/액티브로 구성할지, 액티브/스탠바이로 구성할지 선택할 수 있다.




로드 밸런싱

  • 고가용성을 요구하는 호스트는 클라이언트보다는 일반적으로 서버

  • 트래픽(traffic): 주어진 시점에 네트워크를 경유한 데이터의 양

    • 주어진 시점에 특정 노드를 경유한 패킷의 양
  • 서버에 과도한 트래픽이 몰리면 서버의 가용성 떨어뜨림

    • 높은 부하로 인해 CPU는 발열이 심해지고, 메모리 공간은 수많은 트래픽 내용을 저장하기에 부족해질 수 있다.
    • 제한된 대역폭과 병목 현상으로 인해 응답이 느려지거나 일부 요청에 대한 응답이 누락될 수 있다.
    • 프로그램의 일관성이 손상될 수도 있다.

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

    • 로드(부하) + 밸런싱(균형 유지)
    • 로드 밸런서(load balancer)에 의해 수행
    • 로드 밸런싱 기능을 제공하는 소프트웨어를 설치하면 일반 호스트도 로드 밸런서로 사용할 수 있음
    • 로드 밸런서는 이중화나 다중화 된 서버와 클라이언트 사이에 위치
    • 클라이언트들은 로드 밸런서에 요청을 보내고, 로드 밸런서는 해당 요청을 각 서버에 균등하게 분배
  • 헬스 체크(health check)

    • 다중화 된 서버 환경에서는 현재 문제가 있는 서버는 없는지, 현재 요청에 대해 올바른 응답을 할 수 있는 상태인지를 주기적으로 검사
  • 하트비트(heartbeat)

    • 서버끼리 주기적으로 하트비트 메시지를 주고받다가, 신호가 끊겼을 때 문제 발생을 감지하는 방법

  • 로드 밸런싱 알고리즘

    • 부하가 균등하게 분산되도록 부하 대상을 선택하는 방법
    • 라운드 로빈 알고리즘: 단순히 서버를 돌아가며 부하를 전달
    • 최소 연결 알고리즘: 연결이 적은 서버부터 우선적으로 부하를 전달
    • 때로는 단순히 무작위로 고르기도 하고, 해시라는 자료 구조를 이용하기도 하며, 응답 시간이 가장 짧은 서버를 선택
    • 라운드 로빈 알고리즘이나 최소 연결 알고리즘에서는 서버마다 가중치를 부여할 수도 있다.
      • 알고리즘에 따라 동작하되, 가중치가 높은 서버가 더 많이 선택되어 더 많은 부하를 받도록 하는 것
      • 가중치 라운드 로빈 알고리즘, 가중치 최소 연결 알고리즘
profile
Hello

0개의 댓글

관련 채용 정보