서버 수평확장 (Proxy Server, load balancer)

귀찮Lee·2022년 8월 9일
0

Deploy

목록 보기
4/4

◎ Proxy Server (프록시 서버)

  • Proxy Server (프록시 서버)

    • 클라이언트가 서버와 소통할 때, 서버에 바로 접근하지 않고 자신을 통해 서버에 접근할 수 있도록 해주는 일종의 대리 서버
    • 일반적으로 지역이 제한되어있는 서비스를 이용하기 위해 우회하거나, 캐시를 통해 더 빠른 이용을 하기 위해 사용
  • Forward Proxy

    • 클라이언트 가까이에 위치한 프록시 서버로 클라이언트를 대신해 서버에 요청을 전달
    • 캐싱을 제공하는 경우가 많아 사용자가 빠른 서비스 이용을 할 수 있도록 도와준다.
  • Forward Proxy 장점

    • 캐싱을 통해 빠른 서비스 이용 가능

      • 클라이언트가 동일한 요청을 보내는 경우, 첫 응답을 하며 결과 데이터를 캐시에 저장
      • 이후, 서버에 재요청을 보내지 않아도 다른 클라이언트에게 빠르게 전달 가능
    • 보안

      • 서버에서 프록시 서버에서 요청을 받으므로 프록시 서버의 IP로 요청이 서버에 전달됨
      • 서버에게 클라이언트의 IP를 숨길 수 있따.
  • Reverse Proxy

    • 서버 가까이에 위치한 프록시 서버로 서버를 대신해서 클라이언트에 응답을 제공
    • 분산처리를 목적으로 하거나 보안을 위해 프록시 서버를 이용 (ex. 로드밸런서)
  • Reverse Proxy 장점

    • 분산처리
      • 요청이 들어오면 여러대의 서버로 요청을 나누어 전달 후 처리
      • 사용자가 많아져 서버에 과부하가 올 경우를 위해 부하를 분산 가능
    • 보안
      • 응답 시에 프록시 서버에서 클라이언트에게 응답함
      • 클라이언트에게 실제 서버의 IP주소가 노출되지 않는다.

◎ 서버 과부하 처리 방법

  • Scale-Up

    • 물리적으로 서버의 사양을 높이는 하드웨어적인 방법
    • 장점 : 서버의 수를 늘리지 않고 프로그램 구현에 있어 변화가 필요없음
    • 단점 : 서버의 사양을 높이는데엔 굉장히 높은 비용이 들고, 하드웨어의 업그레이드엔 한계가 있음
  • Scale-Out

    • 서버의 갯수를 늘려 하나의 서버에 줄 부하를 분산시키는 방법
    • 장점 : 여러대의 서버가 나눠서 처리를 하기 때문에 서버의 사양을 높이지 않고도 비교적 저렴한 방법으로 부하를 처리함

◎ Load Balancer (로드 밸런서)

  • Scale-Out 방법으로 여러대의 서버로 부하를 처리하는 경우, 클라이언트로부터 온 요청들을 적당히 나누어 처리함

  • 로드 밸런싱 : 클라이언트로부터 온 요청들을 여러 서버로 나누어 처리하는 기술

  • 로드 밸런서의 종류

로드 밸런서의 종류로드 밸런싱의 기준
L2데이터 전송 계층에서 Mac 주소를 바탕으로 로드 밸런싱
L3네트워크 계층에서 IP 주소를 바탕으로 로드 밸런싱
L4 (주로 사용)전송 계층에서 IP주소와 Port를 바탕으로 로드 밸런싱
L7 (주로 사용)응용 계층에서 클라이언트의 요청을 바탕으로 로드 밸런싱
패킷의 내용을 확인하고 그 내용에 따라 로드를 특정 서버에 분배
특정한 패턴을 지닌 바이러스를 감지해 네트워크를 보호할 수 있으며, DoS/DDoS와 같은 비정상적인 트래픽을 필터링 가능
ex) 엔드포인트

◎ AWS Auto Scaling (오토스케일링)

  • Auto Scaling

    • Scale-Out 방식으로 서버를 증설할 때 자동으로 서버(리소스)를 관리해주는 기능
    • 처리 요구량 증가시 새 리소스를 자동으로 추가하고, 처리 요구량 감소시 리소스를 감소시켜 적절한 분산 환경 유지
  • Auto Scaling의 장점

    • 동적 스케일링

      • 요구 수준에 따라 리소스를 동적으로 스케일링 가능
      • 추가 할 수 있는 서버의 수에는 제한이 없음
    • 로드 밸런싱

      • 로드밸런서와 함께 사용하면, 다수의 EC2 인스턴스에게 워크로드를 효과적으로 분배
      • 사용자가 정의한 규칙에 따라 워크로드를 효과적으로 관리
    • 타겟 트래킹

      • 특정 타겟에 대해서만 Auto Scaling 할 수 있으며, 사용자가 설정한 타겟에 맞춰 EC2 인스턴스 수를 조정
    • 헬스 체크와 서버 플릿 관리

      • EC2 인스턴스의 헬스 체크 상태를 모니터링 가능, 특정 인스턴스의 문제가 감지되면 자동으로 다른 인스턴스로 교체 또는 서버 추가 실행
      • 서버 플릿 : 다수의 EC2 서버에서 애플리케이션을 호스팅 하는 경우, 이들 일련의 EC2 서버 집합

◎ Auto Scaling 관련 용어

  • 시작 템플릿(Launch Configuration)

    • 어떤 서버를 사용할지 결정하는 템플릿
    • AMI 상세 정보, 인스턴스 타입, 키 페어, 시큐리티 그룹 등 인스턴스에 대한 모든 정보를 담고 있음
    • 시작 템플릿을 생성하지 않으려는 경우에는 대신 시작 구성을 생성 가능
      • 용할 AMI의 ID, 인스턴스 유형, 키 페어, 보안 그룹 등의 정보를 포함시켜서 시작 구성을 생성
  • Auto Scaling 그룹

    • 스케일업 및 스케인 다운 규칙의 모음
    • EC2 인스턴스 시작부터 삭제까지의 모든 동작에 대한 규칙과 정책을 담고 있음
  • Scaling 유형

    • 인스턴스 레벨 유지 (기본 스케일링 계획)
      • 항상 실행 상태를 유지하고자 하는 인스턴스의 수를 지정
      • 최소, 최대 및 원하는 용량에 동일한 값을 설정
    • 수동 스케일링 (비추천)
      • 기존 Auto Scaling 그룹의 크기를 수동으로 변경
      • 사용자가 직접 콘솔이나, API, CLI 등을 이용해 수동으로 인스턴스를 추가 또는 삭제
    • 일정별 스케일링
      • 예측 스케일링트래픽의 변화를 예측할 수 있고, 특정 시간대에 어느 정도의 트래픽이 증가하는지 예측 가능할 깨 사용
      • 특정 시간대에 서버를 증설하고 감소 할 수 있다.
    • 동적 스케일링
      • 수요 변화에 대응하여 Auto Scaling 그룹의 용량을 조정
      • CloudWatch가 모니터링 하는 지표를 추적하여 경보 상태일 때 수행할 스케일링 규칙을 정함

◎ 기타 자료

  • 일반적인 기업 네트워크 환경(Reverse Proxy 관련)
    • 외부망과 내부망을 분리하는 DMZ Web Server가 존재
      • 외부망으로 서비스를 제공하는 서버를 배치함
      • Web Server, Mail Server, DNS Server
    • 내부망에는 WAS를 배치
    • Web Server가 해킹 당해도 2차 방화벽을 다시 뚫어야 하므로 보안이 강해짐

◎ 관련 자료

profile
배운 것은 기록하자! / 오류 지적은 언제나 환영!

0개의 댓글