본문 바로가기
네트워크

[네트워크] 프록시와 안정적인 트래픽

by Bokoo14 2025. 2. 16.

오리진 서버와 중간 서버: 포워드 프록시와 리버스 프록시

  • 오리진 서버(origin server): 자원을 생성하고 클라이언트에게 권한이 있는 응답을 보낼 수 있는 HTTP 서버
  • 클라이언트와 오리진 서버 사이에는 많은 중간 서버가 있을 수 있다
  • 가용성(availablity): 서버, 네트워크, 특정 하드웨어 부품을 비롯한 특정 컴퓨터 시스템이 주어진 기능을 실제로 수행할 수 있는 시간의 비율
  • 고가용성(HA, high availability): 주어진 기능을 문제없이 수행하는 시간이 비율이 높을때

HTTP 중간 서버는 프록시와 게이트웨이가 있다

프록시 (proxy)

클라이언트가 선택한 메시지 전달 대리자

주로 캐시 저장, 클라이언트 암호화 및 접근 제한 등의 기능 제공

클라이언트가 어떤 프록시를 언제, 어떻게 사용할지 선택하기 때문에 프록시는 일반적으로 오리진 서버보타 클라이언트와 더 가까이 위치

 

게이트웨이 (gateway)

서버(들)을 향하는 요청 메시지를 먼저 받아서 오리진 서버(들)에게 전달

게이트웨이에 캐시 저장

부하를 분산하는 로드 밸런서로 동작


고가용성: 로드 밸런싱과 스케줄링

  • 가용성: 주어진 특정 기능을 실제로 수행할 수 있는 시간의 비율
    • 가용성 = (업타임) / (업타임+다운타임)
  • 업타입(uptime): 정상적인 사용 시간
  • 다운타임(downtime): 정상적인 사용이 불가능한 시간
    • 발생 원인: 과도한 트래픽으로 인한 서비스 다운, 예기치 못한 소프트웨어 상의 오류 또는 하드웨어 장애, 보안 공격, 자연재해
  • 문제가 발생하더라도 계속 기능할 수 있도록 설계하는 것이 중요
  • 결함 감내(fault tolerance): 문제가 발생하더라도 기능할 수 있는 능력
  • 서버 다중화를 통해 특정 서버에 문제가 발생하더라도 다른 예비 서버가 이를 대신해 동작할 수 있음
  • 페일오버(failover): 동작하는 시스템에 문제가 생겼을 때 예비된 시스템으로 자동 전환되는 기능

로드 밸런싱

서버의 가용성에 가장 큰 영향을 끼치는 요소: 감당하기 어려울 정도의 트래픽

서버를 다중화하더라도, 특정 서버에만 트래픽이 몰리면 가용성이 떨어질 수 있다

  • 로드밸런싱(load balancing): 하나 이상의 서버가 트래픽을 고르게 분배하기 위해 사용하는 기술
  • 로드밸런서(load balancer): 다중화된 서버와 클라이언트 사이에 위치하여 클라이언트의 요청들을 각 서버에 균등하게 분배하는 역할
    • 대표적 로드 밸런싱 소프트웨어: HAProxy, Envoy
    • 웹 서버 소프트웨어인 Nginx에도 로드 밸런싱 기능이 내장되어 있음
  • 로드 밸런싱 알고리즘: 부하가 균등하게 분산되도록 요청을 전달할 서버를 선택하는 방법
    • 라운드 로빈 알고리즘: 서버를 돌아가며 부하 전달
    • 최소 연결 알고리즘: 연결이 적은 서버부터 우선적으로 부하 전달
  • 더 좋은 서버에 더 많은 트래픽을 분배하는 것이 합리적
    • 이를 반영해 가중치 부여
    • 각각의 알고리즘을 바탕으로 동작하되, 가중치가 높은 서버가 더 많이 선택되어 더 많은 부하를 받도록 함

스케일링: 스케일 업, 스테일 아웃, 오토 스케일링

  • 스케일 업(scale-up): 기존 부붐을 더 나은 사양으로 교체
    • 수직적 확장(vertical scailing)
    • 설치와 구성이 단순하다
    • 장비가 하나밖에 존재하지 않느다면 해당 장비에 부하가 집중되거나 병목이 생길 수 있다
  • 스케일 아웃(scale-out): 기존 부품을 여러 개로 두는 방법
    • 수평적 확장(horizontal scailing)
    • 유연한 확장 및 축소가 가능하다
    • 결함을 감내하기 용이
    • 장비 중 하나가 고장나더라도 다른 장비가 고장난 장비의 역할을 대신할 수 있다
  • 오토스케일링(autoscailing): 필요할 때마다 시스템을 동적으로 확장하고 축소
  • 업스트림(upstream): 상위 서버로 데이터를 보내는 방향
    • 업스트림 트래픽: 클라이언트에서 오리진 서버로 향하는 트래픽
  • 다운스트림(downstream): 상위 서버에서 클라이언트로 데이터를 보내는 방향
    • 오리진 서버가 응답 메시지를 생성해 클라이언트로 보낼 경우
  • 인바운드(inbound): 네트워크 외부에서 내부로 들어오는 트래픽
    • 외부 사용자가 내부 네트워크의 서버나 서비스에 접근하려는 요청
  • 아웃바운드(outbound): 내부 네트워크에서 외부로 나가는 트래픽
    • 내부 시스템이나 사용자들이 외부 서버나 서비스에 요청을 보내는 경우