Post

AWS 인프라 구성 요소: EC2, EBS, ELB

AWS EC2 인스턴스의 구매 옵션, EBS 스토리지 유형, ELB 로드밸런서 분류와 특징

AWS 인프라 구성 요소: EC2, EBS, ELB

1. EC2

  • EC2(Elastic Compute Cloud)는 가상 서버로서 AWS에서 제공하는 다양한 애플리케이션을 돌릴 수 있다.
  • EC2는 가상 서버이기 때문에 디스크 용량뿐 아니라, CPU, 메모리 및 네트워크 등 다양한 설정이 있다.
  • EC2는 인스턴스가 실행되고 있을 때만 돈을 지불한다. 돈을 지불하는 방법은 온디맨드(on-demand), 리저브드(reserved), 스팟(spot) 세 가지로 나뉜다.

1-1. 온디맨드(on-demand)

  • 온디맨드 지불 방식은 시간당 정해진 금액을 지불하면서 사용하는 방식이다. (제일 짧은 시간은 60초)
  • 짧은 시간 동안 인스턴스를 임대하면서 사용하는 방식으로 주로 소프트웨어 검증 및 테스트 단계에서 많이 사용된다.
  • 온디맨드 지불 방식은 개발 기간이 비교적 짧으며, 개발이 끝나는 시간을 미리 알 수 없을 때 유용하다.

1-2. 리저브드(reserved)

  • EC2 인스턴스를 1~3년 정도 싸게 임대해서 사용할 수 있게 하는 지불 방식이다.
  • 선불로 비용을 부담하여 추가적으로 지정된 컴퓨팅 시스템을 사용할 수 있다.
  • 개발 중 요구 조건이 자주 변경되지 않고 개발의 시작과 끝을 미리 알고 있을 때 유용하다.
  • 리저브드의 단점은 온디맨드와 달리 인스턴스의 크기를 늘리거나 줄일 수 없다. 인스턴스를 처음 생성할 때 지정했던 크기 및 설정을 그대로 가지고 사용해야 한다.
  • 위 단점에도 불구하고 비용 측면에서 큰 장점을 가지고 있기 때문에 선호된다.

1-3. 스팟(spot)

  • 온디맨드, 리저브드와 달리 인스턴스 가격을 입찰하여 구매할 수 있다. 리저브드보다 할인율이 높으며 돈을 거의 들이지 않고 인스턴스를 구축할 수 있다.
  • 입찰가에 내놓은 금액과 맞아 떨어지면 인스턴스가 실행되고, 그렇지 않다면 인스턴스가 꺼진다.
  • 인스턴스의 시작과 끝이 중요하지 않은 곳에서 사용할 수 있다.

2. EBS(Elastic Block Store)

  • EBS는 파일 및 오브젝트를 보관할 수 있는 스토리지 볼륨이다. 이 스토리지는 EC2 인스턴스에 부착되어 사용된다.
  • EC2 인스턴스에 부착된 EBS 디스크 볼륨에 파일 시스템이 생성된다.
  • EC2 인스턴스가 종료되어도 EBS 안에 들어있는 데이터는 여전히 존재한다.
  • AWS는 리전(region)으로 리소스가 분리되어 있다. 그 리전 안에서 가용 영역으로 범위가 또 나뉜다.EBS는 가용 영역을 설정해줘야 한다.

2-1. EBS 타입

  • EBS 볼륨 타입은 SSD와 HDD 두 가지로 나뉜다.
  • SSD(Solid State Driver)
    • 빈번한 읽기/쓰기, 입출력의 비중이 매우 클 때 사용하면 좋은 타입
    • General Purpose SSD(gp2): 최대 10K IOPS 지원하며 1GB당 31IOPS의 속도가 나옴. 뛰어난 성능과 저렴한 비용 덕분에 보편적으로 널리 사용된다.
    • Provisioned IOPS SSD(io1): 극도의 I/O 처리를 요구하는 환경에서 사용된다. 10K 이상의 IOPS를 지원한다. gp2에 비해 훨씬 뛰어난 성능을 자랑하지만 비싼 비용 때문에 웬만해선 잘 사용하지 않는다.

       General Purpose SSDProvisioned IOPS SSD
      볼륨 타입gp2io1
      볼륨 크기1 GiB~16TiB4GiB~16TiB
      최대 IOPS1600064000
      장점상대적으로 저렴한 비용으로 다소 뛰어난 성능인스턴스에 여러 개의 EBS 부착할 수 있으며 최고의 성능
      단점인스턴스에 여러 개의 EBS를 부착할 수 없음가격이 비쌈
  • Magnetic/HDD
    • SSD는 IOPS가 주된 관심사였다면 HDD는 처리량(throughput)을 따져야 한다.
    • 방대한 스트리밍 워크로드를 신경 써야 한다면 HDD가 탁월한 선택.
    • Throughput Optimized HDD(st1): 빅데이터 데이터 웨어하우스, 로그 프로세싱처럼 실시간으로 대용량의 데이터를 처리할 때 주로 사용된다. 부트 볼륨(Boot Volume)으로 사용할 수 없는 것이 치명적인 단점이다.
    • CDD HDD(sc1): 파일 서버처럼 Input/Output이 매우 드문 경우 사용된다. st1과 마찬가지로 부트 볼륨으로 사용할 수 없으나 가격이 매우 저렴한 것이 장점이다.
    • Magnetic(Standard): 디스크 용량(1GB)당 가장 싼 비용으로 사용할 수 있다. st1, sc1과는 달리 HDD군에서 부트 볼륨으로 사용할 수 있다.

       Throughput Optimized HDDCDD HDDMagnetic
      볼륨 타입st1sc1Standard
      볼륨 크기125GiB~16TiB125GiB~16TiB1GiB~1TiB
      최대 IOPS50025040~200
      최대 처리량500MiB/s250MiB/s40~90MiB/s

3. ELB(Elastic Load Balancer)

  • ELB는 서버의 트래픽에 따라 흐름을 재분배한다.
  • 병목 현상을 방지하고 서버의 원활한 작동 및 빠른 속도를 유지할 수 있게 해준다.

3-1. ALB(Application Load Balancer)

  • OSI 7 layer 중 Application layer에서 작동한다.
  • HTTP, HTTPS와 같은 네트워크 트래픽을 제어할 때 적합하다. ALB가 네트워크 요청을 받게 되면 EC2 인스턴스에 지정된 역할에 근거하여 데이터의 흐름을 관리한다.
  • ALB는 인스턴스에 서버 흐름을 디폴트로 배분하는 대신 개발자가 직접 개입하여 서버 흐름을 설정할 수 있도록 하는 라우팅 커스터마이징 기능을 제공하여 원하는 서버로 직접 라우팅할 수 있다.

3-2. NLB(Network Load Balancer)

  • OSI 7 layer 중 Transport layer에서 작동한다.
  • Transport Layer는 TCP/IP 모델을 포함하고 있으며 안정적으로 호스트에 메시지를 전달하는 기능을 수행한다.
  • TCP 트래픽을 관리하기 때문에 초당 수백만 개 혹은 그 이상의 요청이 들어올 수 있으며, NLB는 극도의 퍼포먼스를 자랑하며 미세한 지연으로 엄청난 요청들을 처리할 때 유용하다.
  • 주로 개발 환경이 아닌 프로덕션 환경에서 방대한 데이터를 처리할 때 유용하다.

3-3. CLB(Classic Load Balancer)

  • ALB, NLB보다 성능이 뒤쳐지고, 거의 사용되지 않는 레거시이다.
  • ALB에서 제공하는 레이어 7의 HTTP/HTTPS 라우팅 기능, NLB에서 제공하는 TCP 트래픽 요청 라우팅 기능은 모두 CLB로 처리가 가능하다.
  • 하지만 CLB는 요청과 네트워크 연결에 근거하여 서버 트래픽을 제어할 수 있으나 네트워크 호스트가 누구인지 알 수 없다. 안전한 연결을 해도 되는지 아닌지에 대한 판단을 할 수 없다.

3-4. ELB에서 흔히 발생하는 에러

  • ELB를 사용할 때 발생하는 가장 대표적인 에러는 애플리케이션이나 서버에서 특정 시간 내에 응답을 받지 못할 경우 생기는 Load Balancer Error: 504 ERRORㅇㅣ다.
  • 로드 밸런서에는 최대 접속 시간 제한(idle time-out) 설정이 있다. 디폴트는 60초로 지정되어 있으며 로드 밸런서가 60초 동안 아무런 데이터도 전달받지 못할 경우 연결을 자동으로 종료하고 타임아웃 에러를 생성한다.
  • 위 에러가 발생할 시에는 로드 밸런서가 기다려줄 수 있는 시간을 늘리거나, 애플리케이션을 수정해서 서버로 전송되는 데이터의 양을 조절하거나 서버에서의 응답 시간을 최적화해야 한다.

4. X-Forwarded-For 헤더

  • X-Forwarded-For 헤더는 HTTP/HTTPS 요청을 로드 밸런서에서 받을 때 출처에 대한 정보를 담고 있다.
  • 로드 밸런서는 private IP address에 대한 정보를 최종적으로 EC2 인스턴스에 보낸다.
  • EC2 인스턴스는 private IP address밖에 알 수 없고 기존 public IP address 정보는 알 수 없다.
  • 기존 public IP address 정보를 알기 위해서는 X-Forwarded-For 헤더를 통해 기존 public IP address를 찾을 수 있다.
This post is licensed under CC BY 4.0 by the author.